###############################################################################
# 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 zot_entry_setup(e)
    e.kfeat("O = enter_zot")
    e.mons("patrolling base draconian")
    e.mons("fire dragon / ice dragon / storm dragon / \
            shadow dragon / bone dragon / golden dragon")
    e.mons("patrolling nonbase draconian")
    e.kmons("0 = ettin / yaktaur captain / glowing shapeshifter w:5 / \
                 stone giant / spriggan berserker / hell knight w:5")
    e.kmons("9 = fire giant w:12 / titan w:8 / vampire knight / \
                 spriggan air mage w:8 / deep troll earth mage w:8 / \
                 tengu reaver / deep elf high priest w:12 / lich w:2")
end

function minmay_elemental_octagon_setup(e)
    e.tags('uniq_elemental_octagon no_pool_fixup')
    e.subst('A : xcvb m:5 .:5')
    e.subst('B : .:50 c:20 vbm')
    e.subst('C : .xcvbmGTdE')
    e.subst('D : .xcvbmGTd1')
    e.subst('E : .:60 cvbmGT')
    e.nsubst('1 = 4:1 / 4 = 1.. / *:.')
    e.nsubst('d = 1:2 / *:d')
end
}}

{{
function init_protected_by_tso(e)
  e.tags('uniq_protected_by_tso')
  e.colour('- : yellow')
  e.lua_marker('!', message_at_spot("You almost think you hear a voice: \"Seek not undue power, mortal.\"", "warning"))
  e.subst('- : +')
end

function grunt_megastairs_setup(e)
  e.orient("float")
  e.tags("extra luniq_grunt_megastairs transparent ruin_lair")
  e.depth("Lair, Depths, Crypt, Elf, Snake, Zot, Dis, Geh, Coc, Tar")
  e.nsubst("0 = 2:0 / 2:0. / *:.")
  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("Dis") then
    e.subst("x = v")
  elseif 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("Depths") or you.in_branch("Lair") or
     you.in_branch("Snake") or you.in_branch("Elf") then
    e.subst("G : GGGGTTVt")
  else
    e.subst("G : GGGGTTV")
  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.
#
###############################################################################

NAME:   firewood_loft
TAGS:   extra
DEPTH:  D, !D:$, Depths, !Depths:$
ORIENT: float
WEIGHT: 5
: if you.absdepth() > 8 then
KITEM:  " = club, quarterstaff, quarterstaff good_item
: else
KITEM:  " = club, quarterstaff, quarterstaff
: end
KITEM:  ' = club, any magical staff
MAP
xxxxx
x"']x
xxxxx
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
MAP
ccccccccccccc
cG...GcG...Gc
c.....c.....c
c.....+..)..c
c.....c.....c
cG...GcG...Gc
ccc+ccccnnncc
cG...Gc.....
c.....c.....
c.....+.....
c.....c.....
cG...Gc.....
ccccccc
ENDMAP

NAME:    minmay_staircase_statues
TAGS:    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
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
ORIENT: centre
TAGS:   no_pool_fixup extra decor
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
DEPTH:  D, Lair, !Lair:$
ORIENT: float
FTILE:  - = floor_pebble_lightgray
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

###############################################################################
#
# <<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
DEPTH:  D:10-
ORIENT: float
WEIGHT: 5
KMONS:  " = earth elemental
KITEM:  " = any scroll / any potion
MAP
cccccccccc
c{......>c
c........c
c........c
c...""...c
c...""...c
c........c
c........c
c<......}c
cccccccccc
ENDMAP

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

##############################################################################
# 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 / Psyche
SUBST:  1 = 11., 3 = 3., 4 = 34, 5 = 35
# 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......xxxxxuuxxxx
   xxxzxxxx2xx...3...ccccxxux
   xxxzxxxx....3335..+$$cxuxx
   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-12
ORIENT:  float
KITEM:   ? = singing_sword, damaged short sword, \
             damaged long sword, damaged hand axe
KITEM:   ! = damaged executioner's axe, damaged short sword, \
             damaged long sword, damaged morningstar
KITEM:   + = damaged eveningstar, damaged short sword, \
             damaged long sword, damaged war axe
KITEM:   & = damaged mace / nothing
MONS:    fungus, plant
MONS:    adder, scorpion
MONS:    rat, river rat / hell rat
MONS:    bat
KFEAT:   w = web
SHUFFLE: ?!+
SUBST:   c:cccvvb , b=cc.
SUBST:   1 : 1112
SUBST:   1=1. , 2=2.... , 3=3. , 4=4. , 5=5. , 6=6.
SUBST:   ':.x''' , '=.x , .=......ww17
MAP
   xxxxxxxxxxxxxxxx
  xxx11'cccccccxxxx
 xxx'...c..?v3cx1xx
xx111.3.c&'.v3c14xx
x111'.......&&c4xxx
xxx3.11..1xxccc.44x
  xxx.1.1113x..'xxx
   xxx'&..11.'xxx
    x1xxx'..xxx
    xxx xx'.'xx
         xxx44xxxx
           xx'.44xx
            xxxx.'x
               xx@x
ENDMAP

##############################################################################
# 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-, 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
ORIENT:  float
DEPTH:   Depths, !Depths:$, Crypt
MONS:    zombie / nothing
MONS:    mummy, patrolling guardian mummy, patrolling royal mummy
MONS:    zombie
MONS:    mummy / nothing
SHUFFLE: 2F, cbv
SUBST:   F = G:99 F:1
KMONS:   F = orange crystal statue / obsidian statue
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx3$$xxxxxxxxxxxxx
ccxxxxxxxxccc+cccccccccxxxx
cccxxxxxxxc.....c...1$cxxxc
@Fcx6$.xxxc..1..c...25ccccc
cccccc+cccc.62..c...15c$$$c
@+111.....+.63..+..F11+4||c
cccccc+cccc.62..c...15c$$$c
@Fcx6$.xxxc..1..c...25ccccc
cccxxxxxxxc.....c...1$cxxxc
ccxxxxxxxxccc+cccccccccxxxx
xxxxxxxxxxx3$$xxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

#############################################################################
# Insect pit (Lemuel)
#
NAME:   lemuel_insect_pit
TAGS:   no_rotate
ORIENT: float
DEPTH:  D:5-12
SUBST:  1 = 1:70 2:60 3:25
MONS:   giant cockroach w:30 / butterfly w:20
MONS:   scorpion
MONS:   killer bee / scorpion / vampire mosquito w:5
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
DEPTH:  D:9-, Depths
ORIENT: float
TAGS:   no_pool_fixup patrolling
MONS:   yak, death yak
MONS:   troll, deep troll, iron troll
MONS:   deep troll earth mage, deep troll shaman
: if you.absdepth() > 21 then
SUBST:  3 = 4:30 5:5 6 7, 1 = 2
: else
SUBST:  3 = 3:50 4 5:5
: end
MAP
xxxxx...........................xxxxxx
xwwwx...........................xxxxxx
xwwwx.............1.............xxxxxx
xwwwx...........................xxxxxx
xwwwwwwwwwwwwwwwww.wwwwwwwwwww..xxxxxx
xxwwwwwwwwwwxxxxxw.wwwwwwwwwwwwwwwwxxx
xxwwwwwwwwwwx333xw.wxxxxxwwwwwwwwwwwxx
xxwwwwwwwwwwx*33+...+33*xwwwwwwwwwwwwx
xxxwwwwwwwwwxxxxxw.wx333xwwwwwwwwwwwwx
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
ORIENT: float
DEPTH:  D:7-
MONS:   black bear / polar bear
MONS:   wyvern / manticore w:3
MONS:   yak / dream sheep w:5 / death yak w:3
MONS:   hound / wolf w:5 / hog
SUBST:  1 = 1:30 2 3 4 .
MAP
cccccccccc
c.1.1.1.1c
c1.1.1.1.c
c.1.1.1.1c
c1.1.1.1.c
c.1.1.1.1c
cnn====nnc
..........
@........@
..........
xxxxxxxxxx
ENDMAP

##############################################################################
# Vampire Tower by Lemuel Pitkin
#
NAME:    lemuel_vampire_tower
TAGS:    no_monster_gen no_pool_fixup
DEPTH:   D:12-, Depths, !Depths:$, Crypt
ORIENT:  float
MONS:    rat / w:6 river rat / w:3 hell rat / w:20 bat
MONS:    wolf / spectral wolf w:2 / hell hound w:12 / raiju w:2
MONS:    flying skull, phantasmal warrior / jiangshi
MONS:    human zombie, frost giant zombie / fire giant zombie, vampire
KMONS:   8 = vampire mage
KMONS:   9 = vampire knight
KMONS:   0 = Jory, dancing weapon ; demon blade good_item
KITEM:   > = any good_item
KFEAT:   > = >
KFEAT:   ; = altar_yredelemnul / altar_kikubaaqudgha
SHUFFLE: defg
SUBST:   d = +, efg = x
NSUBST:  1 = 10:1 / 8 = 1. / *:.
: if you.absdepth() < 18 then
SUBST:   1 : 1:30 3, 2 = 3
: else
# Downward order required to cleanly upgrade the monster set.
SUBST:   3 = 4, 2 = 3, 1 : 2:30 3
SUBST:   9 = 0, 8 = 9, 7 = 89, 5 = 6
: end
SUBST:   w : ww...
MAP
x..wwwwwwwwwwwwwwwww..x
..wwwwwwwwwwwwwwwwwww..
.wWw111xxxx+xxxx111wWw.
www113xxx22522xxx311www
ww111xx.+25752+.xx111ww
ww13dx..ccccccc..xe31ww
ww1xx..ccc|>|ccc..xx1ww
wwxx..ccccc9ccccc..xxww
wwx..ccc55+7+55ccc..xww
wwx.ccccccc+ccccccc.xww
wwx.c***x.....ccccc7xww
wwx.c***+..8..ccccc.xww
wwx7cc**x7.;.7ccccc.xww
wwx..ccxx.....cccc..xww
wwxx..ccx..7..ccc..xxww
ww1xx..cc.....cc..xx1ww
ww13fx..ccc.ccc..xg31ww
ww111xx..cc+cc..xx111ww
www113xx..333..xx311www
.wWw111xxxxxxxxx111wWw.
..wwwwwwwwwwwwwwwwwww..
x..wwwwwwwwwwwwwwwww..x
ENDMAP

##############################################################################
# Swampy vault
#
NAME:    onia_ninara_swampy_vault
TAGS:    no_pool_fixup no_monster_gen
DEPTH:   Lair:4-, !Lair:$, Snake, !Snake:$, Depths, !Depths:$
ORIENT:  float
KMONS:   1 = tyrant leech / swamp worm w:50 / \
             vampire mosquito band / goliath frog / swamp drake w:15
KMONS:   23 = alligator / swamp dragon / hydra
KMONS:   45 = tentacled monstrosity / thorn hunter
KITEM:   3 = any good_item / any potion / gold
KITEM:   5 = superb_item / gold good_item / any potion q:4 w:20
KMONS:   P = plant
KFEAT:   1324P = W
NSUBST:  @ = 1:@ / *:X
SUBST:   x = w:30 x:4, X = x
SUBST:   ` = wx, ~ = w:9 x:2
SUBST:   " = .:2 x:1 W:4 P:1 w:3, - = .:9 W:2
: if you.absdepth() < 19 then
NSUBST:  W = 3:1 / 3 = 1W / *:W
NSUBST:  8 = 3:3 / 2 = 31 / * = 1W
: else
NSUBST:  W = 4:1 / 4:2 / 1 = 24 / 4 = 12 / *:W
NSUBST:  8 = 2:5 / 3:3 / * = 1W
: end
KPROP:   wP = no_tele_into
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
DEPTH:   D:10-13, Lair:1-, !Lair:$
ORIENT:  float
TAGS:    transparent no_pool_fixup
MONS:    frilled lizard, iguana, komodo dragon
MONS:    rime drake / swamp drake
MONS:    adder, water moccasin
SUBST:   4 = 34
SUBST:   3 = 3:20 2
SUBST:   2 = 2:20 1
SUBST:   1 = 1.
SHUFFLE: ab/cd
SUBST:   a = W, b = x, c = x, d = .
SHUFFLE: 123/566
SUBST:   X=x.
SUBST:   Y=xw
SUBST:   Z=xWw
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxXW**wwxxxxxxxxxxxxxxX**XXx
xZwWwwwZxxxxxxX33xxxxxX423Xx
xZWww232ZxxxxX121xxxxX.13Xxx
xZZWww2ZxxxxxX.1xxxxxw222Xxx
xxZZWwwWaaxxxxXWxxaaaw1121Xx
xxxZWww1XaaaaaWwaaaxZWw211Xx
xxxxZW23xxxxxaWwwxxxZww11XXx
xxxxZZ1XxxxxxxxWwwxxxxZ.Xxxx
xxxxxxX.XxxxXwWwwwxxx...Xxxx
xxxxxxx..Xxxx2xWwxxX..XXxxxx
xxxxxxxX.12111xw3X211bxxxxxx
xxxxxxxxxxXXXxxW2xxxxbbxxxxx
xxxxxxxxxxxxxxxw1Xxxxxbbxxxx
xxxxxxxxxxxxxYww1Xxxxxxbxxxx
xxxxxxxxxxxYwwww111@...Xxxxx
ENDMAP

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

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

##############################################################################
# Slaugherhouse (Zaba)
#
# Butchers have either knives (daggers) or hand axes. They have some chance
# of opening the doors so animals can go for a walk, that's intended.
#
NAME:   slaughterhouse
DEPTH:  Lair:5-, D:11-
TAGS:   no_monster_gen
ORIENT: float
WEIGHT: 5
# TODO: it looks like this fog machine is a little overzealous
MARKER: F = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 4, size_buildup_amnt = 4, \
                size_buildup_time = 25, cloud_type = "freezing vapour" \
            }
MONS:   death yak w:5 / dream sheep w:3 / yak w:7
MONS:   generate_awake human ; dagger | hand axe
SUBST:  F=d, 2=2.
# these corpses are in the freezer, so never_decay is appropriate. (Also, I
# couldn't get this item_spec to work with delayed_decay.)
ITEM:   never_decay yak corpse w:1 / nothing
KFEAT:  ~ = closed_clear_door
MAP
cccccc       ccccccc
cddddcxxxxxxxxcddddc
cdFdd+..+..+..+ddFdc
cddddcxxx..xxxcddddc
cccccc..x..x  cccccc
        x2.x
nnnnnn  x..x  nnnnnn
n1111nxxx..xxxn1111n
n1111~..+..+..~1111n
n1111nxxx..xxxn1111n
nnnnnn  x..x  nnnnnn
        x.2x
xxxxxx  x..x  xxxxxx
x...2xxxx..xxxx2...x
x..2.+..+..+..+.2..x
x...2xxxx..xxxx2...x
xxxxxx  x..x  xxxxxx
        x++x
         @.
ENDMAP

##############################################################################
# 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
: 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
: end
FTILE:  .t0@*12345 = floor_moss
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%..tttx
xtttttttttttttttttt.0...tttttttttt..ttttttt.5*..ttx
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.......20.ttttt..tttttttttxx
xttttttt....ttttttt....ttttttt..ttt..ttttttttttxx
xxxtttttttttttttttttttttttttttt....ttttttttttxxx
  xxxtttttttttttttttttttttttttttttttttttttxxxx
    xxxxxttttttttxxxxxxxxttttttttttttttxxxx
        xxxxxxxxxx      xxxxxxxxxxxxxxxx
ENDMAP

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

NAME:    abrahamwl_protected_by_tso_1
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup
ORIENT:  float
WEIGHT:  4
DEPTH:   Depths
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
: init_protected_by_tso(_G)
MAP
         xxxxx
   xxxxxxxcccxxxxxxx
   xccccccc1cccccccx
   xc|...-...-...|cx
   xcccccc...ccccccx
   xxxxxcc...ccxxxxx
     xxxcG...Gcxxx
    xxxxcc...ccxxxx
    xccccc...cccccx
    xcxxxx---xxxxcx
    xc...........cx
    xc...........cx
    xc..G.....G..cx
    xc...........cx
    xc.....1.....cx
    xc...........cx
    xc..G.....G..cx
    xc...........cx
    xc...........cx
    xcccccc-ccccccx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

NAME:    abrahamwl_protected_by_tso_2
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup
WEIGHT:  4
DEPTH:   Depths
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:   A = altar_the_shining_one
KITEM:   A = w:1 any weapon ego:holy_wrath / nothing
: if crawl.one_chance_in(3) then
SUBST:   | = .
SUBST:   % = |
SUBST:   ? = +
: else
SUBST:   % = c
SUBST:   ? = c
: end
COLOUR:  _ : yellow
FTILE:   _A : floor_limestone
SUBST:   T = T G:1
: init_protected_by_tso(_G)
MAP
    xxxxxxxxxxxxxxx
  xxxcccccccccccccxxx
  xccc_____A_____cccx
  xc%?Wwwww_wwwwW+|cx
  xcccxWwww_wwwWxcccx
  xxxcxxWWw_wWWxxcxxx
   xccxxxx._.xxxxccx
   xxcxxxx---xxxxcxx
    xc...........cx
    xc...........cx
    xc..G.....G..cx
    xc...........cx
    xc.....1.....cx
    xc...........cx
    xc..G.....G..cx
    xc...........cx
    xc...........cx
    xcccccc-ccccccx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

NAME:    abrahamwl_protected_by_tso_3
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup
TAGS:    uniq_protected_by_tso
WEIGHT:  4
DEPTH:   Depths
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:   A = altar_the_shining_one
KITEM:   A = w:1 any weapon ego:holy_wrath / nothing
: if crawl.one_chance_in(3) then
SUBST:   | = .
SUBST:   % = |
SUBST:   ? = +
: else
SUBST:   % = c
SUBST:   ? = c
: end
COLOUR:  _ : yellow
FTILE:   _A : floor_limestone
SUBST:   T = T F:1
: init_protected_by_tso(_G)
MAP
      xxxxxxxxxxx
     xxxxxcccxxxxx
    xxxxxxc|cxxxxxx
    xcccccc+ccccccx
   xxcWWWWTATWWWWcx
  xxxcW.._____..Wcx
  xcccWt..___..tWcx
  xc%?W...___...Wcx
  xcccWt..___..tWcx
  xxxcxxxx---xxxxcx
    xc...........cx
    xc...........cx
    xc..G.....G..cx
    xc...........cx
    xc.....1.....cx
    xc...........cx
    xc..G.....G..cx
    xc...........cx
    xc...........cx
    xcccccc-ccccccx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

NAME:   wander_protected_by_tso
TAGS:   no_monster_gen no_item_gen
DEPTH:  Depths, !Depths:$
WEIGHT: 4
ORIENT: float
MONS:   generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:  O = altar_the_shining_one
TILE:   G = dngn_statue_angel
COLOUR: _ : yellow
FTILE:  _|OU = floor_limestone
: init_protected_by_tso(_G)
MAP
    xxxxxxx
   xxcccccxx
   xcc.|.ccx
   xc.U_U.cx
   xc._O_.cx
   xc.U_U.cx
   xcc._.ccx
   xxc._.ccx
   xcG...Gcx
   xc.....cx
   xc.....cx
   xcG.1.Gcx
   xc.....cx
   xc.....cx
   xcG...Gcx
   xc.....cx
   xcc...ccx
   xxc---cxx
    xcc!ccxx
    xxx+xxx
    xx@@@xx
ENDMAP

##############################################################################
# Eyes! by Minmay
#
NAME:   minmay_eyes
DEPTH:  Depths
ORIENT: float
KFEAT:  m = iron_grate
MONS:   eye of devastation / great orb of eyes w:2
MONS:   golden eye
MONS:   glowing orange brain
MAP
...................................
.cccccccccccc.........cccccccccccc.
.c.............................m2c.
.c.1.............1.............mmc.
.c...............................c.
.c...cccccccccnnnnnnnccccccccc...c.
.c...c.......................c...c.
.c...c.1.........1.........1.c...c.
.c...c.......................c...c.
.c...c...ccccccnnnnncccccc...c...c.
.c...c...c...............c...c...c.
.c...c...c.1.....1.....1.c...c...c.
.c...c...c...............c...c...c.
.c...c...c...cccmmmccc...c...c...n.
.c...c...c...c3.....3c...c.......n.
.c...c...c...c..%.%..c...n.......n.
.c...c...c.....%|*|%.m...n.......n.
.c.1.c.1.c.1....*|*..m.1.n.1...1.n.
.c...c...c.....%|*|%.m...n.......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.............c...c...c.
.c...c...cccccc.....cccccc...c...c.
.c...c.......................c...c.
.c...c.1.........1.........mmc...c.
.c...c.....................m2c...c.
.c...ccccccccccccccccccccccccc...c.
.c...............................c.
.c.1.............1.............1.c.
.c...............................c.
.ccccccccccccccccccccccccccccccccc.
...................................
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 fire randart / ring of ice randart
ITEM:   staff of fire / staff of cold / staff of earth / staff of air
: master_elementalist_setup(_G, "D")
KFEAT:  a = iron_grate
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 = earth elemental / 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
# Depths
: else
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 }
# Within the rooms where these machines place, placing them only on deep water
# protects the monsters not immune to electricity from stepping there, since
# those monsters are neither giant nor fly. Outside of these rooms, the runed
# door keeps out monsters not immune to electricity are giant or fly.
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
cxx33x33xcccccwww55555c
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
ORIENT:  float
DEPTH:   D:11-, Snake
TAGS:    no_monster_gen no_rotate
MONS:    patrolling guardian serpent
SHUFFLE: yY/zZ
SUBST:   y=., Y=+, Z=x, z=b
COLOUR:  *. = lightgreen
SUBST:   ' = .
MAP
            xxxxxxxxxxxxxxx
            xxxxbbbbbbbbxxx'
            xxbbb..*...bbbx'
            xbb...bbbb...yY1
            xb..bbbbbbbbbbx@
            xb.bbxxxxxxxxxx'
            xb..bbbbxx
            xbb.*..bbx
            xxbbbb..bx
 xxxxxxxxxxxxxxxxbb.bx
'xbbbbxxxxxxxxxxxbb.bx
1Zz..bbbxxxxxxxbbb..bx
@xbb...bbbbbbbbb.*.bbx
'xxbbb...*.......bbbxx
 xxxxbbbbbbbbbbbbbxxxx
ENDMAP

##############################################################################
# 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
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
DEPTH:  D:9-, Depths
ORIENT: float
ITEM:   nothing
SUBST:  * = |**...
SUBST:  * : *$
SUBST:  L = ll.
KFEAT:  1 = escape_hatch_down
KMONS:  1 = molten gargoyle / hell hound / lindwurm / nothing w:20
MARKER: d = lua:fog_machine { cloud_type = "flame", \
             pow_min = 10, pow_max = 10, delay = 10, \
             size = 2, walk_dist = 0, spread_rate= 0 }
MAP
ccccc...ccccc
ccccc...ccccc
ccccc...ccccc
ccccc.d.ccccc
ccccc...ccccc
ccccc...ccccc
ccccc.d.ccccc
ccccc...ccccc
ccccc...ccccc
ccccc...ccccc
c...LLlLL...c
c..LLlllLL..c
c.LLll*llLL.c
cLLll***llLLc
cLll**1**llLc
cLlll***lllLc
cLLlll*lllLLc
c.LLlllllLL.c
c..LLlllLL..c
ccccccccccccc
ENDMAP

##############################################################################
# Firewalk (Lemuel)
#
NAME:    lemuel_firewalk_3
DEPTH:   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_vmirror no_pool_fixup
DEPTH:  Depths, Lair:2-, !Lair:$
ORIENT: float
  # we generate more dire elephants and deeper water at greater depths
: if you.in_branch("Lair") then
MONS:   elephant, dire elephant, spriggan
: else
MONS:   w:1 elephant / dire elephant, hellephant, spriggan defender
SUBST:  W : w
:end
MONS:   fungus, plant
SUBST:  % = .:5 %:3
: dgn.delayed_decay(_G, '%', 'w:1 elephant corpse / w:5 elephant skeleton')
SUBST:  . = .:69 1:1
SUBST:  P = 4
SUBST:  a = .4
SUBST:  b = 45
SUBST:  c = 5tt
MAP
............................
............................
............................
............................
........tttttttttttt........
......tttccccccccccttt......
.....ttcccbbbbbbbbccctt.....
....ttccbbbaaaaaabbbcctt....
....tccbbaaa2..3aaabbcct....
...ttcbbaa*..%%..*aabbctt...
..ttccbaa..%%%%%%..aabcctt..
..tccbba..%%%%%%%%..abbcct..
..tcbbaa.%%.PPP%%%%.aabbct..
..tcbaa..%%.PWPP%%%..aabct..
..tcba1.%%%11WPP%%%%..abct..
..tcba.%%%%11WWP%%%%%.abct..
..tcba.%%%%.WWWP%%%%%.abct..
..tcba..%%%.WWWP%%%%1.abct..
..tcbaa.1%%..WWP.%%..aabct..
..tcbbaa.%%%..WP.%%.aabbct..
..tccbba..%%%.WW....abbcct..
..ttccbaa......WW..aabcctt..
...ttcbbaa......W.aabbctt...
....tccbbaaaa..aaaabbcct....
....ttccbbbba..abbbbcctt....
.....ttccccca..accccctt.....
......tttttta..atttttt......
............................
............1..1............
............................
.............@@.............
ENDMAP

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

NAME:    hangedman_screamer
TAGS:    no_monster_gen
DEPTH:   D:9-, Depths, Crypt
ORIENT:  float
MONS:    patrolling flying skull
MONS:    zombie / skeleton
: if you.absdepth() > 19 then
MONS:    vampire knight / jiangshi / flayed ghost
MONS:    lich / revenant
KMONS:   5 = Boris / lich / revenant, lich / revenant
: elseif you.absdepth() > 13 then
MONS:    phantasmal warrior / skeletal warrior / eidolon
MONS:    vampire mage / death knight
KMONS:   5 = Frances / vampire mage / death knight, vampire mage / death knight
: else
MONS:    wight / wraith / shadow
MONS:    skeletal warrior / necromancer
KMONS:   5 = Josephine / skeletal warrior / necromancer, \
             skeletal warrior / necromancer
: end
SHUFFLE: Aa / Bb / Cc / Dd / Ee / Ff
SUBST:   5 = 5 3:2, 2 = 2 3:2, ABCD = ., abcd = @, EeFf = x
: if you.in_branch("Crypt") then
SUBST:   x = c
: end
MAP
   xxxxxxxxxxx
   xx2233322xx
xaaxx22x5x22xxccx
xAAx.x2x+x2x.xCCx
xAAxx.xx*xx.xxCCx
xAAxxx.x*x.xxxCCx
x...1...1.......x
x.......1...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
: if you.in_branch("Depths") then
MONS: tengu warrior ; longbow . arrow, stone giant / deep elf master archer
: else
MONS:   centaur, centaur warrior
: end
DEPTH:  D:6-, Depths
: if you.in_branch("D") then
SUBST:  1 = ..1
SUBST:  2 = 1
: end
KMONS:  ' = plant / nothing w:100
SUBST:  ' = W
KFEAT:  @ = W
MAP
@ww@wwwwwwww@
ww'ww''''''ww
w'ww'wwwwww'w
w'w'ww''''ww@
w'w'w'wwww'ww
w'w'w1.1'ww'w
w'w'w.2.w'w'w
w'ww'1.1w'w'w
ww'wwww'w'w'w
@ww''''ww'w'w
w'wwwwww'ww'w
ww''''''ww'ww
@wwwwwwww@ww@
ENDMAP

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

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

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

NAME:    hangedman_surveillance_ring
TAGS:    no_monster_gen no_item_gen transparent patrolling
ORIENT:  float
DEPTH:   Depths, !Depths:$
WEIGHT:  3
MONS:    generate_awake floating eye, eye of devastation, glowing orange brain
MONS:    generate_awake golden eye, slime creature, acid blob w:1 / nothing w:40
KFEAT:   > = shaft trap
KFEAT:   n = iron_grate
KMASK:   ' = !no_monster_gen
KMASK:   ' = !no_item_gen
SHUFFLE: {[(
SUBST:   ( = (:70 <, [ = [:50 <
MAP
  '''''''''''''''''
  ''''''ccccc''''''
''''ccccc.}.ccccc''''
'''cc%.c..4..c.%cc'''
''cc%..+.cnc.+..%cc''
''c%.3%cnc6cnc%3.%c''
''c..%cc.....cc%..c''
''cc+cc.......cc+cc''
'cc..c.........c..cc'
'n..+c....<....c+..n'
'n.1+2...[{(...2+1.n'
'n..+c....>....c+..n'
'cc..c.........c..cc'
''cc+cc.......cc+cc''
''c..*cc.....cc*..c''
''c*55*cnc.cnc*55*c''
''cc*54+.cnc.+45*cc''
'''cc*.+..2..+.*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
: else
KMONS:  4 = Mennas, angel god:Zin dbname:zin_angel
: 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:  !' = .
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''vvvv'''''vvvv''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$$$$vvvvvvvvvvv****v.v...
.....vvvvvvvvvvvvvvvvvvvvv.....
...............................
ENDMAP

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

NAME:    hangedman_six_sided_sadism
TAGS:    patrolling no_monster_gen no_item_gen
DEPTH:   Depths
ORIENT:  float
MONS:    deep elf archer w:15 / orc warlord w:7 / \
         deep elf pyromancer / deep elf zephyrmancer / deep troll / \
         hell hog w:5 / rakshasa / wizard / necromancer / \
         spriggan rider w:5 / vampire knight / nothing w:8
MONS:    orc high priest / naga warrior / nagaraja / \
         skeletal warrior / stone giant w:5 / wizard w:20 / \
         deep elf knight w:5 / deep elf archer w:5 / phantasmal warrior / \
         spriggan berserker / guardian serpent w:5 / caustic shrike w:1 / \
         salamander mystic / nothing w:4
MONS:    fire giant / frost giant / stone giant w:5 / ettin / \
         hell knight w:5 / orc warlord / minotaur / \
         vampire knight / vampire mage / ghoul w:5 / base draconian / \
         spriggan berserker w:3 / spriggan air mage w:4 / \
         deep troll earth mage w:4 / deep elf death mage w:2
MONS:    titan / lich / deep elf annihilator / deep elf sorcerer / \
         sphinx w:5 / nagaraja w:5 / mummy priest w:1 / \
         white draconian knight w:1
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 = %
: if you.absdepth() > 20 then
SUBST:   3 = 334, 2 = 223, 1 = 112
: else
SUBST:   4 = 3
: end
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:    caustic shrike w:1 / catoblepas / dire elephant / emperor scorpion / nothing w:3
MONS:    12-headed hydra / anaconda / ghost moth w:2 / wolf spider w:8 / harpy / moth of wrath
MONS:    spriggan druid, spriggan rider / spriggan defender / nothing
MONS:    sphinx / hell beast w:5 / caustic shrike w:5
ITEM:    gold / nothing w:80
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
SUBST:   X = xx., 1 = 1:29 .:1, t = t:99 1:1, u = t
SUBST:   . = .:2975 1:20 2:1 3:2 4:2, | = *||
TILE:    c = wall_marble
FTILE:   .Tt1234567Gcx+d*| = floor_lair
COLOUR:  c = white
COLOUR:  .1234567d*| = green
MAP
   ccccccccccccccccccccccccccccccccc
   ctttttttttttttttttttttttttttttttcc
   ctdd...""....""................2|c
cccct"5................1"........".7c
ctttt*"................".ww.."tttttcc
ctd"*G*..................ww..tcccccc.
ctd5"*7.........".t..........tC1111..
ct.....T...WWW."dt.........."tC11...
ct.........WWW.dt.1.....ttttttC...1.
ct.............t.11....tcCCCCCC.....
ct"......."dt..........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
ORIENT: float
DEPTH: Depths
TAGS: no_monster_gen
SHUFFLE: PFIEMONLSAKRVCTHD
KMONS: P = green death / green draconian / nagaraja w:5 / swamp dragon / \
           redback
KMONS: F = fire giant w:5 / fire dragon / fire elemental / red draconian / sun demon
KMONS: I = frost giant w:5 / ice dragon / blizzard demon / white draconian / \
           ice dragon
KMONS: E = titan w:5 / storm dragon / black draconian / ball lightning
KMONS: O = orc knight / orc sorcerer / orc warlord w:5 / orc high priest / \
           orc warrior
KMONS: N = deep elf knight w:5 / deep elf archer w:5 / \
           deep elf annihilator w:5 / deep elf death mage / \
           deep elf pyromancer / deep elf zephyrmancer / deep elf sorcerer
KMONS: L = black mamba / catoblepas w:5 / basilisk / lindwurm / boulder beetle
KMONS: S = swamp dragon / hydra w:5 / thorn hunter / large slime creature / \
           alligator
KMONS: A = alligator snapping turtle w:5 / merfolk avatar / merfolk aquamancer / \
           merfolk impaler / harpy
KMONS: K = nagaraja w:5 / naga mage / anaconda / naga warrior / \
           guardian serpent
KMONS: R = emperor scorpion / wolf spider / orb spider / ghost moth w:5 / \
           tarantella
KMONS: M = acid blob w:5 / azure jelly / slime creature w:15 / great orb of eyes
KMONS: V = vault guard / stone giant w:5 / yaktaur captain / dancing weapon / \
           skeletal warrior
KMONS: C = skeletal warrior / bone dragon / vampire / lich w:5
KMONS: T = mummy priest w:5 / guardian mummy / sphinx / mummy / reaper
KMONS: H = balrug w:5 / blizzard demon w:5 / shadow demon w:5 / \
           hell beast w:5 / sun demon / ice devil / rust devil / soul eater / \
           hell knight w:5
KMONS: D = frilled lizard / kobold / hobgoblin w:5 / goblin / adder
MAP
xxvvvvvvvvvvvvvxx
xvv..vvvvvvv..vvx
vv.II.vvvvv....vv
v..II.+...+.EEE.v
v..II.+...+.EEE.v
vv....vvvvv....vv
xvv++vv|||vv++vvx
xxv..v*****v..vxx
xxv..v%%%%%v..vxx
xvv++vv%%%vv++vvx
vv.FF.vv+vv....vv
v..FF..v.v..MM..v
v..FF..v.v..MM..v
vv....vv+vv.MM.vv
xvv++vv...vv++vvx
xxv..v.NNN.v..vxx
xxv..v.NNN.v..vxx
xvv++vv...vv++vvx
vv.PP.vv+vv....vv
v..PP..v.v..OO..v
v..PP..v.+..OO..v
vv....vvvvv.OO.vv
xvv..vvvvvvv..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, necromancer
MONS:    necromancer band / vampire mage band w:6
MONS:    vampire knight w:25 / bone dragon / ghoul / lich
SUBST:   x = e
: else
KMONS:   12 = deep elf pyromancer / deep elf zephyrmancer / deep elf knight / deep elf archer
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
      x.YYY3D...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...D3YYY.x
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")
     subst("* = .")
  elseif you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
     colour(".+123* = magenta")
     ftile(".+123* = floor_hall")
     kfeat("1 = enter_zot")
     kmons("1 = nonbase draconian")
     kmons("2 = base draconian")
     nsubst("3 = 4:2 / 2 = 2. / *:.")
     kmons("* = golden dragon / shadow dragon / storm dragon / bone dragon"
           .. " / 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")
  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....ccc.x.
  ...c..c........c.
  ...c..c+ccccc....
.....c..c.*.+.cc.....
@.G..c..c*1*c..c..G.@
.....cc.+.*.c..c.....
  ....ccccc+c..c...
  .c........c..c...
 .x.ccc....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

NAME:    grunt_bruiser_brothers
ORIENT:  centre
TAGS:    transparent no_monster_gen no_item_gen
DEPTH:   Depths, Geh, !Geh:$
PLACE:   Depths:$
WEIGHT:  5 (Depths:$, Geh), 10
MONS:    hell knight
: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
MONS:    yellow draconian, black draconian, ettin
NSUBST:  2 = 2:2 / 2:3 / 2:4 / * = 222334
: elseif you.in_branch("Depths") then
MONS:    deep troll
: else
# hell beast perm_ench:invis is too gimmicky.
# Fortunately, we have a permanently invisible 2 already.
MONS:    lorocyproca
: end
ITEM:    arbalest, bolt, potion of curing ident:type , potion of heal wounds ident:type
ITEM:    potion of invisibility ident:type
: if you.in_branch("Geh") then
SUBST: defgh = .
: end
KFEAT:   - = open_door
SHUFFLE: })]>
: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
KFEAT: } = enter_zot
KMONS: )]> = nonbase draconian w:30 / \
             shadow dragon / golden dragon / storm dragon
: end
MARKER:  O = lua:fog_machine { cloud_type = 'flame', pow_min=10, pow_max=10, \
                               delay=10, size=1, excl_rad=0 }
MAP
             cccc
             c})c
             c]>c
             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:   ragdoll_tomb_raider
TAGS:   no_item_gen no_monster_gen patrolling
DEPTH:  D:14-, Depths, Crypt, !Crypt:$
ORIENT: float
KITEM:  $ = amulet_of_vitality / any good_item
KITEM:  12345d = gold / any / nothing
KITEM:  67M = superb_item / any
KFEAT:  ~ = zot trap
KMONS:  1 = mummy
KMONS:  25 = guardian mummy
KMONS:  36 = mummy priest
KMONS:  47 = royal mummy
KMONS:  H = sphinx
: 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
: 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
SUBST:  C = c
NSUBST: ~ = 2:~ / 1:~. / *:.
COLOUR: G = yellow
TILE:   G = dngn_sarcophagus_sealed
COLOUR: c = yellow
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
DEPTH:    Depths, !Depths:$
ORIENT:   float
TAGS:     no_monster_gen patrolling no_pool_fixup
KMONS:    1 = deep elf archer w:20 / ettin / stone giant w:20 / spriggan berserker
KMONS:    2 = wizard / deep troll earth mage / spriggan air mage \
              / deep elf annihilator / deep troll earth mage / deep elf knight
KMONS:    3 = fire dragon / ice dragon / iron dragon / storm dragon
KMONS:    4 = tengu reaver / spriggan air mage / sphinx
KMONS:    5 = golden dragon / quicksilver dragon / storm dragon
KMONS:    6 = juggernaut / spark wasp band / caustic shrike
KMONS:    D = water elemental
KMONS:    F = orange crystal statue
KMONS:    K = water elemental / merfolk impaler / merfolk javelineer
KMONS:    M = ettin / stone giant / frost giant / fire giant
KMONS:    N = juggernaut
KMONS:    O = titan
KMONS:    P = the Enchantress band
# Place either a giant band headed by a titan or the Enchantress band, if the
# latter is available.
: if not you.uniques("the Enchantress") then
SHUFFLE:  MNO / kkP
: end
KMONS:    h = plant / fungus
# The loot items need KITEM and KFEAT to place in water
KITEM:    % = %
KITEM:    $ = $
KITEM:    * = *
KITEM:    6| = |
KFEAT:    h3456DHJK%$*| = W
KFEAT:    K = w
KFEAT:    t = mangrove
KPROP:    ~"DE = no_tele_into
SHUFFLE:  FH / IJ
SUBST:    i : ch, j : ch, ~' = hhhhW, -" = W, k = .
SUBST:    E = 5, I = G, J = 4, L = 54
NSUBST:   F = 1:F / G
COLOUR:   c = white
COLOUR:   .12MNOP = lightblue
COLOUR:   x = blue
TILE:     x = wall_pebble_cyan
FTILE:    .TUwWh123456DFHMNO|$*%$+xctG = floor_pebble_cyan
MAP
      ccccccccccccccccccccccccc
    cccttct1t.t.-Gx-Fx-Fx-tctTccc
   cc-...+....2.------H----+-wwwcc
  ccG-.1.+.t1t.t--Gx-Fx-Fx-+---wwcc
  ccc-.Gccciiccccccccccccccc----wwc
  ccGD.cc~""cccccUGUccccc''-3x---Kc
 cccc-.n~E"cccc--*6*--cccc'-t-t--wcc
 cT---.n""~ccc---$%$---ccc'--x4t-wwc
 ct1...c"~cccL---ccc---Lccc'-t-x--wc
 cccc++cD~ccc--cccGccc--ccc'--t3t-Kc
cctGt..c~~cc--cc*%$%*cc--cc''--x--wcc
c..1...c~ccc--ct-----tc--cccG-t-t-wTc
+.---..ntcU|$----MNM------++-5----llc
+.-U-.2nUcG6|----.O.--5---++---U--lGc
+.---..ntcU|$----MNM------++-5----llc
c..1...c~ccc--ct-----tc--cccG-t-t-wTc
cctGt..c~~cc--cc*%$%*cc--cc''--x--wcc
 cccc++cD~ccc--cccGccc--ccc'--t3t-Kc
 ct1...c"~cccL---ccc---Lccc'-t-x--wc
 cT---.n""~ccc---$%$---ccc'--x4t-wwc
 cccc-.n~E"cccc--*6*--cccc'-t-t--wcc
  ccGD.cc~""cccccUGUccccc''-3x---Kc
  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: wizard, ugly thing, very ugly thing
SUBST: y = * |:4, r = *:2 %
NSUBST: ' = 6:2 / *:.
NSUBST: " = 1:3 / *:.
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
DEPTH: Depths, !Depths:$
TAGS: no_item_gen no_monster_gen transparent
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 \
      | halberd ego:venom
MONS: reaper ; scythe ego:venom / w:8 green death \
      / ancient champion ; great mace ego:venom | battleaxe ego:venom \
      | glaive ego:venom
: end
KMONS: A = lich
KFEAT: A = stone_arch
KPROP: '? = no_tele_into
KMASK: '? = opaque
NSUBST: - = 4:| / 4:* / 4:% / *:.
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 }
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-.......-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.......+...c'?'c...+.......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_magma_flow
DEPTH: D:11-, !D:$, Lair:3-, !Lair:$
ORIENT: float
TAGS: no_item_gen no_monster_gen
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
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
DEPTH:   Depths, !Depths:$
ORIENT:  float
MONS:    necromancer ; \
         staff of fire w:15 | quarterstaff ego:flaming w:15 . \
         robe ego:fire_resistance w:14 | robe ego:cold_resistance w:15 | \
         robe ego:resistance w:1
MONS:    necromancer ; \
         staff of cold ident:type | quarterstaff ego:freezing ident:type . \
         robe ego:fire_resistance w:15 | robe ego:cold_resistance w:14 | \
         robe ego:resistance w:1
MONS:    fire giant ; battleaxe ego:freezing
MONS:    frost giant ; great sword ego:flaming
MONS:    ettin simulacrum, hell hog, deep elf pyromancer / deep elf zephyrmancer
KITEM:   d = triple crossbow ego:flaming ident:type, *
KITEM:   e = lajatang ego:freezing ident:type, *
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.depth() == dgn.br_depth(you.branch()) then
SUBST:   [(< = '
: end
MAP
 ......                              @{[
..bbbb..                             xxx
.bb51bb..
.+53dbfF''fF'
.bb57bb..   'fF'
..bbbb..       'fF@
 ......           'fF'           ......
                     @fF'       ..bbbb..
                        'fF'   ..bb76bb.
                           '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
DEPTH:  Depths, !Depths:$, Zot, !Zot:$
PLACE:  Depths:$
WEIGHT: 1 (Depths:$), 10
ORIENT: float
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 | \
                             trident ego:electrocution | flail ego:vorpal
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 ident:type
KMONS:  8 = tengu reaver ; battleaxe ego:flaming | great sword ego:freezing | \
                           halberd ego:electrocution | lajatang ego:vorpal . \
                           fire dragon scales | ice dragon scales
KMONS:  9 = red draconian / white draconian / black draconian
KMONS:  0 = red draconian monk / white draconian monk / black draconian monk
KMONS:  ! = orb of fire / electric golem / ice fiend / iron giant
KMONS:  & = ancient lich
KITEM:  $ = $ no_pickup
KFEAT:  ~ = .
KFEAT:  _ = altar_qazlal
KFEAT:  Z = enter_zot
SUBST:  A = 1 3:14, B = 2 4:14, C = 5:14 6
: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
SUBST:  } = Z, ])> = ., 1 = 9
NSUBST: ! = 2:8 / 2:9
: elseif you.in_branch("Zot") then
SUBST:  ) = ))>, ] = ]]>, 1 = 9, 4 = 0
NSUBST: ! = 1:6 / 1:0 / 1:! / 1:&
: else
SUBST:  )] = .
NSUBST: ! = 2:6 / 1:7 / 1:8
: 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~lnnn+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~lnnnnl~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 ; scythe ego:antimagic
MONS:    cherub, rakshasa, angel / daeva, balrug / blizzard demon
MONS:    caustic shrike, shadow dragon
KMONS:   8 = tengu reaver
KMONS:   9 = bone 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
#
# ident:type randarts here are a bit weird, showing the name and the brand
# only- off aesthetically, but aside from strange user autopickup functions
# should be fine otherwise.
#
NAME:   minmay_shoctagon
DEPTH:  D:12-, Depths:1-2, Elf
ORIENT: float
MONS:   raiju / sixfirhy w:2
KMONS:  2 = shock serpent / storm dragon
ITEM:   book of air / book of the sky / book of lighting / book of storms / \
        manual of air magic / staff of air ident:type / \
        lightning rod w:20 / storm dragon scales w:5
KITEM:  2 = arc_blade ident:type
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxB...Bxx
  xxB..E..Bxx
 xxB.......Bxx
xxB...AAA...Bxx
xB...11111...Bx
x...A1DdD1A...x
@.E.A1dCd1A.E.@
x...A1DdD1A...x
xB...11111...Bx
xxB...AAA...Bxx
 xxB.......Bxx
  xxB..E..Bxx
   xxB...Bxx
    xxx@xxx
ENDMAP

NAME:   minmay_roctagon
DEPTH:  D:12-, Depths:1-2, Elf
ORIENT: float
MONS:   two-headed ogre / troll
KMONS:  2 = stone giant / iron dragon
ITEM:   book of geomancy / book of the earth / book of stones / book of iron \
        manual of earth magic / staff of earth ident:type / \
        ring of protection ident:type / tin of tremorstones / \
        crystal plate armour w:5
KITEM:  2 = devastator
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxB...Bxx
  xxB..E..Bxx
 xxB.......Bxx
xxB.A.A.A.A.Bxx
xB...11111...Bx
x...A1DdD1A...x
@.E..1dCd1..E.@
x...A1DdD1A...x
xB...11111...Bx
xxB.A.A.A.A.Bxx
 xxB.......Bxx
  xxB..E..Bxx
   xxB...Bxx
    xxx@xxx
ENDMAP

NAME:   minmay_coctagon
DEPTH:  D:10-, Elf
ORIENT: float
MONS:   polar bear w:6 / rime drake / ice beast
KMONS:  2 = frost giant / ice dragon
ITEM:   book of frost / book of ice / book of winter / book of rime / \
        ozocubu's autobiography / book of the tundra / manual of ice magic / \
        wand of iceblast ident:type / staff of cold ident:type / \
        ring of ice ident:type / phial of floods / ice dragon scales w:5
KITEM:  2 = frostbite ident:all / \
            battleaxe ego:freezing randart ident:all / \
            broad axe ego:freezing randart ident:all
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxB...Bxx
  xxB..E..Bxx
 xxB.......Bxx
xxB..AA.AA..Bxx
xB..A11111A..Bx
x...A1DdD1A...x
@.E..1dCd1..E.@
x...A1DdD1A...x
xB..A11111A..Bx
xxB..AA.AA..Bxx
 xxB.......Bxx
  xxB..E..Bxx
   xxB...Bxx
    xxx@xxx
ENDMAP

NAME:   minmay_firetagon
DEPTH:  D:10-, Elf, Geh, !Geh:$
ORIENT: float
MONS:   fire bat
KMONS:  2 = fire giant / fire dragon
ITEM:   book of flames / book of fire / everburning encyclopedia / \
        manual of fire magic / staff of fire ident:type / \
        ring of fire ident:type / fire dragon scales w:5
KITEM:  2 = firestarter ident:type
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxB...Bxx
  xxB..E..Bxx
 xxB.......Bxx
xxB.AA...AA.Bxx
xB..A11111A..Bx
x....1DdD1....x
@.E..1dCd1..E.@
x....1DdD1....x
xB..A11111A..Bx
xxB.AA...AA.Bxx
 xxB.......Bxx
  xxB..E..Bxx
   xxB...Bxx
    xxx@xxx
ENDMAP

NAME:    minmay_guarded_unrand_majin_bo
ORIENT:  float
DEPTH:   Depths, Crypt
MONS:    necromancer / vampire mage
MONS:    lich w:40 / ancient lich / dread lich
ITEM:    majin-bo no_pickup ident:type
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 ident:type
KMONS:   d = royal mummy
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

NAME:    minmay_guarded_unrand_sword_of_power
ORIENT:  float
DEPTH:   D:13-
MONS:    vault guard
ITEM:    sword_of_power no_pickup
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
DEPTH:   D:12-, Depths:1-4
ORIENT:  float
ITEM:    glaive_of_the_guard no_pickup
SUBST:   b : bxcmG.T
NSUBST:  3:9 / 4=9. / ., 8 = 2:8 / 6=8.. / .
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
DEPTH: D:8-
TAGS: no_item_gen no_monster_gen no_pool_fixup
ORIENT: float
MONS: ice statue, ice devil, ufetubus
KPROP: 1-' = no_tele_into
NSUBST: ' = 5=*$ / *:%
NSUBST: - = 4:2 / 4:3 / 4=23 / *:.
MAP
        ...
       ..x..
  ......xxx......
  .xx..wwwww..xx.
  .xxxwwWWWwwxxx.
  ..xxWW---WWxx..
  ..wWW-----WWw..
 ..wwW-mm-mm-Www..
..xwW--m'''m--Wwx..
@xxwW---'1'---Wwxx@
..xwW--m'''m--Wwx..
 ..wwW-mm-mm-Www..
  ..wWW-----WWw..
  ..xxWW---WWxx..
  .xxxwwWWWwwxxx.
  .xx..wwwww..xx.
  ......xxx......
       ..x..
        ...
ENDMAP

NAME: cheibrodos_iron_armory
DEPTH: D:5-10
TAGS: no_item_gen no_monster_gen
ORIENT: float
MONS: rust devil, orc warrior
ITEM: scimitar / w:1 scimitar good_item, halberd / w:1 halberd good_item
ITEM: war axe / w:1 war axe good_item, morningstar / w:1 morningstar good_item
ITEM: plate armour / w:1 plate armour good_item
ITEM: chain mail / w:1 chain mail good_item
NSUBST: " = 1:h / 1:i
NSUBST: - = 1:d / 1:e / 1:f / 1:g
MAP
    .....
  ...vvv...
 ..nvvAvvn..
 .vvt1.1tvv.
..v-.....-v..
.vvv.....vvv.
.v"+.2G2.+"v.
.vvv.....vvv.
..v-.....-v..
 .vvt...tvv.
 ..nvv)vvn..
  ...vvv...
    .....
ENDMAP

NAME: cheibrodos_quashed
DEPTH: D:4-8
TAGS: no_item_gen no_monster_gen
ORIENT: float
MONS: quasit
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
DEPTH: D:7-
TAGS: no_item_gen no_monster_gen
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
DEPTH: D:5-10
TAGS: no_item_gen no_monster_gen no_pool_fixup
ORIENT: float
KMONS: 1 = electric eel
SUBST: ; = .W
NSUBST: - = 3:1 / w, _ = 3:1 / w, A = 3:% / 1:* / 2:. / W
NSUBST: B = 2:% / 1:* / 3:. / W, ` = 7:C / 4:. / W
KFEAT: C = W
KFEAT: 1 = w
KMONS: C = plant
MAP
  xxxxxxxxxx
 xx0..;WWWWxx
xx;xxxxxxxx;xx
xWxx..`BB_xx0x
xWx...``B__x.x
x;x....`BB_m.x
x.x+..``B__x;x
x..x..`BB_xxWxx
xx;xxxxxxxxxxWxx
 xWWxx..`AA-xxWx
 xxWx...``A--x;x
  x;x....`AA-m.x
  x.x+..``A--x.x
  x..x..`AA-xx+x
  xx9xxxxxxxx.@.
   xxx
ENDMAP

NAME: cheibrodos_hall_of_evolution
DEPTH: Depths
TAGS: no_item_gen no_monster_gen no_pool_fixup
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
DEPTH: D:12-, Depths
TAGS: no_item_gen no_monster_gen no_pool_fixup
ORIENT: float
: if you.in_branch("Depths") then
MONS: smoke demon / sun demon, balrug / w:2 nothing
MONS: ynoxinul , blizzard demon / w:2 nothing
: else
MONS: red devil ; trident, sun demon / w:5 smoke demon / w:3 nothing
MONS: ice devil, ynoxinul / w:2 nothing
: end
SHUFFLE: l2'/w4B
NSUBST: ' = 3:1 / 3=1. / *:., B = 3:3 / 3=3. / *:., - = 2=|* / 4:* / 6=$%
MAP
...................
.ccccc.......ccccc.
.c-c-ccccccccc-c-c.
.cc2c+c'''''c+c2cc.
.c-cnc'lllll.cnc-c.
.cc+c'll...l..c+cc.
..cc'll..l..l..cc..
..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..
..cc'll..l..ll'cc..
.cc+c'll...ll'c+cc.
.c-cnc'lllll'cnc-c.
.cc2c+c'''''c+c2cc.
.c-c-ccccccccc-c-c.
.ccccc.......ccccc.
...................
ENDMAP

NAME: cheibrodos_tormentor_scu
DEPTH: D:11-, Depths
TAGS: no_item_gen no_monster_gen
ORIENT: float
: if you.in_branch("Depths") then
MONS: tzitzimitl, hell knight / skeletal warrior / w:2 lich
: else
MONS: tormentor
MONS: death knight / w:5 wraith / w:1 freezing wraith / w:4 skeletal warrior
: 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
KPROP: 1 = no_tele_into
KFEAT: - = iron_grate
NSUBST: " = 2 = w:2 d | / 5:* / 5=%$.
NSUBST: ' = 3:* / 6:% / *:.
NSUBST: ` = 5:2 / 4=2.
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.-c-`````````...x
x.c-..............
x.................
xxxxxxxxxxxxxxx..@
ENDMAP

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

NAME: cheibrodos_grave_circle
DEPTH: D:7-11
TAGS: no_item_gen no_monster_gen
ORIENT: float
MONS: place:D:14 skeleton w:5 / place:D:14 zombie, shadow imp, hellwing
NSUBST: . = 5:1 / 3=1. / 3:2 / 2=2., " = 1:*% / 4=$%.
SUBST: . = .....--__tG
KMONS: t = withered plant
KFEAT: A = stone_arch
TILE: G = dngn_gravestone
FTILE: - = floor_pebble_brown
FTILE: _ = floor_pebble_darkgray
: set_feature_name("granite_statue", "a gravestone")
MAP
  ....@....
 ...........
.............
.............
.............
.....""3.....
@...."A"....@
.....3"".....
.............
.............
.............
 ...........
  ....@....
ENDMAP

NAME: cheibrodos_greedy_goblins
DEPTH: D:2-4
TAGS: no_item_gen no_monster_gen
ORIENT: float
MONS: goblin, hobgoblin
SUBST: - = 112..., " = 12., ' = 12.
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
DEPTH: D:3-6
TAGS: no_item_gen no_monster_gen
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:2-8
ORIENT: float
: if you.absdepth() > 4 then
MONS: kobold / kobold brigand w:6, endoplasm / jelly, slime creature
: else
MONS: kobold, endoplasm, jelly
: end
{{
dgn.delayed_decay(_G, 'd', 'goblin skeleton / hobgoblin skeleton ' ..
                           '/ rat skeleton / bat skeleton')
dgn.delayed_decay_extra(_G, 'e', 'human skeleton', 'star_item')
}}
KMONS: A = fungus / toadstool
KMONS: B = fungus / toadstool
KMONS: C = fungus / toadstool
KMONS: D = fungus / toadstool
KFEAT: ` = floor
FTILE: `ABCDd = floor_mud
COLOUR: `ABCDd = brown
NSUBST: ' = 4:1 / 4=1. / 1:% / 2=%.
NSUBST: " = 6:2 / 4=2' / 1:3 / 1=33` / 1=3` / 2:d / 3=d` / *:`
NSUBST: A = 2=dAA` / 1:`, B = 2=dAA. / 1:`, C = 2=dAA` / 1:`, D = 2=dAA` / 1:`
MAP
        xxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxx
 xxxxxxxxxxxx""""""xx
 xxx''''''xx+AAAAAAxx
.xx'''''''x1x""""""xx
.+.'''''''x.xBBBBBBxx
@+.'''''''x.x""""""xx
.+.'''''x+x.xCCCCCCxx
.xx'''''x.x.x""""""xx
 xxx''''x.x.xDDDDDDxx
 xxxxxxxxx.xx"""""exx
  xxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxx
ENDMAP

NAME: cheibrodos_monumental
TAGS: no_item_gen no_monster_gen
DEPTH: D:12-
ORIENT: float
MONS: ogre / two-headed ogre
MONS: stone giant / frost giant w:3 / fire giant w:3
KMONS: P = plant
KMONS: B = plant
KMONS: C = cyclops
KFEAT: A = granite_statue
KFEAT: C = W
FTILE:  2$|*%AB = floor_grass
COLOUR:  2$|*%AB = green
SUBST: 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=*% / *:%
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-BWWWWWP'c'
._PWWWWWB-$-BWWWWWP'.
cGWW"WWA-$2$-AWW"WWGc
.;PWWWWWB-$-BWWWWWP`.
;c;PWWWWWB-BWWWWWP`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 band, orc
SUBST: ' : cG.w
MAP
 ...........
..ccccccccc.
.ccc........
.cc..'2..'..
.c$........@
@nT.1......@
.c$........@
.cc..'2..'..
.ccc........
..ccccccccc.
 ...........
ENDMAP

NAME: cheibrodos_statue_roulette
TAGS: no_item_gen no_monster_gen
DEPTH: D:7-
ORIENT: float
: if you.depth() > 12 then
KMONS: ' = molten gargoyle
KITEM: ' = % / w:2 *
KFEAT: " = l
: else
KMONS: ' = gargoyle
KITEM: ' = %
: end
NSUBST: - = 4:' / 2='GG / *:G
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:7-, 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:   wizard / orc sorcerer, deep elf annihilator
:   if you.depth() < 10 then
NSUBST: " = 1 / 1... / ., - = d / *% / %$.. / .
:   elseif you.depth() < 13 then
NSUBST: " = 1 / 1. / 2... / ., - = de / |* / %$ / .
:   else
NSUBST: " = 1 / 2=1. / 2. / ., - = d / e / |* / %$ / .
:   end
: else
MONS:   deep elf sorcerer / deep elf annihilator
NSUBST: " = 2=1 / 4=1. / ., - = d / e / 2=|* / *% / %$.. / .
: end
SHUFFLE: AB / CD / EF
SUBST:   A = ., B = W, CDEF = w
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
FTILE: s = floor_mud
COLOUR: s = brown
FTILE: uETYU_ = floor_grass
COLOUR: uETYU_ = green
SHUFFLE: AB, CD
SUBST: A = ., B = x, C = ., D = x
NSUBST: - = 1:| / 1=|* / 2=*$ / 3=*%, q = 3:* / 9=$$%%.
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.
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
# Allow placement in Vaults as a room.
TAGS:    vaults_hard preserve_wall passable
DEPTH:   Crypt, D:12-, Depths, Elf, Snake, Vaults, Zot
ORIENT:  float
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 = 1:4 / 2=433 / 2=53 / 3, 3 = 3:3 / 3=3222 / 2
NSUBST:  ' = 1=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 / ancient champion / lich, ancient lich / dread lich
SUBST:   4 = 23, 5 = 4
: elseif you.in_branch("D") then
MONS:    floating eye
MONS:    boggart / kobold demonologist / deep elf pyromancer w:5 / \
         deep elf zephyrmancer w:5 / tengu conjurer
MONS:    wizard / necromancer / orc sorcerer / ogre mage
MONS:    deep elf annihilator / deep troll earth mage / sphinx / 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 / rakshasa / ogre mage / wizard / necromancer
MONS:    deep elf sorcerer / deep elf annihilator / deep elf demonologist \
         / deep elf high priest / deep elf death mage / deep troll earth mage
MONS:    sphinx / tengu reaver / lich / fire giant / frost giant
MONS:    titan / ancient lich w:5 / dread lich w:5 / glowing shapeshifter
: elseif you.in_branch("Depths") then
MONS:    floating eye / great orb of eyes / glowing orange brain \
         / phantasmal warrior
MONS:    boggart / rakshasa / ogre mage / wizard / necromancer
MONS:    deep elf sorcerer / deep elf annihilator / deep elf demonologist \
         / deep elf high priest / deep elf death mage / deep troll earth mage \
         / spriggan air mage / vampire mage
MONS:    sphinx / tengu reaver / lich / fire giant / frost giant
MONS:    titan / ancient lich w:5 / dread lich w:5 / glowing shapeshifter
: 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, nagaraja
SUBST:   5 = 4, 4 = 23
: elseif you.in_branch("Zot") then
MONS:    ghost moth / death cob / curse toe
MONS:    nonbase draconian
MONS:    ancient lich / dread lich, orb of fire
SUBST:   3 = 2, 4 = 3, 5 = 4
: end
KFEAT:   _ = altar_sif_muna / altar_vehumet
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
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 / floating 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
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")
MAP
   ccccccccccc
  cc----R--..cc
  c---ncncn...c
  c---'c'c'...c
 .c-n'-----'n.c.
 .n-cc-I-I-cc.n.
@PnRn'--_--'nQnS@
 .n-cc-I-I-cc.n.
 .c-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
DEPTH:  D:7-, 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() < 10 then
MONS:   small abomination, unseen horror / ancient zyme, ugly thing
MONS:   raiju / large abomination / shapeshifter
NSUBST: ' = de / 2=|* / *% / -, - = 3=1 / 3=1. / 2. / 2=3 / 2=3. / 4... / .
:   elseif you.depth() < 13 then
MONS:   small abomination / ugly thing
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
MONS:   lurking horror / ancient zyme / worldbinder / apocalypse crab
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
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
DEPTH:  D:3-9
ORIENT: float
KMONS:  p = plant
KMONS:  1 = electric eel
ITEM:   wand of flame ident:type
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..-----n..n..
 .nGpnWWW1W1WnpGn.
 .nnnnnnnnnnnnnnn.
 .................
ENDMAP

NAME:   gammafunk_wand_slinger
TAGS:   no_monster_gen no_trap_gen no_tele_into no_pool_fixup
DEPTH:  D:3-13
ORIENT: float
KMASK:  LM = no_item_gen
ITEM:   wand of flame
ITEM:   wand of iceblast / wand of acid
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:4-, 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.
{{
dgn.delayed_decay(_G, '-', 'troll skeleton / minotaur skeleton ' ..
                           '/ deep 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
DEPTH:  D:4-, Lair
ORIENT: float
KMASK:  -'DE12 = no_item_gen
# Cancellation placed only for mutagenic clouds.
ITEM:   potion of resistance ident:type, potion of cancellation ident:type q:2
# 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 ; halberd 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 / kobold brigand w:3
KMONS:  u = kobold skeleton / kobold zombie
KITEM:  ?1 = kobold skeleton
: dgn.delayed_decay(_G, '?1', 'kobold skeleton')
KPROP:  ?A1 = bloody
KFEAT:  O = altar_kikubaaqudgha
NSUBST: ' = 1:* / 4:%%- / *:-
FTILE:  uk-?A12O*% = floor_pebble_darkgray
MAP
       ccccc
cccccccc'''cccccccc
ckkkccc'''''ccckkkc
c--cc--2?A?2--cc--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

NAME:   gammafunk_worm_tunnel
TAGS:   no_monster_gen no_trap_gen no_tele_into no_item_gen
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:  ^ = net trap
SUBST:  F = E, D = 1ttttt
:   elseif you.depth() < 14 then
KFEAT:  ^ = net trap
SUBST:  d = dde, f = ffg, % = %%*, F = E, D = 1tt
# From D:14 and later we use Zot traps.
:   else
KFEAT:  ^ = zot trap
SUBST:  d = de, f = fg, % = %*, D = 1t, F = ^
:   end
: elseif you.in_branch('Lair') then
KFEAT:  ^ = net trap
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:  ^ = zot trap
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, hat randart
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^ = net trap / dispersal trap
# 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^ = net trap / dispersal trap
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^ = zot trap w:20 / net trap / dispersal trap
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:  rc = yellow
TILE:    r = dngn_sarcophagus_pedestal_right
FTILE:   fgjk$F123PQ^.rc = floor_sandstone
FTILE:   = = floor_sandstone
: set_feature_name("granite_statue", "sarcophagus")
:     end
: elseif you.in_branch("Lair") then
KMONS:   3 = lindwurm
KFEAT:   3^ = net trap / dispersal trap
:     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^ = zot trap w:20 / net trap / dispersal trap
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:  rc = yellow
TILE:    r = dngn_sarcophagus_pedestal_right
FTILE:   fhjk$F123NPQ^.rc = floor_sandstone
: set_feature_name("granite_statue", "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
DEPTH:  D:8-, Lair, Spider
ORIENT: float
ITEM:   pair of boots ego:rampaging ident:all
ITEM:   pair of boots ego:rampaging good_item ident:all
ITEM:   pair of boots randart ident:all
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


###############################################################################
#
# <<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:    allow_dup extra luniq_staircase
DEPTH:   D:2-, !D:$, Elf:2, Crypt:2-, !Crypt:$, Zot:2-, !Zot:$, \
         Tar:2-, !Tar:$, Dis:2-, !Dis:$, Geh:2-, !Geh:$, Coc:2-, !Coc:$
ORIENT:  float
WEIGHT:  10 (D), 5
SUBST:   m:mn
KFEAT:   ] = ]
KFEAT:   } = }
KFEAT:   ) = )
: if not you.in_branch("D") then
KMONS:   ]}) = 9
: end
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
SHUFFLE: }])>
DEPTH:   D:6-12
ORIENT:  float
SUBST:   0 = 0.., 9 = 9., 8 = 88.
MONS:    bush
MAP
xxxxxxxxxxxxxxxxxxxxx
x....+.........+...9x
x1...x...0.0...x....x
x...1x..0.0.0..x.0..x
x1...x.0.....0.x..0.x
x...1x..0...0..x.0..x
x1...x.0.....0.x..0.x
x...1x.........x.0..x
x1...x.9.9.9.9.x....x
x...1x8.8...8.8x9...x
x+xxxxxxxx+xxxxxxxx+x
x...9x$$$$$$$$$xG...x
x.0..x$$$$$$$$$x....x
x..0.x$$$$$$$$$x....x
x.0..x$$$$$$$$$x....x
x..0.xxxxxxxxxxx....x
x.0..+....x0...+....x
x..0.x..T.x.0..x....x
x.0..x.T..x..0.x....x
x9...x....x...0x...Gx
xxxxxxxxx+x+xxxxxxxxx
     x....x....x
     x....x....x
     x....x....x
     x}...x...]x
     xxxxxxxxxxx
ENDMAP

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

##############################################################################
# Statue gallery
NAME:    minmay_statue_hallways
DEPTH:   D:8-
ORIENT:  float
MONS:    orange crystal statue / obsidian statue / ice statue
MAP
           xxx
           x1x
           x|x
          xx.xx
          x...x
         xx...xx
       xxx.....xxx
xxxxxxxx.........xxxxxxxx
@.......................@
.........................
xxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   kennysheep_random_hallway
TAGS:   extra
ORIENT: float
SUBST:  c:ccxxb.
SUBST:  t:ttGGbT.
SUBST:  w:wwwl.
DEPTH:  D:10-, Depths
MAP
c@@@@@@@@c
cwt....twc
cw......wc
cw......wc
cw......wc
cwt.00.twc
cw..%%..wc
cw......wc
cw......wc
cwt....twc
cw......wc
cw......wc
cw......wc
cwt....twc
cw......wc
cw.9**9.wc
cw......wc
cwt....twc
cw......wc
cw......wc
cw......wc
cwt....twc
cw......wc
cw......wc
cw..%%..wc
cwt.00.twc
cw......wc
cw......wc
cw......wc
cwt....twc
c@@@@@@@@c
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
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
MONS:    ice statue
TAGS:    no_pool_fixup
ORIENT:  float
DEPTH:   D:7-
SUBST:   * : *$
SUBST:   * = |:5 * .
SUBST:   T = TU
SHUFFLE: xb/cc, ABC
: if crawl.coinflip() then
KFEAT:   X = < / >
KITEM:   X = any good_item
SUBST:   A=., B=., C=.
: else
SUBST:   X=*, B=., C=.
KFEAT:   A = teleport trap
: end
MAP
xxxxxxxxxxxxxxxxx
xbbbbbbbbbbbbbbbb
xb**....www.....T
xb**..A.www......
xbX*..B.w1w.....@
xb**..C.www......
xb**....www.....T
xbbbbbbbbbbbbbbbb
xxxxxxxxxxxxxxxxx
ENDMAP

#############################################################################
# Oklob gauntlet
# average of 2.2 oklobs, and at most 5 of them
NAME:    dpeg_oklob_gauntlet
DEPTH:   Depths, !Depths:$, Lair, Snake, Elf
ORIENT:  float
MONS:    plant, oklob plant, thorn hunter, acid blob
SHUFFLE: ]}) / def
NSUBST:  ' = 1:2 / 4 = 11122 / *:1
NSUBST:  " = 1:W / * = wwW, ` = 1:W / * = wwW
SUBST:   def = |*
: if you.in_branch("Depths") then
NSUBST:  3 = 1:3 / 1:4 / *:34...
: else
SUBST:   3 = .
: end
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
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
DEPTH:  D:4-8
ORIENT: float
TAGS:   no_monster_gen no_item_gen
NSUBST: + = 1:+ / *:=
SUBST:  = = + x:100
NSUBST: A = 1:+ / *:x, B = 1:+ / *:x, C = 1:+ / *:x, D = 1:+ / *:x
NSUBST: E = 1:+ / *:x, F = 1:+ / *:x, G = 1:+ / *:x, H = 1:+ / *:x
NSUBST: I = 1:+ / *:x, J = 1:+ / *:x, K = 1:+ / *:x, L = 1:+ / *:x
NSUBST: M = 1:+ / *:x, N = 1:+ / *:x, O = 1:+ / *:x, P = 1:+ / *:x
NSUBST: Q = 1:+ / *:x, R = 1:+ / *:x, S = 1:+ / *:x, T = 1:+ / *:x
NSUBST: U = 1:+ / *:x, V = 1:+ / *:x
# There are 111 - glyphs, which leads to about 27 monsters
SUBST:  - = 2:20 d .:50
ITEM:   any weapon / any missile / w:5 any armour / \
        w:5 any potion / w:5 any scroll, w:1 any misc
MONS:   plant / w:40 nothing, goblin / hobgoblin / kobold / orc / w:5 gnoll
MAP
.......................
..1..x++x..1..x+++++x..
.1x++x--x++x++x-----+..
..+--A--B--C--E-----+..
..+--A--B--C--E-----+..
.1xxAxxBxCCx--xEExEExx.
..1+--R....xDDx..F---+.
..1+--R..........F---+.
.1xxRxx.xSSSxTTx.xFx+x.
..+--Q..S---T--T...+1..
..+--Q..S---T--T...+1..
.xxPxx.xxSSxxTxx.xGxx1.
.+--P..V---U--U..G--+..
.+--P..V---U--U..G--+..
.xxOxx.V---xUUx..xHHxx.
..+--O.xVVVx.....H---+.
..+--O........xJJx---+.
.xxNNxMMx..xKKx--xIIxx.
.+---N--xLLx--J--I--+..
.+---N--M--L--x++x--+..
.x+++x++x--L--+11+--+..
.1...1..x++x++x..x++x1.
.......................
ENDMAP

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

##############################################################################
# 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
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
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.xc..xxx.xxx..cx
...xx...xx.xcxxxx...xxxxcx
...xxx..+..xcxxxx0'0xxxxcx
..xxx...xxxxcxxx9.'.9xxxcx
...xx...xxxxcxxxxx'xxxxxcx
x......xxxxxcxx..0'0..xxcx
xx....xxxxxxcxx.T.'.T.xxcx
xx....xxxxxxcxx..'''..xxcx
x......xxxxxcxx..'''..xxcx
...xx...xxxxcxx.T.'.T.xxcx
...xxx..xxxxcx%%%xxx%%%xcx
..xxx...xxxxc**xxxxxxx**cx
...xx...+..xcnncccccccnncx
x......xxx...............@
xx....xxxxxxxxxxxxxxxxxxxx
ENDMAP

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

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

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

NAME: wad_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
ORIENT:  float
TAGS:    transparent no_monster_gen
DEPTH:   D:6-, !D:$, Depths, !Depths:$, Elf, Snake
WEIGHT:  5 (Elf, Snake), 10
KMONS:   0 = 0
KMONS:   9 = 9
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..z..'..X.....
     ...'x'XxX0x0ZxZ0x0XxX'x'...
    .....X..'..z..9..z..'..X...
   ...X..'..z..9..z..'..X.....
  ...'x'XxX0x0ZxZ0x0XxX'x'...
 .....X..'..z..9..z..'..X...
...X..'..X..'..X..'..X.....
..'x'XxX'x'XxX'x'XxX'x'...
...X..'..X..'..X..'..X...
 .......................
  .....................
ENDMAP

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

NAME:    hangedman_cross_veins
ORIENT:  float
TAGS:    transparent no_monster_gen no_pool_fixup
DEPTH:   D:8-, Depths, !Depths:$, Elf, Snake, Abyss
WEIGHT:  5 (Elf, Snake), 10
KMONS:   12 = 0
KMONS:   34 = 9
KMONS:   5 = 9 / 8
KITEM:   1 = $ / % w:5
KITEM:   23 = % / $ w:5
KITEM:   45 = * / % w:5
: if you.in_branch("Abyss") then
SUBST:   x = xxmmccbv, X = xxccvb, . = .:990 W, ' = .:55 WWwl G:5, 23 = 1, 45 = 2
: elseif you.absdepth() > 20 then
SUBST:   x : x m:5, X : 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
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:   " : shallow_water / . w:90
KFEAT:   ^ : alarm trap / . w:190
KMASK:   ' = !no_monster_gen
SUBST:   1 = 0.
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx"x'x'x'x'x'x'x'x'x'x'x'x'x'x'x'x'x@
x"""''''''''''''''''''''''''''''''''@
xx"xx'G'xxxxxxxxxxxxx'G'xxxxxxxxxxxxx
x''xcccccx"x.x.x.x"xcccccx"x'x'x'x"xx
xx''c$0.c"""....."""c%0%c"""'''''"""x
x''xc0%1+x"xx.G.xx"x+0%9cx"xx'G'xx"xx
xx''ccccc..xcccccx..ccccc..xcccccx''x
x''mmmmmmm..c*9$c..xxxxxxx..c.0$c''xx
xx''ccccc..xc9*$+x^.ccccc..x+1%0cx''x
x''xc0%1+x..ccccc.^x+$*9cx..ccccc''xx
xx''c$0.c..xxxxxxx..c$9*c..mmmmmmm''x
x''xcccccx..ccccc..xcccccx..ccccc''xx
xx"xx'G'xx"xc9%0+x"xx'G'xx"x+1%0cx''x
x"""'''''"""c%0%c"""....."""c.0$c''xx
xx"x'x'x'x"xcccccx"x.x.x.x"xcccccx''x
xxxxxxxxxxxxx'G'xxxxxxxxxxxxx'G'xx"xx
@''''''''''''''''''''''''''''''''"""x
@x'x'x'x'x'x'x'x'x'x'x'x'x'x'x'x'x"xx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

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

NAME:   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
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 transparent
DEPTH: Depths, !Depths:$, Crypt, !Crypt:$, \
       Dis, !Dis:$, Geh, !Geh:$, Tar, !Tar:$, Coc, !Coc:$, \
       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 remove the bits of loot for Hell branches and Zot.
: if you.in_branch("Crypt") then
KMONS:  8 = bone dragon / lich / ancient lich / dread lich / w:5 death cob / \
            w:5 curse toe / w:5 zombie / w:5 skeleton / eidolon / \
            w:20 reaper / soul eater / w:30 place:Crypt
: elseif you.in_branch("Dis") then
KMONS:  8 = w:5 tzitzimitl / w:5 ice fiend / w:5 brimstone fiend / \
            w:5 hell sentinel / iron dragon / tormentor / iron golem / \
            place:Dis
SUBST:  *% = .
: elseif you.in_branch("Geh") then
KMONS:  8 = brimstone fiend / w:5 hell sentinel / hellion / balrug / \
            fire giant / place:Geh
SUBST:  *% = .
: elseif you.in_branch("Tar") then
KMONS:  8 = w:15 tzitzimitl / reaper / w:5 soul eater / shadow dragon / \
            lich / ancient lich / dread lich / w:15 place:Tar
SUBST:  *% = .
: elseif you.in_branch("Coc") then
KMONS:  8 = w:15 blizzard demon / frost giant / w:5 titan / w:15 ice fiend / \
            w:5 simulacrum / place:Coc
SUBST:  *% = .
: elseif you.in_branch("Zot") then
KMONS:  8 = w:35 nonbase draconian / orb of fire / electric golem / \
            killer klown / death cob / w:5 curse toe / w:5 ancient lich / \
            w:5 dread lich
SUBST:  *% = .
:else
KMONS:  8 = 8 band
: 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 = 30:1 / 15 = 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
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.
MONS:   orc wizard / nothing
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
DEPTH:  Depths
TAGS:   transparent
ORIENT: float
KPROP:  | = no_tele_into
KMASK:  | = opaque
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  9 = 999.
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:$
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
DEPTH:  D:12-, Depths
TAGS:   transparent
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
DEPTH:  Depths
TAGS:   transparent
ORIENT: float
SUBST:  x : x:8 c:2, c : c:8 v:2
SUBST:  9 = 999., 8 = 888.
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
DEPTH:  D:12-, Depths
TAGS:   transparent
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:8-, 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)
TAGS:   patrolling no_monster_gen transparent
NSUBST: 0 = 6:1 / 2 = 1. / 2:0 / *:.
NSUBST: 9 = 2:3 / 1:9 / *:.
SUBST:  8 = 2, | = -
COLOUR: c = lightmagenta
COLOUR: -+2O = magenta
FTILE:  -+2O = floor_hall
: else
KMONS:  8 = 8 band
KMONS:  9 = 9 band
KMONS:  0 = 0 band
KITEM:  O = superb_item
KITEM:  9 = any good_item
: 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)
TAGS:   no_monster_gen transparent
NSUBST: 0 = 6:1 / 2 = 1. / 2:0 / *:.
NSUBST: 9 = 2:3 / 1:9 / *:.
SUBST:  8 = 2, | = -
COLOUR: c = lightmagenta
COLOUR: -+2O = magenta
FTILE:  -+2O = floor_hall
: else
KMONS:  8 = 8 band
KMONS:  9 = 9 band
KMONS:  0 = 0 band
KITEM:  O = superb_item
KITEM:  9 = any good_item
: 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...ccc...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...ccc...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:  Orc, !Orc:$, D:10-14
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
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_kobold_lugonu_temple
ORIENT: float
TAGS:   transparent no_item_gen no_monster_gen no_trap_gen
DEPTH:  D:10-
KFEAT:  C = altar_lugonu
KFEAT:  ' = floor
KFEAT:  ~ = floor
MONS:   kobold demonologist
KMONS:  P = demonic plant
KMONS:  p = plant
# TODO: this can still rarely place isolated regions because of the relatively
# uncontrolled wall placement here
NSUBST: p = 3=xcbtvmnW.' / 5:P
NSUBST: . = 30=PxcbtvmnW / 5:. / 50:'
NSUBST: x = 15=PxcbtvmnW
NSUBST: ` = 3:'
MARKER: C = lua:fog_machine { \
             pow_min = 2, pow_max = 4, delay = 15, \
             size = 2, walk_dist = 20, spread_rate= 33, \
             cloud_type= "purple smoke" }
FTILE:  'P1vbtmn = floor_pebble_red
MAP
    .........
  .............
  ...xxxxxxx...
 ....x.....x....
 ....x.....x....
..xxxx.....xxxx..
..x..p..1..p..x..
..x....1C1....x..
..xp....`....px..
..x..p..`..p..x..
..xxxxx+++xxxxx..
 ..pppp.`.pppp..
 .......`.......
  ......`......
  ......`......
    ....`....
        @
ENDMAP

NAME:   kennysheep_demon_hangout
ORIENT: float
TAGS:   no_item_gen no_monster_gen no_trap_gen
DEPTH:  D:12-
MONS:   common demon, lesser demon
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_ogre_elephant_herders
ORIENT: float
TAGS:   no_item_gen no_monster_gen no_trap_gen
DEPTH:  Depths, !Depths:$
MONS:   ogre mage band, dire elephant
NSUBST: 2 = 2:2 / 3:2. / .
MARKER: F = lua:fog_machine { cloud_type = "flame", pow_min = 100, \
                              pow_max = 100, delay = 10, size = 1, \
                              walk_dist = 0, excl_rad = 0 }
MAP
  xxxxxx
  xtxxtx  xxxxxx
  xt.22xxxx..**x
  x.2.2.2.t..1*x
  xt.2t.2......x
xxx.2..2.......x
xt...22........x
x.......I..I...x
xxt...I......I.x
 xxxx....FF....x
    x....FF....x
    x.I......I.x
    x...I..I...x
     ...........
     @@@@@@@@@@@
ENDMAP

NAME:   kennysheep_the_goblin_king
ORIENT: float
TAGS:   no_monster_gen no_trap_gen
DEPTH:  D:2-4
KMONS:  1 = Ijyb / hobgoblin, hobgoblin
KMONS:  2 = goblin
MAP
xxxxxxxxx
x..%1%..x
xG2...2Gx
x.2...2.x
xG2...2Gx
x.......x
xG.....Gx
x.......x
xG.....Gx
 @@@@@@@
ENDMAP

NAME:   kennysheep_steamy
ORIENT: float
TAGS:   no_monster_gen
DEPTH:  D:5-10
MONS:   steam dragon, fungus
KFEAT:  ^ = shaft trap
SUBST:  p = .....^22222wwwww
MAP
   xxxxx
 xxxpppxx
 xpp1.ppxx
xxp....ppx
xpp...1ppx
xpp....ppx
xxpp.pppxx
 xpp.ppxx
 xxp.px
  xp.px
  xp.px
  xp.px
  xp.px
  xp.px
  xx.px
   x.px
   x.pxx
   xp.px
   xp.px
   xp.px
  xxp.px
  xpp.px
 xxpp.px
 xppp.pxx
 xppp.ppx
 xppp.ppx
xx@@@@@@xx
ENDMAP

NAME:   kennysheep_funnel
ORIENT: float
TAGS:   no_trap_gen no_monster_gen
DEPTH:  D:12-, !D:$, Depths:2-, !Depths:$
MAP
    ccc
   cc.cc
   c.}.c
   c...c
   cG.Gc
   cc8cc
   cG.Gc
   cc.cc
   cG.Gc
   cc.cc
   cG.Gc
   cc.cc
   cG.Gc
   cc.cc
   cG.Gc
   cc.cc
   cG.Gc
  cc...cc
 ccG...Gcc
cc.......cc
cG...{...Gc
cc.......cc
 ccG...Gcc
  ccccccc
ENDMAP

NAME:   kennysheep_six_static_rooms
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-, Depths, Elf, Zot, Snake, !D:$, !Depths:$
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
ORIENT: float
DEPTH:  D:2-, Depths, !D:$, !Depths:$
: ks_random_setup(_G)
: 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
ORIENT: float
DEPTH:  D:14-, Depths, !Depths:$
NSUBST: % : 1:|
SUBST:  % = *
SUBST:  9 = 9900.
: ks_random_setup(_G)
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, 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: cheibrodos_birdhouse
DEPTH: Depths, !Depths:$
TAGS: no_item_gen no_monster_gen no_pool_fixup
ORIENT: float
MONS: tengu warrior, tengu conjurer, tengu reaver
KFEAT: m = iron_grate
SUBST: " = ........1W
NSUBST: ' = 2: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_lost_city_excavation
DEPTH: D:11-, Depths
TAGS: no_item_gen no_monster_gen
ORIENT: float
: if you.in_branch("D") then
MONS: deep elf pyromancer w:8 / fire elemental w:5 / nothing, wizard
: else
MONS: wizard w:5 / fire elemental w:5 / nothing, lich
: end
ITEM: randbook / any scroll
SUBST: - = .lx
MAP
llllll
llllllllll
.l-x-llllllllllllll
@.+1xlxx-lllllllllll
.lx.-l-1xlxx-lxxxxll
lll.llx...+1xlxddxll
llx.xlll.l-.xlx22xll
ll+1.l-x.lx..lx..xll
llx--..1+l-.xlx..xll
llllll-xxlx1+.+..xll
llllllllll-xxlxxxxll
    llllllllllllllll
        lllllllllll
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
DEPTH: Depths
ORIENT: float
TAGS: no_item_gen no_monster_gen
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
DEPTH:  Depths, !Depths:$
ORIENT: centre
TAGS:   transparent no_monster_gen no_pool_fixup no_item_gen
TAGS:   uniq_kennysheep_gozag_temple
KMONS:  2 = guardian serpent
KMONS:  B = golden dragon
KITEM:  | = gold good_item
KITEM:  23 = gold
KFEAT:  B = altar_gozag
KFEAT:  D = granite_statue
TILE:   GD = dngn_golden_statue
: set_feature_name("granite_statue", "golden statue")
COLOUR: cGD = yellow
FTILE:  .0_Gt = floor_grass
FTILE:  $|B}+nc23-D = floor_limestone
FTILE:  " = floor_dirt
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
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$$2|$$$n""""""w
@""G.""_n$$|B|$$n_"".G""@
 w""""".n$$$|2$$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
DEPTH: D:8-, Depths, Elf, Zot
ORIENT: float
TAGS: transparent
MAP
        xxxxxxxxxxxxx
        x...........x
        x.....0.....+
        x...........x
xx+xxxxxx...xxxxx...x
x...........xxxxx...x
x...........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...........x
    x...xxxxx...........x
    x...xxxxx...xxxxxx+xx
    x...........x
    +.....0.....x
    x...........x
    xxxxxxxxxxxxx
ENDMAP

NAME: kennysheep_blocky_room
DEPTH: D:8-, Depths, Elf, Zot
ORIENT: float
TAGS: transparent
: 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
DEPTH: D:4-, Depths, Elf, Zot
ORIENT: float
TAGS: transparent
SUBST:  G : GTV.
MAP
    xx.@.xx
   xx.....xx
   x.......x
  xx.......xx
  x.........x
  x.........xx
 xxxxx.......x
 xG..xxxx....x
 x......x....x
 x......xx...x
xx...x...x...xx
x....x...x0...x
x...xx...xx...x
x...x.....x...x
x...x.....x...x
x...x..%..x...x
x...x0%G%0x...x
x...x..%..x...x
x...x.....x...x
x...x.....x...x
x...xx...xx...x
x...0x...x....x
xx...x...x...xx
 x...xx......x
 x....x......x
 x....xxxx..Gx
 x.......xxxxx
 xx.........x
  x.........x
  xx.......xx
   x.......x
   xx.....xx
    xx.@.xx
ENDMAP

NAME: kennysheep_oblong_rooms
DEPTH: D:$, Depths, Elf, Zot
ORIENT: float
TAGS: transparent
SUBST:  G : GTV.
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 maledictions / 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
SUBST:   ? : xcvb m:1 t:1 .:44
SUBST:   " : xcvbTmGt .:80
SUBST:   ' : xcvbTmGt d:80
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
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-, Depths
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.xx8x8xx.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:2-3
ORIENT: float
MONS:   giant cockroach
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
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
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

NAME:   gammafunk_sealed_arena
TAGS:   no_monster_gen no_trap_gen
# Allow placement in Vaults as a room.
TAGS:   vaults_hard preserve_wall passable
DEPTH:  Crypt, D:8-, Depths, Elf, Shoals, Snake, Spider, Swamp, Vaults, Zot
ORIENT: float
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 / $
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
# 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:   ^ = zot trap
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 / nonbase demonspawn
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 / orb of fire / 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
: 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
# 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 charges:" .. tostring(5 + crawl.random2(6)) ..
     "ident:all")
item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
}}
ITEM:   any randart jewellery
KFEAT:  H = >
KFEAT:  K = {
KFEAT:  p = n
# 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 / nonbase demonspawn
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 fire / 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
: 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-----mmmmmmmmmmmmmnfm*mfc`
 `c-----mmmmmmmmmmmmmmmmmmmn`
 `c-----mmmmmmmmmmmmmn*memen`
..n-----mmmmmmmmmmJJmmmmmmmn..
@PnQ-d---------mmmHJmn|mRm|nS@
..n-----mmmmmmmmmmJJmmmmmmmn..
 `c-----mmmmmmmmmmmmmn*memen`
 `c-----mmmmmmmmmmmmmmmmmmmn`
 `c-----mmmmmmmmmmmmmnfm*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
# 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
ITEM:    executioner's axe good_item no_pickup w:5 / \
         battleaxe good_item randart no_pickup / \
         broad axe good_item no_pickup / \
         triple sword good_item no_pickup w:5 / \
         great sword good_item randart no_pickup / \
         double sword good_item no_pickup / \
         great mace good_item no_pickup / \
         eveningstar good_item no_pickup / \
         bardiche good_item no_pickup w:5 / \
         glaive good_item randart no_pickup / \
         demon trident good_item no_pickup
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 ident:type
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 / wizard / 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 = wizard / boggart / deep elf annihilator / deep elf demonologist \
          / deep elf sorcerer / deep elf high priest / titan / lich
# Depths
: else
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
: dgn.delayed_decay(_G, "DE", "human skeleton")
FTILE:   E = floor_rough_lightred
MARKER:  E = lua:fog_machine { \
               cloud_type = "flame", pow_min = 10, pow_max = 10, delay = 10, \
               size = 1, walk_dist = 0, start_clouds = 1, excl_rad = 0 }
# 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
: else
CLEAR:   `
: 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 trap
: 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 trap
: 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 trap
: 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 trap
: elseif you.in_branch("Zot") then
MONS:    ancient lich w:5 / dread lich w:5 / orb of fire, orange crystal statue
SUBST:   2 = G:50 2, r = *:30 |, wW = l, K = ), s = ]
KFEAT:   ^ = zot trap
: 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
ORIENT: float
DEPTH:  D:4-
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
ORIENT: float
DEPTH:  D:3-,Depths
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.
# 1/51 chance of tons of statues
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.9.9**b**9.9.x
xx...9***9...xx
 xx....9....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
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
