###############################################################################
# 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')

{{
-- TODO: move this to vault.lua so it doesn't desync with zot.des's version.
function zot_entry_setup(e)
    e.kitem("O = midnight gem")
    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 / rakshasa / glowing shapeshifter w:5 / \
                 stone giant w:12 / spriggan berserker w:8 / 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 w:12 / tentacled monstrosity / lich w:2")
end

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

function grunt_megastairs_setup(e)
  e.orient("float")
  e.tags("extra luniq_generic_threat_stair transparent ruin_lair")
  e.depth("Lair, Depths, Crypt, Elf, Snake, Zot")
  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("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 no_descent
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 no_descent
DEPTH:  D:8-, !D:$
ORIENT: float
MONS:  plant
SUBST: x : x:9 c:1
MAP
xxxxxxxxxxx@..@xxxxxxxxxxx
x|11xxxxxx......xxxxxx11|x
x11llxxxxx..ww..xxxxxll11x
x1llllxxxx.wwww.xxxxllll1x
xxlllllxxx.wbbw.xxxlllllxx
xxxlllllx..wbbw..xlllllxxx
xxxxllll...wbbw...llllxxxx
xxxxxll...wwbbww...llxxxxx
xxxxxx...wwbbbbww...xxxxxx
xxxxx...wwbbbbbbww...xxxxx
x......wwbbbbbbbbww......x
@..wwwwwbbbbbbbbbbwwwww..@
..wwbbbbbbbbbbbbbbbbbbww..
..wwbbbbbbbbbbbbbbbbbbww..
@..wwwwwbbbbbbbbbbwwwww..@
x......wwbbbbbbbbww......x
xxxxx...wwbbbbbbww...xxxxx
xxxxxx...wwbbbbww...xxxxxx
xxxxxll...wwbbww...llxxxxx
xxxxllll...wbbw...llllxxxx
xxxlllllx..wbbw..xlllllxxx
xxlllllxxx.wbbw.xxxlllllxx
x1llllxxxx.wwww.xxxxllll1x
x11llxxxxx..ww..xxxxxll11x
x|11xxxxxx......xxxxxx11|x
xxxxxxxxxxx@..@xxxxxxxxxxx
ENDMAP
####

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

NAME:   kennysheep_cross_landing
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

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

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

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

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

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

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

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

NAME:   hellmonk_destroyed_diamonds
TAGS:   transparent ruin
DEPTH:  D:6-, Lair, Depths
WEIGHT: 5
ORIENT: float
SUBST:  x : ccx
:if crawl.coinflip() then
TILE:   c = stone_wall_shoals
:else
TILE:   c = wall_marble
:end
FTILE:  c. = floor_sand
MAP
   .       .       .       .
  .x..   ..x..   ..x..   ..x.
 .xxx.. ..xxx.. ..xxx.. ..xxx.
.xxxxx...xxxxx...xxxxx...xxxxx..
 .xxx..x..xxx..x..xxx..x..xxx..x.
  .x..xxx..x..xxx..x..xxx..x..xxx.
   ..xxxxx...xxxxx...xxxxx...xxxxx..
     .xxx..x..xxx..x..xxx..x..xxx..x.
      .x..xxx..x..xxx..x..xxx..x..xxx.
       ..xxxxx...xxxxx...xxxxx...xxxxx..
         .xxx..x..xxx..x..xxx..x..xxx..x.
          .x..xxx..x..xxx..x..xxx..x..xxx.
           ..xxxxx...xxxxx...xxxxx...xxxxx.
             .xxx.. ..xxx.. ..xxx.. ..xxx.
              .x..   ..x..   ..x..   ..x.
               .       .       .       .
ENDMAP

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

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

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

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

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

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

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

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

##############################################################################
# Earth elementals (formerly Stone Golems)
#
NAME:   minmay_stone_box
TAGS:   no_descent
DEPTH:  D:10-
ORIENT: float
WEIGHT: 5
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 no_descent
DEPTH:  Depths, !Depths:$
ORIENT: float
MONS:   ancient champion
KMONS:  D = skeleton place:Depths:$ w:20 / lich w:2 / bone dragon w:2 \
        / ancient lich w:1 / dread lich w:1
KITEM:  D = star_item / superb_item
SUBST:  $ = D$$$
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-11, Lair
ORIENT: float
MONS:   w:20 endoplasm / jelly / fungus
MONS:   slime creature / oklob plant
MAP
xxxxxxxxxx
xxxx111xxx
xx1111111x
@+1112111x
xx1111111x
xxxx111xxx
xxxxxxxxxx
ENDMAP

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

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

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

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

##############################################################################
# Swampy vault
#
NAME:    onia_ninara_swampy_vault
TAGS:    no_pool_fixup no_monster_gen
DEPTH:   Lair:3-, !Lair:$, Snake, !Snake:$
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.in_branch("Lair") then
NSUBST:  W = 3=1 / 3=1W / W
NSUBST:  8 = 3=3 / 2=31 / 1W
: else
NSUBST:  W = 4=1 / 4=2 / 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

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

##############################################################################
# Ogre Cave, by Lemuel
#
NAME:    lemuel_ogre_cave
TAGS:    no_pool_fixup
ORIENT:  float
DEPTH:   D:9-, !D:$, Orc
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:3-, 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

##############################################################################
# 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
# Place fire cloud machines over lava and freezing vapour and storm clouds over
# deep water to prevent the relevant (not-fully-resistant or at least
# non-flying and non-giant) monsters from getting harmed by clouds.
KFEAT:  p = l
KFEAT:  rs = w
: if you.in_branch("Elf") then
# No fire elementals, since their flame clouds will tend to kill the elves in
# this room.
KMONS:  1 = salamander / deep elf pyromancer
KMONS:  2 = fire giant
KMONS:  3 = 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
: else -- Depths
KMONS:  1 = fire giant
KMONS:  2 = hellephant
KMONS:  3 = war gargoyle / stone giant / iron dragon
KMONS:  4 = iron giant
KMONS:  5 = frost giant
KMONS:  6 = shard shrike
KMONS:  7 = storm dragon
KMONS:  E = titan
: end
KFEAT:  5 = W
NSUBST: d = d / e / f / g / h / i / j / *
SUBST:  1 = 1.., - = 2pp..., 3 = 3.., x = xxx., ' = 4...., 5 = 5WW
SUBST:  " = 6..., 7 = 7..., ` = s, ; = Ess...
MARKER: p = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "flame", excl_rad = 0 }
MARKER: q = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "calcifying dust", \
                excl_rad = -1 }
MARKER: r = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "freezing vapour", \
                excl_rad = -1 }
MARKER: s = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "thunder", excl_rad = 0 }
TILE:   x = wall_pebble_lightgray
MAP
       ccccccccc
      cc3+.aqcwcc
     cc3xc.aacw5cc
    ccx3xc'''c5w5cc
   cc3xx3c'''c5ww5cc
  cc3x3x3c'''cw5ww5cc
 cc3xxx3xcaaWc5ww5wwcc
cc3xx3xxxcqaW+5w5wwwwcc
cxx33x33xccnccwww55555c
ccccccc+ccdddcccccccc+c
c-----..cd...dcra"""WWc
c--...--cd.D.dcaa"""aac
c-.-----cd...dc.."""arc
c+cccccccc...cc=ccccccc
c111lll1lc...c`77`77``c
ccll1l1l1c;.;c```7``7cc
 ccl1l1l1c;;.c`7```7cc
  ccl1ll1c;.;c7`7`7cc
   ccll1lc.;;c7``7cc
    cc1llc;.;c`7`cc
     cc1lc;;.c`7cc
      cc1c;;;+7cc
       c=ccccccc
ENDMAP

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

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

# Wait for the freezing cloud to disappear, then run to the next gap,
# then wait. It creates an agreeable sense of tension. -LP
#
NAME:    lemuel_ice_spiral_2
TAGS:    uniq_spiral layout_rooms layout_city
TAGS:    no_item_gen no_monster_gen no_tele_into no_descent
DEPTH:   D:5-
ORIENT:  float
SUBST:   * : *$
MARKER:  D = lua:fog_machine { cloud_type = "freezing vapour", \
              pow_min = 5, pow_max = 5, delay = 120, start_clouds = 1, \
              size = 2, walk_dist = 0, spread_rate= 0 }
MARKER:  E = lua:fog_machine { cloud_type = "freezing vapour", \
              pow_min = 9, pow_max = 9, delay = 200, start_clouds = 1, \
              size = 2, walk_dist = 0, spread_rate= 0 }
MAP
nn+nnnnnnnnnnnnnnnnnn
n...DDD.DDD.EEEEEEE.n
nnnnnnnnnnnnnnnnnnn.n
n*****EEEEEEEDDD.DDDn
nnnnnnnnnnnnnnnnnnnnn
ENDMAP

##############################################################################
# Flame loot (Lemuel)
#
NAME:   lemuel_flame_loot_2
TAGS:   no_descent
DEPTH:  D:9-, !D:$, Depths, !Depths:$
ORIENT: float
WEIGHT: 5
KMASK:  12* = no_monster_gen
KITEM:  1 = star_item
KITEM:  2 = superb_item
: if you.in_branch("D") then
:     if you.depth() < 13 then
KMONS:  1 = hell hound / lindwurm
KMONS:  2 = deep elf pyromancer / efreet
SUBST:  1 = 1..., * = *...
:    else
KMONS:  1 = hell hound / lindwurm / deep elf pyromancer / efreet
KMONS:  2 = fire dragon / salamander tyrant / fire giant
SUBST:  1 = 1., * = *..
:    end
# Depths
: else
KMONS:  1 = fire dragon / salamander tyrant / fire giant / balrug
KMONS:  2 = hellephant
SUBST:  * = *.
: end
KFEAT:  2 = escape_hatch_down
MARKER: D = lua:fog_machine { cloud_type = "flame", \
             pow_min = 10, pow_max = 10, delay = 10, \
             size = 2, walk_dist = 0, spread_rate= 0 }
MAP
ccccc...ccccc
ccccc...ccccc
ccccc...ccccc
ccccc.D.ccccc
ccccc...ccccc
ccccc...ccccc
ccccc.D.ccccc
ccccc...ccccc
ccccc...ccccc
ccccc...ccccc
clllllllllllc
clllllllllllc
clllll*lllllc
cllll*1*llllc
clll*121*lllc
cllll*1*llllc
clllll*lllllc
clllllllllllc
clllllllllllc
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:   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:11-, Depths, Crypt
ORIENT:  float
MONS:    patrolling laughing 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.......x
x.......1.......x
xBBxxx.x*x.xxxDDx
xBBxx.xx*xx.xxDDx
xBBx.x2x+x2x.xDDx
xbbxx22x4x22xxddx
   xx2233322xx
   xxxxxxxxxxx
ENDMAP

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

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

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

NAME:   wad_bat_island
DEPTH:  D:12-, !D:$
ORIENT: float
WEIGHT: 4
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:    transparent no_monster_gen no_item_gen patrolling allow_dup
TAGS:    vaults_hard vaults_orient_n
ORIENT:  float
DEPTH:   D:12-, Vaults
: if you.branch() == "D" then
MONS:    howler monkey, shapeshifter
MONS:    slime creature, yaktaur
MONS:    glowing orange brain, yaktaur captain
: else
MONS:    vault sentinel, glowing shapeshifter
MONS:    large slime creature, great orb of eyes
MONS:    glowing orange brain, vault warden
: end
KFEAT:   > = shaft trap
KFEAT:   n = iron_grate
SHUFFLE: {[(
SUBST:   ( = (:70 <, [ = [:50 <
MAP
  .................
  ......ccccc......
....ccccc*.*ccccc....
...cc$.c..6..c.%cc...
..cc$..+.ccc.+..%cc..
..c$.5$ccc6ccc%3.%c..
..c..$cn.....nc%..c..
..cc+cn.......nc+cc..
.cc..c.........c..cc.
.m..+c....<....c+..m.
.m1.+2...[{(...2+.1m.
.m..+c....>....c+..m.
.cc..c.........c..cc.
..cc+cc.......cc+cc..
..c..%cc.....cc$..c..
..c%55%cnc.cnc$55$c..
..cc%54+.cnc.+45$cc..
...cc%.+.....+.$cc...
....ccccc...ccccc....
  ......c+++c......
  .................
ENDMAP

###############################################################################
# Nasty temple of Zin.
NAME:   evilmike_silver_temple
TAGS:   no_monster_gen patrolling
DEPTH:  Depths, !Depths:$
ORIENT: float
MONS:   daeva god:Zin, angel god:Zin dbname:zin_angel, cherub god:Zin
: if you.depth() > 3 then
MONS:   pearl dragon
: 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:    tengu warrior / deep troll earth mage / rakshasa \
         / necromancer / vampire knight
MONS:    tengu conjurer / ancient champion / stone giant / occultist \
         / deep elf high priest / phantasmal warrior \
         / spriggan berserker / salamander mystic / caustic shrike w:5
MONS:    fire giant / frost giant / stone giant / ettin / hell knight \
         / vampire knight / vampire mage / spriggan berserker \
         / spriggan air mage / deep troll earth mage / deep elf death mage
MONS:    titan / lich / deep elf annihilator / deep elf sorcerer \
         / sphinx / salamander tyrant / mummy priest w:5 / draconian knight w:5
SHUFFLE: AB, CD, EF, GH, IJ, KL / MN, OP / QR, ST, ST / UV
SUBST:   ACEG : x, BDFH : ., c : cccvb, x : x:70 cb
SUBST:   IKO = 1, LPS = 2, T = 3, JMNQRUV = %
SUBST:   3 = 334, 2 = 223, 1 = 1:60 2:30 .
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
TAGS:    no_monster_gen
ORIENT:  float
DEPTH:   Depths, !Depths:$
KMONS:   D = ice dragon / frost giant / blizzard demon / \
             walking frostbound tome w:3 / ice fiend w:2
KMONS:   E = storm dragon / spriggan air mage / spark wasp / titan w:5
KMONS:   F = fire dragon / fire giant / salamander tyrant / smoke demon / \
             balrug / hellephant w:5
KMONS:   H = stone giant w:20 / iron dragon / walking earthen tome / \
             juggernaut w:5 / walking crystal tome w:5
KMONS:   J = death scarab w:20 / guardian mummy / sphinx / reaper / \
             mummy priest w:5 / royal mummy w:5
KMONS:   K = deep elf demonologist / deep elf sorcerer / deep elf death mage / \
             deep elf annihilator / deep elf high priest / \
             deep elf blademaster w:5 / deep elf master archer w:5
KMONS:   L = great orb of eyes / rockslime / quicksilver ooze / azure jelly / \
             acid blob w:5
KMONS:   M = ancient champion / vampire mage / vampire knight / \
             eidolon / revenant / bone dragon / lich w:5
KMONS:   N = tengu warrior / tengu conjurer / tengu reaver
KMONS:   O = spriggan berserker / spriggan air mage / spriggan defender
KMONS:   P = balrug / blizzard demon / shadow demon / hell beast / hellion / \
             lorocyproca / reaper / tormentor
SHUFFLE: DEFHJKLMNOP
MAP
xxvvvvvvvvvvvvvxx
xvv..vvvvvvv..vvx
vv.DD.vvvvv....vv
v..DD.+...+.EEE.v
v..DD.+...+.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..HH..v
v..FF..v.v..HH..v
vv....vv+vv.HH.vv
xvv++vv...vv++vvx
xxv..v.JJJ.v..vxx
xxv..v.JJJ.v..vxx
xvv++vv...vv++vvx
vv.KK.vv+vv....vv
v..KK..v.v..LL..v
v..KK..v.+..LL..v
vv....vvvvv.LL.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")
     kitem("1 = midnight gem")
     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
TAGS:    transparent no_monster_gen no_item_gen
ORIENT:  centre
DEPTH:   Depths
PLACE:   Depths:$
WEIGHT:  5 (Depths:$), 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, javelin q:2, potion of curing ident:type , potion of heal wounds ident:type
ITEM:    potion of invisibility ident:type
KFEAT:   - = open_door
SHUFFLE: })]>
: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
KMONS: )]> = nonbase draconian w:30 / \
             shadow dragon / golden dragon / storm dragon
KITEM: > = midnight gem
KFEAT: } = enter_zot
: 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:   kennysheep_kobold_lugonu_temple
TAGS:   transparent no_item_gen no_monster_gen no_trap_gen
DEPTH:  D:10-
ORIENT: float
MONS:   kobold demonologist
KMONS:  P = demonic plant
KMONS:  p = plant
KFEAT:  C = altar_lugonu
NSUBST: p = 3 = xcbtvmW.' / 5:P, x = 15 = xcbtvm / *:x
NSUBST: - = 20 = PxcbtvmW / 15:' / *:., . = 9:', ` = 3:'
SUBST:  mn : mn
MARKER: C = lua:fog_machine { cloud_type= "purple smoke", \
             pow_min = 2, pow_max = 4, delay = 15, \
             size = 2, walk_dist = 20, spread_rate= 33 }
FTILE:  'P1vbtmn = floor_pebble_red
MAP
    ----.----
  --....-....--
  -.-xxxxxxx-.-
 -.-.x-----x.-.-
 -..-x-.-.-x-..-
-.xxxx-...-xxxx.-
-.x--p.-1-.p--x.-
.-x-...1C1...-x-.
.-xp...-`-...px-.
-.x--p..`..p--x.-
-.xxxxx+++xxxxx.-
 -.p--p.`.p--p.-
 -..pp..`..pp..-
  -....-`-....-
  -.--.-`-.--.-
   -----`-----
        @
ENDMAP

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

NAME:   kennysheep_the_goblin_king
TAGS:   no_monster_gen no_trap_gen
ORIENT: float
DEPTH:  D:2-4
KMONS:  1 = Ijyb / hobgoblin, hobgoblin
KMONS:  2 = goblin
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
TAGS:   no_monster_gen
ORIENT: float
DEPTH:  D:5-10
MONS:   steam dragon, fungus
KFEAT:  ^ = shaft trap
SUBST:  p = .....^22222wwwww
MAP
x                   xxxx
xxxxx             xxxppxxx
@pppxxx     xxxxxxxppppppx
@pppppxxxxxxxpppppppp...pxx
@ppppppppp..............1px
@.........ppppppppppp....px
@pppppppppxxxxxxxxxpp.1.ppx
@ppxxxxxxxx        xpppppxx
xxxx               xxpppxx
x                   xxxxx
ENDMAP

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

## Plants, beasts, and humanoids alike gather in a splendid palace devoted to
## the worship of a life-bringing water deity.
NAME:     gammafunk_depths_water_palace
TAGS:     no_monster_gen patrolling no_pool_fixup
DEPTH:    Depths, !Depths:$
ORIENT:   float
KPROP:    a"E = no_tele_into
# The loot items need KITEM and KFEAT to place in water
KITEM:    % = %
KITEM:    $ = $
KITEM:    * = *
KITEM:    6| = |
KMONS:    1 = tengu warrior / tengu conjurer / ettin / stone giant \
              / spriggan berserker
KMONS:    2 = occultist / deep troll earth mage / spriggan air mage \
              / deep elf annihilator / deep elf high priest
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:    F = orange crystal statue
KMONS:    KL = merfolk impaler / merfolk javelineer
KMONS:    M = elemental wellspring
KMONS:    N = ettin / stone giant / frost giant / fire giant
KMONS:    O = juggernaut
KMONS:    P = titan
KMONS:    Q = 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:  NOP / kkQ
: end
KMONS:    h = plant / fungus
KFEAT:    -"h3456HJK%$*| = W
KFEAT:    L = w
KFEAT:    t = mangrove
SHUFFLE:  FH / IJ
SUBST:    i : ch, j : ch, a' = hhhhW, k = .
SUBST:    E = 5, I = G, J = 4, K = KW, L = Lw, M = LM, R = 45
NSUBST:   F = F / G
COLOUR:   c = white
COLOUR:   .12NOPQ = lightblue
COLOUR:   x = blue
TILE:     x = wall_pebble_cyan
FTILE:    .TUwWah123456DFHMNO|$*%$+xctG = floor_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
  ccGK.cca""cccccUGUccccc''-3x---Lc
 cccc-.naE"cccc--*6*--cccc'-t-t--wcc
 cT---.n""accc---$%$---ccc'--x4t-wwc
 ct1...c"acccR---ccc---Rccc'-t-x--wc
 cccc++c"accc--cccGccc--ccc'--t3t-Mc
cctGt..caacc--cc*%$%*cc--cc''--x--wcc
c..1...caccc--ct-----tc--cccG-t-t-wTc
+.---..ntcU|$----NON------++-5----llc
+.-U-.2nUcG6|----.P.--5---++---U--lGc
+.---..ntcU|$----NON------++-5----llc
c..1...caccc--ct-----tc--cccG-t-t-wTc
cctGt..caacc--cc*%$%*cc--cc''--x--wcc
 cccc++c"accc--cccGccc--ccc'--t3t-Mc
 ct1...c"acccR---ccc---Rccc'-t-x--wc
 cT---.n""accc---$%$---ccc'--x4t-wwc
 cccc-.naE"cccc--*6*--cccc'-t-t--wcc
  ccGK.cca""cccccUGUccccc''-3x---Lc
  ccc-.Gcccjjccccccccccccccc----wwc
  ccG-.1.+.t1t.t----Ix-----+---wwcc
   cc-...+....2.------J----+-wwwcc
    cccttct1t.t.-Gx----Ix-tctTccc
     ccccccccccccccccccccccccccc
ENDMAP

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

NAME: cheibrodos_poisonous_passages
TAGS: no_item_gen no_monster_gen transparent
DEPTH: Depths, !Depths:$
ORIENT: float
: local brnd = crawl.random2(15)
: if brnd >= 10 then
MONS: mana viper / naga warrior / naga mage
MONS: nagaraja / naga ritualist / w:8 green death
: elseif brnd >= 5 then
MONS: jumping spider / wolf spider / tarantella
MONS: emperor scorpion / w:8 green death / w:3 ghost moth
: else
MONS: skeletal warrior ; long sword ego:venom | broad axe ego:venom \
      | halberd ego:venom
MONS: reaper ; halberd itemname:scythe tile:wpn_scythe wtile: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_birdhouse
TAGS:   no_item_gen no_monster_gen no_pool_fixup no_descent
DEPTH:  Depths, !Depths:$
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
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:11-, Depths
ORIENT: float
: if you.in_branch("D") then
MONS:   deep elf pyromancer w:8 / fire elemental w:5
MONS:   arcanist / occultist
: else
MONS:   occultist / sun demon, lich
: end
ITEM:   randbook / any scroll
NSUBST: 1 = 1:1 / 1:. / * = 1.
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: cheibrodos_magma_flow
TAGS: no_item_gen no_monster_gen
DEPTH: D:11-, !D:$, Lair:3-, !Lair:$
ORIENT: float
KMONS: ' = lava snake
KMONS: ? = molten gargoyle
KFEAT: ?-' = lava
NSUBST: - = 2:?
NSUBST: l = 5:'
MAP
                              xx@@xx
                              xx..xxx
         xxxxx xxxx          xxx..llx
  xxx  xxxlllxxxllxxxx       xxx..llx
 xx[xxxxlllx-llll..llxx     xxx..lllx
 xx.xxllllxxxxl.....llxx    xxx..lllx
xxl.lllllxxxxx...ll..lxx   xxxx..lllx
xGll....lxxxx...llll.llxx xxxx..llllx
xxl.lll...xx...lllxx..llxxxx..xxlllxx
 xx.xxlll.....ll-xxxx........xxxllxx
 xx(xxxxlll.lllxxx  xll...llxxxlllx
  xxx  xxxllllxx    xxlllllxxllll-x
         xxxxxx      xxllllllllllxx
                      xxllllllllxx
                       xx-lxxxxxx
                        xxxxx
ENDMAP

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

NAME:    hangedman_elemental_death_ray
TAGS:    transparent patrolling no_descent
DEPTH:   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:heavy
KMONS:  4 = stone giant w:15 / fire giant / frost giant
KMONS:  5 = spark wasp / catoblepas
KMONS:  6 = storm dragon / iron dragon / titan / war gargoyle
KMONS:  7 = spriggan defender ; staff of fire | staff of cold | \
                                staff of air | staff of earth . \
                                robe ego:resistance good_item ident:type
KMONS:  8 = tengu reaver ; battleaxe ego:flaming | great sword ego:freezing | \
                           halberd ego:electrocution | lajatang ego:heavy . \
                           fire dragon scales | ice dragon scales
KMONS:  9 = red draconian / white draconian / black draconian
KMONS:  0 = red draconian monk / white draconian monk / black draconian monk
KMONS:  ! = orb of fire / electric golem / ice fiend / iron giant
KMONS:  & = ancient lich
KITEM:  $ = $ no_pickup
KITEM:  Z = midnight gem
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 ; glaive ego:antimagic
MONS:    cherub, rakshasa, angel / daeva w:15, balrug / blizzard demon
MONS:    caustic shrike, spectral quicksilver dragon
KMONS:   8 = tengu reaver
KMONS:   9 = shadow dragon
KMONS:   0 = hornet
KMONS:   & = minotaur
KMONS:   ? = spark wasp
KMONS:   ! = catoblepas
KFEAT:   _ = altar_uskayaw
# Rotate pillars, monster sets, stairs.
# No doors to aide the wasps, but still use doors to nerf the birds.
SHUFFLE: vb, ABCDEF, 2345+ / 6789+ / 0&!?-, {}, {[(, }])
SUBST:   A = c, B : c., C : c., DEF- = .
MAP
      xx.@...xx
    xxxvvvcbbbxxx
   xxvvv$$c$$bbbxx
  xxvv.........bbxx
 xxvv...b.4.v...bbxx
xxvv.3.bb+c+vv.4.bbxx
xbb...bb2...2vv...vvx
.b**bbb...B...vvv%%v.
.b*bb....A.C....vv%v.
.bbb....F1..D}...vvv@
.nnnnn.E.._..E.nnnnn.
@bbb...{D..1F....vvv.
.b%bb....C.A....vv*v.
.b%%bbb...B...vvv**v.
xbb...bb3...3vv...vvx
xxvv.5.bb+c+vv.2.bbxx
 xxvv...b.5.v...bbxx
  xxvv.........bbxx
   xxvvv$$c$$bbbxx
    xxvvvvcbbbxx
     xx....@.xx
ENDMAP

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

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

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

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

NAME:    minmay_guarded_unrand_majin_bo
ORIENT:  float
DEPTH:   Depths, Crypt
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
TAGS:    vaults_hard vaults_orient_e
DEPTH:   D:13-, Vaults, !Vaults:$
ORIENT:  float
WEIGHT:  3 (Vaults), 10
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
TAGS:    vaults_hard vaults_orient_n
DEPTH:   D:12-, Vaults, !Vaults:$
WEIGHT:  5 (Vaults), 10
ORIENT:  float
ITEM:    glaive_of_the_guard no_pickup
SUBST:   b : bxcmG.T
NSUBST:  3:9 / 4=9. / ., 8 = 2:8 / 6=8.. / .
MAP
vvvvvvv@vvvvvvv
v...v*v.v*v...v
v8b8.*n.n*.8b8v
v.8.v*v.v*v.8.v
vv.vvvv.vvvv.vv
v.9.vv.9.vv.9.v
v.b9..9b9..9b.v
v.9.vv...vv.9.v
vv.vvvvnvvvv.vv
vv.vvv...vvv.vv
v.8.v..*..v.8.v
v8b8..*d*..8b8v
v...v..*..v...v
vGvGvv...vvGvGv
vvvvvvvvvvvvvvv
ENDMAP

NAME:    cheibrodos_frozen_isle
TAGS:    transparent no_item_gen no_monster_gen no_pool_fixup vaults_hard
DEPTH:   D:8-, Vaults, !Vaults:$, Zot
WEIGHT:  5 (Vaults), 10
ORIENT:  float
MONS:    ice statue
: if you.branch() == "Zot" then
# No blinking off, no scorching.
MONS:    white draconian stormcaller / white draconian annihilator / \
         white draconian monk / white draconian knight ; glaive ego:freezing . \
                                                         cloak
MONS:    white draconian ; halberd ego:freezing . cloak
NSUBST:  . = 1:{} / 1 = ):50 / 1 = ]:40 >
NSUBST:  - = 4:2 / 4:3 / 2 = 233 / *:.
SHUFFLE: {([, })]
: elseif you.branch() == "Vaults" then
MONS:   ironbound frostheart, arcanist / white very ugly thing w:2
NSUBST: - = 2:2 / 2:3 / 2 = 233 / *:.
: else
:   if you.depth() > 11 then
MONS:   arcanist / deep elf knight w:2, ice devil
NSUBST: - = 3:2 / 3:3 / 2 = 233 / *:.
:   else
MONS:   ice devil, ufetubus
NSUBST: - = 4:2 / 4:3 / 4 = 23 / *:.
:   end
: end
NSUBST: ' = 5=*$ / *:%
KPROP:  '123$%* = no_tele_into
KMASK:  '123$%* = opaque
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
TAGS:    no_item_gen no_monster_gen no_descent
DEPTH:   D:6-11
ORIENT:  float
MONS:    rust devil, orc warrior
ITEM:    scimitar / scimitar good_item w:1
ITEM:    halberd / halberd good_item w:1
ITEM:    war axe / war axe good_item w:1
ITEM:    morningstar / morningstar good_item w:1
ITEM:    plate armour / plate armour good_item w:1
ITEM:    chain mail / chain mail good_item w:1
SHUFFLE: defg
KPROP:   ')+12defghi = no_tele_into
MAP
    .....
  ...vnv...
 ..nvvAvvn..
 .vvv1'1vvv.
..vd'''''ev..
.vvv'''''vvv.
.vh+'2G2'+iv.
.vvv'''''vvv.
..vf'''''gv..
 .vvv'''vvv.
 ..nvv)vvn..
  ...vnv...
    .....
ENDMAP

NAME:   cheibrodos_quashed
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:4-8
ORIENT: float
MONS:   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
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:7-11
ORIENT: float
KMONS:  - = sixfirhy
KITEM:  - = star_item / w:1 superb_item / w:1 demon blade ego:electrocution / \
            w:1 glaive ego:electrocution / w:1 broad axe ego:electrocution
MAP
..@..
.vnv.
.n-n.
.v=v.
.....
ENDMAP

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

NAME: cheibrodos_quadrivalence
TAGS: no_item_gen no_monster_gen no_pool_fixup no_descent
DEPTH: D:12-, Depths
ORIENT: float
: if you.in_branch("Depths") then
MONS: smoke demon / 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
TAGS: no_item_gen no_monster_gen
DEPTH: D:11-, Depths
ORIENT: float
: if you.in_branch("Depths") then
MONS: tzitzimitl, hell knight / skeletal warrior / w:2 lich
: else
MONS: tormentor
MONS: 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
TAGS:   no_item_gen no_monster_gen
DEPTH:  Spider, Snake
ORIENT: float
: if you.in_branch("Spider") then
MONS:   wolf spider w:5 / tarantella / redback, demonic crawler / orb spider
MONS:   spark wasp
: else
MONS:   anaconda w:5 / black mamba / water moccasin, mana viper, shock serpent
: end
ITEM:   star_item w:60 / staff of air / lightning rod w:20
NSUBST: " = 1:2 / 1:1 / 3=12., ' = 1:2 / 1:1 / 3=12., - = 2:3, ` = 2=*% / *:%
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
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:7-11
ORIENT: float
MONS:   place:D:14 skeleton w:5 / place:D:14 zombie, shadow imp, hellwing
KMONS:  t = withered plant
: if you.depth () < 10 then
NSUBST: . = 3:1 / 3=1. / 3:2 / 2=2., " = 1:*% / 3 = $%., 3 = 1:3 / *:.
: else
NSUBST: . = 5:1 / 3=1. / 3:2 / 2=2., " = 1:*% / 5 = $%.
: end
SUBST:  . = .....--__tG
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
TAGS: no_item_gen no_monster_gen
DEPTH: D:2-4
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
TAGS: no_item_gen no_monster_gen
DEPTH: D:3-6
ORIENT: float
KPROP: w;W = no_tele_into
MONS: kobold ; club / kobold ; dagger, hobgoblin ; club
MONS: kobold brigand ; dart ego:poisoned | dart ego:curare w:5 \
          . club | w:3 dagger ego:venom | w:3 dagger ego:draining \
              | w:3 dagger ego:speed
NSUBST: - = 2=1 / 2=12., " = 3=1 / 3=12. / ., ' = 3 / 3. / 1. / ., ` = *% / %
SUBST: ; = WWWw
MAP
               WWWWW
   xxxxxxx    WW;;;WWW
 xxx-----xxxWWW;www;xxxxxx
@...-----..xxxxxxwxxx''``x
@...xxmxx.."""""xmx..''``x
 xxxxwwwxxx""""""""..xxxxx
  WW;;w;;Wxxxxxx"""xxx
   WWWWWWWWW   xxxxx
     WWW
ENDMAP

NAME:   cheibrodos_fertilizer
TAGS:   no_item_gen no_monster_gen no_tele_into
DEPTH:  D:2-8
ORIENT: float
KMONS:  A = fungus / toadstool
: 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')
NSUBST: ' = 3:1 / 5 = 1. / 1:% / 2 = %.
NSUBST: " = 5:2 / 5 = 2' / 1:3 / 2 = 3` / 2:d / 3 = d` / *:`
NSUBST: A = 2 = dAA` / 1:`, B = 2 = dAA. / 1:`
NSUBST: C = 2 = dAA` / 1:`, D = 2 = dAA` / 1:`
FTILE:  `ABCDd = floor_mud
COLOUR: `ABCDd = brown
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, orc priest band , orc
SUBST:  ' : cG.w
: if you.depth() == 4 or you.depth() == 3 and crawl.coinflip() then
SUBST:  1 = 2
: end
MAP
 ...........
..ccccccccc.
.ccc........
.cc..'3..'..
.c$........@
@nT.1.......
.c$........@
.cc..'3..'..
.ccc........
..ccccccccc.
 ...........
ENDMAP

NAME: cheibrodos_statue_roulette
TAGS: no_item_gen no_monster_gen
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:8-, Elf
ORIENT: float
ITEM:   robe good_item / cloak good_item / scarf / pair of boots good_item \
        / pair of gloves good_item / hat good_item
ITEM:   randbook w:40 / any magical staff
: if you.in_branch("D") then
MONS:   arcanist / orc sorcerer, occultist, deep elf annihilator
:   if you.depth() < 11 then
NSUBST: " = 1:1 / 1:1... / *:., - = 1:d / 1:*% / 1:%$.. / *:.
:   elseif you.depth() < 13 then
NSUBST: " = 1:1 / 1:112... / *:., - = 1:de / 1:|* / 1:%$ / *:.
:   else
NSUBST: " = 1:2 / 2 = 1. / 1:23.. / *:., - = 1:d / 1:e / 1:|* / 1:%$ / *:.
:   end
: else
MONS:   deep elf sorcerer / deep elf annihilator
NSUBST: " = 2:1 / 3 = 1. / ., - = 1:d / 1:e / 2 = |* / 1:*% / 1:%$.. / *:.
: end
SHUFFLE: AB / CD / EF
SUBST:   A = ., B = W, CDEF = w
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 transparent no_descent
# Allow placement in Vaults as a room.
TAGS:    vaults_hard preserve_wall passable
DEPTH:   Crypt, D:12-, Depths, Elf, Snake, Vaults, Zot
ORIENT:  float
KMASK:   -UT_QR12345defg|*$+ = opaque
ITEM:    any book, any manual, any jewellery good_item
ITEM:    robe good_item / cloak good_item / scarf good_item \
         / pair of boots good_item / pair of gloves good_item / hat good_item
# Do this nsubst now so some branches can adjust monster placement.
NSUBST:  4 = 4 / 2=433 / 2=53 / 3, 3 = 3=3 / 3=3222 / 2
NSUBST:  ' = d2 / 2, 2 = 2=211- / 6=2 / 4=2--- / -
# Monster glyph counts after these nsubst:
# 1:0-2 (ave 1.0), 2:6-12 (ave 7.5), 3:3-6 (ave 3.75), 4:1-3 (ave 1.66)
# 5:0-2 (ave 1)
: if you.in_branch("Crypt") then
MONS:    phantasmal warrior
MONS:    necromancer / vampire mage / vampire knight / deep elf death mage \
         / eidolon
MONS:    revenant / ancient champion / lich, ancient lich / dread lich
SUBST:   4 = 23, 5 = 4
: elseif you.in_branch("D") then
MONS:    glass eye
MONS:    boggart / kobold demonologist / deep elf pyromancer w:5 / \
         deep elf zephyrmancer w:5 / tengu conjurer
MONS:    arcanist w:5 / occultist w:5 / necromancer / orc sorcerer / ogre mage
MONS:    deep elf annihilator / deep troll earth mage / sphinx / 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 / arcanist / 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:    glass eye / great orb of eyes / glowing orange brain \
         / phantasmal warrior
MONS:    boggart / rakshasa / ogre mage / occultist / 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
MONS:    nagaraja / salamander tyrant
SUBST:   5 = 4, 4 = 23
: elseif you.in_branch("Zot") then
MONS:    ghost moth / death cob / curse toe
MONS:    nonbase draconian / protean progenitor w:2
MONS:    ancient lich / dread lich, orb of 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 no_descent
DEPTH:   D:8-, Depths
ORIENT:  float
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:    any jewellery good_item, any jewellery randart
# Choose random landing site with exit placed far from this.
SHUFFLE: Qq / Rr / Ss
NSUBST:  q = q / '
SUBST:   RSrs = '
: if you.in_branch("D") then
:   if you.depth() < 10 then
MONS:    slime creature, glowing orange brain / great orb of eyes
NSUBST:  ' = de / 2=|* / *% / -, - = 4=1 / 5=1. / 2. / .
:   elseif you.depth() < 13 then
MONS:    slime creature
MONS:    glowing orange brain / great orb of eyes / eye of devastation
NSUBST:  ' = de / 2=|* / * / %$-- / -, - = 4=1 / 6=1. / 2=2. / .
:   else
MONS:    slime creature
MONS:    glowing orange brain / great orb of eyes / eye of devastation \
         / golden eye / shining eye
MONS:    acid blob / azure jelly / rockslime
NSUBST:  ' = d / e / 2=|* / *% / %$-- / -
NSUBST:  - = 4=1 / 6=1. / 2 / 2. / 2=3. / .
:   end
# Depths
: else
MONS:    slime creature
MONS:    glowing orange brain / shining eye / glass eye / golden eye \
         / eye of devastation
MONS:    acid blob / azure jelly / rockslime
NSUBST:  ' = 2=d / f / 3=|* / * / %$-- / -
NSUBST:  - = 4=1 / 6=1. / 2 / 2=2. / 3=3 / 4=3. / .
: end
MARKER:  P = lua:transp_loc("jiyva_chamber_entry")
MARKER:  Q = lua:transp_dest_loc("jiyva_chamber_entry")
MARKER:  q = lua:transp_loc("jiyva_chamber_exit")
MARKER:  Z = lua:transp_dest_loc("jiyva_chamber_exit")
COLOUR:  c = green
COLOUR:  n = lightgreen
KFEAT:   _ = altar_jiyva
MAP
    ccccccc
   ccscccscc
  cc''cRc''cc
 .cq'-----''c.
 .ncc-----ccn.
@Pnn---_--QnnZ@
 .ncc-----ccn.
 .cq'-----''c.
  cc''cSc''cc
   ccrcccrcc
    ccccccc
ENDMAP

NAME:   gammafunk_beogh_shrine
TAGS:   no_monster_gen no_trap_gen no_descent
DEPTH:  D:7-, Orc
ORIENT: float
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:   cloak good_item / scarf good_item / helmet good_item \
        / hat good_item / pair of gloves good_item / pair of boots good_item
ITEM:   cloak randart / helmet randart / hat randart / pair of gloves randart \
        / pair of boots randart
NSUBST: R = R / -
: if you.in_branch("D") then
:   if you.depth() < 10 then
MONS: orc, ogre / w:40 orc warrior / w:5 troll / w:5 two-headed ogre
MONS: orc wizard / orc priest
MONS: cyclops / ogre mage / orc knight
NSUBST: - = 4=1 / 4=1. / 2=2 / 2=2. / 3=3 / 4=3. / 4... / .
NSUBST: ' = de / 2=|* / *% / 3=$ / .
:   elseif you.depth() < 13 then
MONS: orc / orc wizard / orc priest
MONS: ogre / w:30 orc warrior / two-headed ogre / cyclops / troll
MONS: orc sorcerer / orc high priest / ogre mage
MONS: w:20 orc knight / ettin / orc warlord / stone giant
NSUBST: - = 6=1 / 6=1. / 3=2 / 3=2. / 3 / 3. / 4... / .
NSUBST: ' = de / 2=|* / * / %$.. / 3=$ / .
:   else
MONS: orc priest / orc warrior / cyclops, two-headed ogre / orc knight w:20
MONS: orc sorcerer / orc high priest / ogre mage
MONS: ettin / orc warlord / stone giant
NSUBST: - = 5=1 / 5=1. / 3=2 / 4=2. / 3 / 3=3. / 4 / 2=4. / .
NSUBST: ' = d / f / 2=|* / *% / %$.. / 3=$ / .
:   end
# Orc
: else
MONS: orc / orc wizard / orc priest
MONS: orc warrior / two-headed ogre / orc knight
MONS: orc high priest / orc sorcerer, ettin / orc warlord / stone giant
NSUBST: - = 5=1 / 5=1. / 3=2 / 4=2. / 3 / 2=3. / 4 / 4. / .
NSUBST: ' = d / e / 2=|* / %$ / 3=$ / .
: end
KFEAT:  _ = altar_beogh
MARKER: P = lua:transp_loc("beogh_ambush_entry")
MARKER: Q = lua:transp_dest_loc("beogh_ambush_entry")
MARKER: R = lua:transp_loc("beogh_ambush_exit")
MARKER: S = lua:transp_dest_loc("beogh_ambush_exit")
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 no_descent
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 no_descent
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 no_descent
DEPTH:  D:3-13
ORIENT: float
KMASK:  LM = no_item_gen
ITEM:   wand of flame
ITEM:   any blast wand / any beam wand
ITEM:   wand of mindburst / wand of paralysis \
        / wand of charming / wand of polymorph w:5
MONS: shadow imp, orc priest, kobold demonologist
MONS: deep elf knight / fire crab / orc high priest / orc sorcerer
KMONS:  p = plant
KFEAT:  p = W
KFEAT:  - = iron_grate
: if you.depth() <= 5 then
NSUBST: L = 1:1 / 1=12N / N, M = 1:1 / 1=12N / N, N = 1:2 / 3..... / .
SUBST: * = ., | = *
# Always place one wand, and make it more likely to be flame
SUBST: D = d:20 e f
: elseif you.depth() <= 8 then
NSUBST: L = 1:1 / 1:2 / 2=12N / N, M = 1:1 / 1:2 / 2=12N / N
NSUBST: N = 1:3 / 1=3. / 4..... / .
SUBST: | = .
# 50% chance to place one, 50% chance to place two
SHUFFLE: DEF / HJK
: else
NSUBST: L = 1:2 / 1:3 / 2=23N / N, M = 1:2 / 1:3 / 2=23N / N
NSUBST: N = 1:4 / 2=4. / .
# 25% chance to place one, 75% chance to place two
SHUFFLE: DEF / HJK / HJK / HJK
: end
SHUFFLE: JK
SUBST: D = def, EFH = ., J = de, K = ef, t = ttTU, W=WWWWWp
MARKER: P = lua:transp_loc("wand_slinger_entry")
MARKER: Q = lua:transp_dest_loc("wand_slinger_entry")
MARKER: R = lua:transp_loc("wand_slinger_exit")
MARKER: S = lua:transp_dest_loc("wand_slinger_exit")
MAP
 .................
 .nnnnnnnnnnnnnnn.
 .nGpnLLLLLLL-WGn.
 .np.nwwwwwwwn.pn.
..n.En..WWW..n*$n..
@PnQD+..WtW..+|RnS@
..n.Fn..WWW..n*$n..
 .np.nwwwwwwwn.pn.
 .nGpnMMMMMMM-WGn.
 .nnnnnnnnnnnnnnn.
 .................
ENDMAP

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

NAME:  gammafunk_mikee_crab_dinner
TAGS:  no_monster_gen no_trap_gen patrolling
DEPTH: D:10-, Depths, Lair:3-, Swamp, Zot
ORIENT: float
KMONS: F = apocalypse crab
KITEM: F = |
: if you.in_branch("D") then
MONS:  fire crab, ghost crab, entropy weaver
: elseif you.in_branch("Depths") then
MONS:  apocalypse crab
KMONS: 2 = apocalypse crab
KMONS: 3 = flayed ghost
KITEM: 2 = *
SUBST: = = +, E = D
: elseif you.in_branch("Lair") then
MONS:  fire crab, ghost crab, entropy weaver
SUBST: c = x
: elseif you.in_branch("Swamp") then
MONS:  ghost crab, apocalypse crab, spriggan druid
SUBST: c = xxxt
: elseif you.in_branch("Zot") then
MONS:  apocalypse crab
KMONS: 2 = apocalypse crab
KMONS: 3 = curse toe
KITEM: 2 = *
SUBST: = = +, E = D
: end
SUBST: D = 1., E = 2.
NSUBST: 3 = 2:3 / 3.
{{
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 no_descent
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
# TODO: add scrolls of poison when appropriate
# Replaces a gold pile in late Dungeon
: item(dgn.good_aux_armour)
# Monsters appropriate for the cloud type must be defined in order of
# cloud_types and come in pairs. Some levels define a more difficult monster on
# '2', otherwise the monster is repeated.
: if you.in_branch("D") then
:   if you.depth() <= 6 then
:       cloud_types = {"flame", "freezing vapour", "poison gas"}
KMONS:  1 = fire bat
KMONS:  2 = nothing
KMONS:  34 = ice beast
KMONS:  56 = ogre zombie ; giant club ego:venom | giant spiked club ego:venom \
           / orc warrior zombie ; hand axe ego:venom | war axe ego:venom \
               | short sword ego:venom | long sword ego:venom \
               | flail ego:venom | mace ego:venom \
           / gnoll sergeant zombie ; spear ego:venom | trident ego:venom
# In earliest 3 levels, thin out monsters and downgrade loot a bit.
SUBST:  | = %, ' = -
NSUBST: 1 = 1 / 2 / 1- / 1---- / -
:   elseif you.depth() <= 9 then
:      cloud_types = {"flame", "freezing vapour", "poison gas", "acidic fog"}
MONS:   fire bat, fire elemental / hell hound
MONS:   ice beast, simulacrum place:D:15
MONS:   water moccasin
KMONS:  6 = ogre zombie ; giant club ego:venom | giant spiked club ego:venom \
           / orc warrior zombie ; hand axe ego:venom | war axe ego:venom \
               | short sword ego:venom | long sword ego:venom \
               | flail ego:venom | mace ego:venom \
           / gnoll sergeant zombie ; spear ego:venom | trident ego:venom
KMONS:  7 = jelly
KMONS:  8 = acid dragon
SUBST:  | = *
NSUBST: 1 = 2=1 / 2 / 12-, $ = f / $
:   elseif you.depth() <= 12 then
:     cloud_types = {"flame", "poison gas", "acidic fog"}
MONS: fire bat / fire elemental, hell hound w:20 / fire crab
MONS: water moccasin w:40 / cane toad / black mamba
KMONS:  4 = two-headed ogre zombie \
               ; dire flail ego:venom | great mace ego:venom \
               . giant club ego:venom | giant spiked club ego:venom \
           / orc knight zombie ; war axe ego:venom | battleaxe ego:venom \
               | long sword ego:venom | great sword ego:venom \
               | dire flail ego:venom | great mace ego:venom \
           / tengu warrior zombie ; 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 no_descent
DEPTH:  Lair, D:10-, Swamp
ORIENT: float
: item(dgn.good_aux_armour)
: item(dgn.randart_aux_armour)
ITEM:   any good_item jewellery, any randart jewellery
KMONS:  p = briar patch
MONS:   swamp worm
: if you.in_branch('D') then
:   if you.depth() < 12 then
KFEAT:  ^ = 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 tile:thelm_hat_explorer, hat randart tile:thelm_hat_explorer
ITEM:    any jewellery good_item, any jewellery randart
: item(dgn.loot_potions .. " / " .. dgn.loot_scrolls)
# We use boulder beetles at every depth, and lava snakes need a shared marker
# definition, so defined here.
KMONS:   2 = boulder beetle
KMONS:   L = lava snake
KMONS:   p = plant
KFEAT:   KL = l
# Outer rock with normal tile, and inner chamber statues for Tomb theme in late
# Dungeon and Spider.
KFEAT:   a = x
KFEAT:   qr = G
# Randomize corpse and corpse loot loctions.
SHUFFLE: dgF
# Replace a small number of outer chamber walls with floor or trap.
SUBST:   E = xD
NSUBST:  H = D / x
: if you.in_branch("D") then
:     if you.depth() < 12 then
KMONS:   1 = redback / jumping spider w:5
KMONS:   3 = lindwurm
KFEAT:   3^ = 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 no_descent
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

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

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

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

NAME:   dreamdust_black_sun_cult
TAGS:   transparent no_monster_gen
ORIENT: float
DEPTH:  D:13-, Zot
COLOUR: bm = red
TILE:   m = dngn_transparent_wall_red
FTILE:  -mA1 = floor_volcanic
MARKER: ! = lua:fog_machine { cloud_type='flame', pow_min = 10, pow_max = 10, \
                              delay = 10, size = 1, excl_rad = 0 }
NSUBST: - = 2=2 / 2=2- / 3=3 / 3=3- / -
: if you.in_branch("D") then
KMONS:  1 = demonspawn black sun
KMONS:  2 = sun demon
KMONS:  3 = small abomination / large abomination
KITEM:  1 = manual of fire magic w:5 / manual of necromancy w:5 / \
            randbook disc:fire disc2:necromancy spells:scorch \
            slevels:8 numspells:4 title:The_Black_Sun, \
            staff of fire / staff of death / scroll of immolation q:3 / \
            scroll of torment q:3 / any weapon ego:flaming / \
            any weapon ego:draining
: else
KMONS:  1 = orb of fire
KMONS:  2 = demonspawn black sun
KMONS:  3 = draconian scorcher / draconian monk
KITEM:  1 = manual of fire magic / manual of necromancy, \
            randbook disc:fire disc2:necromancy spells:starburst \
            slevels:25 numspells:4 title:The_Black_Sun, \
            any weapon ego:flaming randart / any weapon ego:draining randart
: end
MAP
 .........
..!bbbbb!..
.!bb---bb!.
.bb-----bb.
.b--mAm--b.
.b--m1m--b.
.b--mmm--b.
.bb-----bb.
.!bb---bb!.
..!bb+bb!..
 .........
ENDMAP

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

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

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

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

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

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

NAME:    dreamdust_tengu_aerie
TAGS:    no_monster_gen no_item_gen no_pool_fixup no_descent
DEPTH:   Depths, !Depths:$
ORIENT:  float
TILE:    G = dngn_statue_tengu
: set_feature_name("granite_statue", "a statue of a tengu")
SUBST:   x = x:60 . A
SUBST:   b = b:80 .
KFEAT:   > = escape_hatch_down
KITEM:   $> = gold w:30 / nothing / star_item / superb_item
KMONS:   $ = nothing w:60 / tengu warrior / \
             tengu conjurer / tengu reaver
MAP
  wwwwwwwwwwwwwwwwwww@@
 wwwwwwwwwwwwwwwwwwwww@
wwwwwwxxxxxxxxxxxwwwwww
wwwxxxx.........xxxxwww
wwxx....bbbbbbb....xxww
wwx..bbbb.....bbbb..xww
wwx.bb...cc.cc...bb.xww
wwx.bG.ccc$$$ccc.Gb.xww
wwx.b..c$$$$$$$c..b.xww
ww..b..c$$$>$$$c..b.xww
wwx.b..c$$$$$$$c..b.xww
wwx.bG.ccc$G$ccc.Gb.xww
wwx.bb...ccccc...bb.xww
wwx..bbbb.....bbbb..xww
wwxx....bbb.bbb....xxww
wwwxxxx.........xxxxwww
wwwwwwxxxxxxxxxxxwwwwww
 wwwwwwwwwwwwwwwwwwwww
  wwwwwwwwwwwwwwwwwww
ENDMAP

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

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

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

# All those mummy chaos knights have to rest somewhere.
NAME:    skrybe_chaotic_catacombs
TAGS:    no_monster_gen
DEPTH:   D:12-, Depths
ORIENT:  float
: if you.in_branch("D") then
MONS:    vampire ; rapier ego:chaos | long sword ego:chaos . ring mail
MONS:    skeletal warrior, flayed ghost
MONS:    guardian mummy ; orcbow ego:chaos | longbow ego:chaos . \
                          quarterstaff ego:chaos
MONS:    ugly thing, chaos spawn
MONS:    dancing weapon ; mace ego:draining | hand axe ego:draining | \
                          spear ego:draining
KMONS:   0 = shapeshifter
KMONS:   B = shapeshifter zombie
KMONS:   C = shapeshifter simulacrum
KMONS:   D = spectral shapeshifter
KMONS:   E = unseen horror
KMONS:   F = vampire mage
KMONS:   G = golden eye band
KMONS:   H = rakshasa ; demon whip ego:chaos | demon trident ego:chaos | \
                        demon blade ego:chaos
SUBST:   3 = .
NSUBST:  7 = 1:B / 1:C / *:., I = 1:I / *:2, 8 = 1:. / 1:8. / *:8
: else
MONS:    guardian mummy ; orcbow ego:chaos | longbow ego:chaos . \
                          quarterstaff ego:chaos
MONS:    vampire knight ; great sword ego:chaos | war axe ego:chaos . \
                          chain mail | plate armour
MONS:    ancient champion, lich
MONS:    very ugly thing, cacodemon
MONS:    dancing weapon ; great mace ego:draining | \
                          battleaxe ego:draining | glaive ego:draining
KMONS:   0 = glowing shapeshifter
KMONS:   B = glowing shapeshifter zombie / apis zombie
KMONS:   C = glowing shapeshifter simulacrum / fire giant simulacrum
KMONS:   D = spectral glowing shapeshifter / spectral pearl dragon
KMONS:   E = phantasmal warrior
KMONS:   F = mummy priest god:Xom
KMONS:   G = tentacled monstrosity
KMONS:   H = reaper ; halberd itemname:scythe \
                      tile:wpn_scythe wtile:scythe ego:chaos
: end
ITEM:    potion of mutation q:4 ident:all
ITEM:    potion of ambrosia q:4 ident:all / \
         flux talisman randart / talisman of death randart w:5 / \
         randbook owner:Xom disc:alchemy disc2:necromancy numspells:6
KFEAT:   _ = altar_xom
KFEAT:   ? = altar_kikubaaqudgha mimic
KFEAT:   ! = altar_yredelemnul mimic
NSUBST:  9 = 3:0 / 1:1 / 2:2 / 1:E / 5 = 1E 0:30 / *:., I = 1:4 / 1:6 / *:.
NSUBST:  A = 2:8 / 2 = 8. / *:., 8 = 1:3 / 1:4 / 1:6 / 1:7 / 2:H / * = 36E 0:30
SHUFFLE: BCD
NSUBST:  ' = 6:$ / 6:* / 4:; / *:., $ = 6:* / * = $% .:20
NSUBST:  ; = 1:d / 3:| / * = $% .:20, | = 1:e / *:|
SUBST:   v : xv
# Mashing up Crypt, Yred, and Kiku colours in both tiles and console.
COLOUR:  ` = magenta
TILE:    x = wall_undead_magenta / wall_undead_darkgray
TILE:    v = dngn_metal_wall_red / dngn_metal_wall_cyan
FTILE:   `+ = floor_pebble_magenta / floor_pebble_red
FTILE:   ._$%*|?!12345670BCDEF = floor_tomb
MAP
  ccccccccccccccccccccccccccccccccc
  ccccccccccccccccccccccccccccccccc
ccccc........`.'''3'''.`........ccccc
cccc..........`.'''''.`..........cccc
ccc.....vv.....`.'''.`.....vv.....ccc
ccc.....vv7.....`F.F`.....7vv.....ccc
ccc..vv....vv..I.`.`.I..vv....vv..ccc
ccc..vv....vv....._.....vv....vv..ccc
ccc.....vv.......`.`.......vv.....ccc
ccc.....vv......`...`......vv.....ccc
ccc..........cc`.....`cc..........ccc
cccc........ccccc...ccccc........cccc
cccccc``ccccc...........ccccc``cccccc
ccc........c;....vvv....;c........ccc
ccc.......cc;...vvvvv...;cc.......ccc
ccc....9cccc*...9vvv9...*cccc9....ccc
ccc...8cccccc8.........8cccccc8...ccc
ccc..ccccccccc..||G||..ccccccccc..ccc
ccc.....ccccccccccccccccccccc.....ccc
ccc........cc...ccccc...cc........ccc
ccc........`......c......`........ccc
cccccc.09..`....$$c$$....`..90.cccccc
ccccccccc..c...$$1c1$$...c..ccccccccc
cccccc.....c...5$$c$$5...c.....cccccc
cccc.......cc....ccc....cc.......cccc
ccccc....9ccccccccccccccccc9....ccccc
ccccc....ccccccccccccccccccc....ccccc
  cccc..ccccA.....9.....Acccc..ccccc
  ccc..1..c...............c..1..ccc
  ccc.B...c...vvv9.9vvv...c...C.ccc
  cccB....+..Avvv...vvvA..+....Cccc
  ccc.B...+..vvv.._..vvv..+...C.ccc
  ccc..4..c..vvv.....vvv..c..4..ccc
  cccc...cc......?.!......cc...cccc
  cccccccccc.............cccccccccc
    ccccccccccccc+++ccccccccccccc
ENDMAP

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

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

# A revival of an ancient Elf endvault, now refurbished
# for D / V elementals meeting with elves instead.
NAME:   dpeg_index_elf_rogue_hall
TAGS:   no_monster_gen no_item_gen no_rotate no_trap_gen no_pool_fixup
TAGS:   vaults_hard vaults_orient_s
DEPTH:  D:9-, Vaults
WEIGHT: 5 (Vaults), 10
ORIENT: float
: if you.in_branch("D") then
:   if you.depth() < 12 then
MONS:   orc wizard, deep elf pyromancer, deep elf archer
MONS:   sky beast, fire bat, ice beast, shapeshifter
NSUBST: 3 = 2:1
:   else
MONS:   deep elf pyromancer / deep elf archer, deep elf knight
MONS:   deep elf zephyrmancer, gargoyle
MONS:   fire elemental, water elemental, glowing shapeshifter
:   end
SUBST:  z = c
NSUBST: 4 = 1:. / 1:4 / * = 4., 56 = 3:., ? = 2:. / 3 = 23.. / * : 23
: else -- Vaults
MONS:   deep elf death mage / deep elf high priest
MONS:   deep elf sorcerer / deep elf demonologist w:5
MONS:   deep elf annihilator, glowing shapeshifter
MONS:   war gargoyle, crystal guardian, golden dragon / storm dragon
SUBST:  @ = ., c = x
NSUBST: 2 = 1:14 / *:2, 23 = 1:., 4 = 1:. / 2:4 / * = 4., 56 = 4:.
NSUBST: 7 = 1:. / 1:56 / *:7, ? = 2 = 1. / 2 = 1233... / * : 233
NSUBST: % = 2:| / 4:% / *:$
CLEAR:  z
: end
KFEAT:  ^ = teleport trap
KITEM:  | = any book w:5 / any magical staff / any ring / any amulet / \
            any misc / any wand w:5
SUBST:  ! = 56
MAP
 zzzzzzzzzzzzzzzzzzz   zzzzzzzzzzzzzzzzzzz
zzcccccccccccccccccc   cccccccccccccccccczz
zccccc$$+e...3..%|ccccccc|%..2....c$$cccccz
zcc..c$.c....7..%%ccccccc%%..7....c.$c..ccz
zc..%+.+cccc.7.ccccccccccccc.7.c+ccc.c.*.cz
zc.*.cc+.c.ccwcc.%.ccccc.%.cclcc.c.cc+%..cz
zcc..cc..c..ccc..c.?ccc?.c..ccc..c..cc..ccz
zcc.ccc......c...c..!U!..c...c......ccc.ccz
 cc.cc$..c......4c...?...c4......c..$cc.cc
  c.cc$$$c%%.c...%...c...%...c.%%c$$$cc.c
  c.cc$ccccccc..ccc+ccc+ccc..ccccccc$cc.c
  c.ccccc...cccccb...?...bccccc...ccccc.c
  c.ccc.......ccb...bbb...bcc.......ccc.c
  c.ccc.2.!.?.cc.6.ccccc.5.cc.?.!.3.ccc.c
  c.cc.........+.4bcccccb4.+.........cc.c
 zc.cc.........c.6bcccccb5.c.........cc.cz
zcc+ccc..c.c..cc...ccccc...cc..c.c..+cc.ccz
zcc..ccccc+cccccb...bbb...bccccc+cccc+..ccz
zc..%ccc.....ccclb...?...bwccc.....ccc%..cz
zc.%.cc.......ccccccccccccccc.......cc.%.cz
zcc..cc...!...cccc...^...cccc...!...cc..ccz
zcccccc.......ccc..cc.cc..ccc.......ccccccz
zzzzzccc.1..5..$..ccc.ccc..$..6..1.ccczzzzz
    zzccc...ccccccccc.ccccccccc...ccczz
    zzzcccccccccccccc@cccccccccccccczzz
ENDMAP

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

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

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

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

##############################################################################
# Elevator
NAME:    lemuel_elevator
TAGS:    extra luniq_staircase luniq_generic_threat_stair no_descent
DEPTH:   D:2-, !D:$, Elf:2, Crypt:2-, !Crypt:$, Zot:2-, !Zot:$
ORIENT:  float
WEIGHT:  10 (D), 5
SUBST:   m:mn
: if you.in_branch("Zot") then
KMONS:   ]}) = orb of fire / electric golem / draconian knight w:20
: elseif not you.in_branch("D") then
KMONS:   ]}) = 9
: end
KFEAT:   ] = ]
KFEAT:   } = }
KFEAT:   ) = )
SHUFFLE: ]}), [{(
MAP
mmmm
m{}m
mmmm
ENDMAP

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

##############################################################################
# Rooms
NAME:    minmay_opposing_rooms
DEPTH:   D:4-
ORIENT:  float
SHUFFLE: 0%
: if you.absdepth() < 6 then
SUBST:   9 = 0
: end
MAP
xxxxxxxxxxxxxxcccccxx
xxxx........xcc%.%ccx
xx......x...xc....%cc
xx..9..xx...x......%c
x......xx...+.......c
@....xxxx...x......%c
xxcccccxx...xc....%cc
xcc0.0ccx...xcc%.%ccx
cc0....cx...xxcccccxx
c0......x...xxxx....@
c.......+...xx......x
c0......x...xx..9..xx
cc0....cx...x......xx
xcc0.0ccx........xxxx
xxcccccxxxxxxxxxxxxxx
ENDMAP

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

##############################################################################
# Statue pair
NAME:    minmay_separated_statues
DEPTH:   D:8-
ORIENT:  float
MONS:    obsidian statue, orange crystal statue, ice statue
SHUFFLE: 123
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
DEPTH:  D:10-, Depths
SUBST:  c : ccxxb., t : ttGGbT., w : wwwl.
MAP
ccccccccccccccccccccccccccccccc
@wwwwwwwwwwwwwwwwwwwwwwwwwwwww@
@t...t...t...t...t...t...t...t@
@..............9..............@
@....0%........*........%0....@
@....0%........*........%0....@
@..............9..............@
@t...t...t...t...t...t...t...t@
@wwwwwwwwwwwwwwwwwwwwwwwwwwwww@
ccccccccccccccccccccccccccccccc
ENDMAP

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

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

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

##############################################################################
# An Ice Statue vault
NAME:    lemuel_ice_statue
TAGS:    no_pool_fixup no_descent
ORIENT:  float
DEPTH:   D:7-
MONS:    ice statue
SUBST:   * : *$, * = |:5 * .
SUBST:   T = TU
SHUFFLE: xb / cc, ABC
: if crawl.coinflip() then
KFEAT:   X = < / >
KITEM:   X = any good_item
SUBST:   A=., B=., C=.
: else
SUBST:   X=*, B=., C=.
KFEAT:   A = 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:   Lair, Swamp
ORIENT:  float
WEIGHT:  2
MONS:    plant, oklob plant, thorn hunter
SHUFFLE: ]}) / def
NSUBST:  ' = 2 / 4=11122 / 1, " = W / wwW, ` = W / wwW
SUBST:   def = |*, } = }..
: if you.in_branch("Lair") then
SUBST:   3 = ., - = x-
# Swamp
: else
NSUBST:  3 = 3 / 3.
SUBST:   x = t, - = t-, + = .
: end
CLEAR:   -
MAP
---------------
-xxxxxxxxxxxxx-
-xxxxx]})xxxxx-
-xxxxx.3.xxxxx-
-x'ww3...3ww'x-
-x'".......`'x-
-x'".......`'x-
-x'".......`'x-
-x'".......`'x-
-x'ww.....ww'x-
-xxxxxx+xxxxxx-
------- -------
ENDMAP

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

##############################################################################
# Shantytown, noun: An area containing a collection of shacks,
#                   shanties or makeshift dwellings. By Core Xii
#
NAME:   corexii_shantytown
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
TAGS:   no_descent
DEPTH:  Depths
ORIENT: float
SUBST:  x : xxxm
NSUBST: 9 = 6:. / *:9
NSUBST: 0 = 6:. / *:0
KPROP:  .089*| = no_tele_into
SUBST:  ' = .
MAP
'''''''''''''''''''''
'cccmcccccccccccmccc'
'c.....x.....x.....c'
'c..0..x..9..x..0..c'
'm.000.m.999.m.000.m'
'c..0..x..9..x..0..c'
'c.....x.....x.....c'
'cxxmxxcxxmxxcxxmxxc'
'c.....x..*..x.....c'
'c..9..x.|8|.x..9..c'
'c.999.m*8|8*m.999.c'
'c..9..x.|8|.x..9..c'
'c.....x..*..x.....c'
'cxxmxxcxxmxxcxxmxxc'
'c.....x.....x.....c'
'c..0..x..9..x..0..c'
'm.000.m.999.m.000.m'
'c..0..x..9..x..0..c'
'c.....x.....x.....c'
'cccmcccccccccccmccc'
'''''''''''''''''''''
ENDMAP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NAME:    hangedman_cross_stitches
TAGS:    transparent no_monster_gen
ORIENT:  float
DEPTH:   D:6-, !D:$, Depths, !Depths:$, Elf, Snake
WEIGHT:  5 (Elf, Snake), 10
KMONS:   0 = 0
: if you.depth() < 9 then
:   kmons("9 = place:D:" .. you.depth() + 3)
: else
KMONS:   9 = 9
: end
KITEM:   09 = % / $ w:5
SHUFFLE: XzZ / '09
SUBST:   XzZ = x, ' = ., x : x:90 c
: if you.absdepth() < 13 then
NSUBST:  0 = 4:0 / * = 00., 9 = 1:9 / 1:90 / * = 0
: end
MAP
           .....................
          .......................
         ...X..'..X..'..X..'..X...
        ...'x'XxX'x'XxX'x'XxX'x'..
       .....X..'..X..'..X..'..X...
      ...X..'..z..9..X..0..X.....
     ...'x'XxX0x0ZxZ'x'zxz'x'...
    .....X..'..z..9..X..0..X...
   ...X..0..X..9..z..'..X.....
  ...'x'zxz'x'ZxZ0x0XxX'x'...
 .....X..0..X..9..z..'..X...
...X..'..X..'..X..'..X.....
..'x'XxX'x'XxX'x'XxX'x'...
...X..'..X..'..X..'..X...
 .......................
  .....................
ENDMAP

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

NAME:    hangedman_cross_veins
TAGS:    transparent no_monster_gen no_pool_fixup
ORIENT:  float
DEPTH:   D:8-, Depths, !Depths:$, Elf, Snake, Abyss
WEIGHT:  5 (Elf, Snake), 10
KMONS:   12 = 0
KMONS:   34 = 9
KMONS:   5 = 9 / 8
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 luniq_generic_threat_stair transparent
DEPTH: Depths, !Depths:$, Crypt, !Crypt:$, Zot, !Zot:$
ORIENT: centre
SHUFFLE: )]}>
SUBST:  } = }>
SUBST:  ] = ]>
# Like the door vault, pick interesting monsters for the 8s in branches,
# but use normal OOD for D.
# Also remove the bits of loot for 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("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 / protean progenitor w:15
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 = 28:1 / 14 = 1dd / * = d.
SUBST:   X = x, 23 = 9, = : y:3 x:1, | : |:4 D:1
SUBST:   C : C:3 T:17, T = T:5 U:2 V:2 Y:1
SUBST:   x : x:13 y:1 c:1, G : G:1 c:1 y:8
SUBST:   z : y:3 v:1 b:1 x:1, y : c:13 v:1 b:1
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
TAGS:   transparent
DEPTH:  Depths
ORIENT: float
KPROP:  | = no_tele_into
KMASK:  | = opaque
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  9 = 999.
MAP
            ....             ....
            .xx...           .xx...
   ...     ..xxxx.. ...     ..xxxx..
   .x..    .xxxxxx...x..    .xxxxxx...
  ..xx...  .xx%%xxxx.xx...  .xx%%xxxx.
 ..xxxxx....xx%%xxx.xxxxx....xx%%xxx..
 .xxxxxxxxxx.9xxxx.xxxxxxxxxx.9xxxx..
..xx%%xxxxxx...xxx.xx%%xxxxxx...xxx.
.xxx%%x...x....xx.xxx%%x...x....xx..
.xxxxx9....9x..xx.xxxxx9....9x..xx.
...xxx...xxmx.xxx...xxx...xxmx.xxx.
  ....xx.9m|m9.xx..00..cc.9m|m9.xx....
     .xxx.xmxx...ccc...ccc.xmxx...xxx...
     .xx..x9....9ccccc.cc..x9....9xxxxx.
    ..xx....c...c%%ccc.cc....x...x%%xxx.
    .xxx...cccccc%%cc.ccc...xxxxxx%%xx..
   ..xxxx9.cccccccccc.cccc9.xxxxxxxxxx.
  ..xxx%%xx....ccccc.ccc%%cc....xxxxx..
  .xxxx%%xx..cc..cc9cccc%%cc..xx..xx..
  ...xxxxxx..cccc.c**9cccccc..xxxx.x.
   .x.xxxx..cccccc9**c.cccc..xxxxxx...
  ..xx..xx..cc%%cccc9cc..cc..xx%%xxxx.
 ..xxxxx....cc%%ccc.ccccc....xx%%xxx..
 .xxxxxxxxxx.9cccc.cccccccccc.9xxxx..
..xx%%xxxxxx...ccc.cc%%cccccc...xxx.
.xxx%%x...x....cc.ccc%%c...c....xx..
.xxxxx9....9x..cc.ccccc9....9x..xx.
...xxx...xxmx.ccc...ccc...xxmx.xxx.
  ....xx.9m|m9.cc......xx.9m|m9.xx....
     .xxx.xmxx...xxx...xxx.xmxx...xxx...
     .xx..x9....9xxxxx.xx..x9....9xxxxx.
    ..xx....x...x%%xxx.xx....x...x%%xxx.
    .xxx...xxxxxx%%xx.xxx...xxxxxx%%xx..
   ..xxxx9.xxxxxxxxxx.xxxx9.xxxxxxxxxx.
  ..xxx%%xx....xxxxx.xxx%%xx....xxxxx..
  .xxxx%%xx.  ...xx.xxxx%%xx.  ...xx..
  ...xxxxxx.    ..x...xxxxxx.    ..x.
    ..xxxx..     ... ..xxxx..     ...
     ...xx.           ...xx.
       ....             ....
ENDMAP

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

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

NAME:   minmay_octo_star
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_funnel
TAGS:   no_trap_gen no_monster_gen no_descent
ORIENT: float
DEPTH:  D:12-, !D:$
MAP
  ccc
 ccGcc
cc...cc
cG...Gccccccccccccccccc
c......GcGcGcGcGcGcG..cc
c..{..............8..}.c
c......GcGcGcGcGcGcG..cc
cG...Gccccccccccccccccc
cc...cc
 ccGcc
  ccc
ENDMAP

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

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

NAME:   kennysheep_cluttered_fort
DEPTH:  D:14-, Depths, !Depths:$
ORIENT: float
NSUBST: % : 1:|
SUBST:  % = *
SUBST:  9 = 9900.
: ks_random_setup(_G)
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: nicolae_legendary_halls
DEPTH: Depths, !Depths:$
TAGS: transparent
ORIENT: float
SUBST: + : +..., $ = $$$$%*, % = %%%%$*, * = ****%|, 0 = 0009.., 9 = 998.
MAP
       cccc.@@.cccc
      cc$.c....c.$cc
     cc%..c....c..*cc
     c$.0.c.00.c.8.$c
     c....+....c....c
  cccccccccccc+c+ccccccc
 cc$.c....+....c....c.$cc
cc*..c.9..c....c..9.c..%cc
c$.8.c..9.c0..0c.9..c.0.$c
c....+....c....c....c....c
ccccccccccc....cccc+c+cccc
.....+..0........0..c.....
@..0.c......99......c.0..@
@..0.c......99......c.0..@
.....c..0........0..+.....
cccc+c+cccc....ccccccccccc
c....c....c....c....+....c
c$.0.c..9.c0..0c.9..c.8.$c
cc%..c.9..c....c..9.c..*cc
 cc$.c....c....+....c.$cc
  ccccccc+c+cccccccccccc
     c....c....+....c
     c$.8.c.00.c.0.$c
     cc*..c....c..%cc
      cc$.c....c.$cc
       cccc.@@.cccc
ENDMAP

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

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

####

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

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

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

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

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

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

NAME:    minmay_heptahexagon
DEPTH:   D:12-, Depths
ORIENT:  float
ITEM:    book of debilitation / book of hexes / book of misfortune
# randomize how open the hexagons are to each other
SUBST:   M : xx+., N : +@, O : +++.
# each hex other than the center either has monsters+loot, or nothing
SHUFFLE: ABCDEF / GHIJKL
SUBST:   BCDEF = A, HIJKL = G
SUBST:   A = *, G = 0009, 8 = 998
# feature randomization
SUBST:   x : xcvb
SUBST:   ! : xcvb m:3 G:3 t:3 .:49
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
TAGS:   no_descent
DEPTH:  D:8-, Depths
ORIENT: float
KMONS:  8 = 8
KITEM:  8 = |
KPROP:  8 = no_tele_into
SUBST:  c : cvb, x : xcvb
MAP
 xxxxxx@xx
 x...x...x
 x.xx..x.x
 x.xxx...x
 xx.xxx.xx
ccnn=xxx.x
c888n.xx.x
c888nx...x
cc88cxxxxx
 cccc
ENDMAP

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

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

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

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

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

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

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

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

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

NAME:   minmay_roachtagon
DEPTH:  D: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 no_descent
ORIENT: float
MAP
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vv9...........]vv
vv0............vv
vv..vvvv.vvvn..vv
vv..v......9v..vv
vv..v.......v..vv
vv..v..*$%..v..vv
vv..v..$|$..v..vv
vv..v..%$*..v..vv
vv..v.......v..vv
vv..v9......v..vv
vv..nvvv.vvvv..vv
vv............0vv
vv[...........9vv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
ENDMAP

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

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

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

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

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

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

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

NAME:   gammafunk_sealed_arena
TAGS:   no_monster_gen no_trap_gen transparent no_descent
# 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
KMASK:  -QR189de|*$ = opaque
ITEM:   any jewellery good_item
ITEM:   cloak good_item / scarf good_item / helmet good_item / hat good_item \
        / pair of gloves good_item / pair of boots good_item
KITEM:  R = |
: if you.in_branch("Shoals") or you.in_branch("Spider") then
MONS:   orange crystal statue
: else
MONS:   orange crystal statue / obsidian statue
: end
# In earlier Dungeon depths, one d item and remove 1/3 of the 9 spawns
# on-average.  Elsewhere place one d item and one e item and don't reduce the 9
# spawns.
: if you.in_branch("D") and you.depth() < 12 then
SUBST: 1 = 1---, 9 = 99-, " = d, ' = $
: elseif you.in_branch("D") then
SUBST: 1 = 1-
: end
SUBST:  " = $, h : b-, i : b-
: if you.in_branch("Spider") or you.in_branch("Swamp") then
SUBST:  b : cx
: else
SUBST:  b : bcvx
: end
NSUBST: ' = d / e / $
MARKER: P = lua:transp_loc("sealed_arena_entry")
MARKER: Q = lua:transp_dest_loc("sealed_arena_entry")
MARKER: R = lua:transp_loc("sealed_arena_exit")
MARKER: S = lua:transp_dest_loc("sealed_arena_exit")
MAP
  ...........
 ..nnnnnnnnn..
 .nn9------nn.
 .nG-hi9ih-Gn.
 .n--ih-hi$*n.
..n9-----8'|n..
@Pn--Q-1--"RnS@
..n9-----8'|n..
 .n--ih-hi$*n.
 .nG-hi9ih-Gn.
 .nn9------nn.
 ..nnnnnnnnn..
  ...........
ENDMAP

NAME:    gammafunk_its_a_trap
TAGS:    no_monster_gen no_trap_gen no_tele_into no_item_gen transparent no_descent
# Allow placement in the Vaults branch as a room.
TAGS:    vaults_hard passable
DEPTH:   Crypt, D:14-, Depths, Elf, Snake, Pan, Vaults, Zot
ORIENT:  float
KMASK:   -+QR^01289de$*| = opaque
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:    any randart jewellery
KFEAT:   ^ = 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 w:20 / demonspawn black sun w:5 / \
             demonspawn blood saint w:5 / demonspawn corrupter w:5 / \
             demonspawn warmonger w:5
KMONS:   2 = executioner / brimstone fiend / ice fiend / tzitzimitl \
           / hell sentinel
SUBST:   8 = 29, 9 = 01
: elseif you.in_branch("Zot") then
KMONS:   1 = ancient lich w:5 / dread lich w:5 / protean progenitor / \
             orb of 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 no_descent
# Allow placement in the Vaults branch as a room.
TAGS:   vaults_hard passable
# This must not place on a branch end so it can place a downhatch.
DEPTH:  Crypt, !Crypt:$, D:13-, !D:$, Depths, !Depths:$, Pan, Vaults, !Vaults:$
DEPTH:  Zot, !Zot:$
ORIENT: float
KMASK:  -QRHK012389def$*| = opaque
{{
-- Guarantee at least 5 charges, and on-average give 50% more than usual.
item("wand of digging 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 w:20 / demonspawn black sun w:5 / \
            demonspawn blood saint w:5 / demonspawn corrupter w:5 / \
            demonspawn warmonger w:5
KMONS:  3 = executioner / brimstone fiend / ice fiend / tzitzimitl \
           / hell sentinel
SUBST:  8 = 39, 9 = 02, H = K
:   elseif you.in_branch("Zot") then
KMONS:  2 = ancient lich w:5 / dread lich w:5 / orb of 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-----mmmmmmmmmmmmmpfm*mfc`
 `c-----mmmmmmmmmmmmmmmmmmmp`
 `c-----mmmmmmmmmmmmmp*memep`
..p-----mmmmmmmmmmJJmmmmmmmp..
@PpQ-d---------mmmHJmp|mRm|pS@
..p-----mmmmmmmmmmJJmmmmmmmp..
 `c-----mmmmmmmmmmmmmp*memep`
 `c-----mmmmmmmmmmmmmmmmmmmp`
 `c-----mmmmmmmmmmmmmpfm*mfc`
 `ccccccppppmFFFEmmmmccccccc`
 ``````ccp1mmFFFEEmmmcc``````
      `cccccccccccccccc`
      `cccccccccccccccc`
      `cccccccccccccccc`
      ``````````````````
ENDMAP

NAME:    emtedronai_trogs_sanctum
TAGS:    no_monster_gen no_trap_gen no_tele_into no_item_gen transparent no_descent
# Allow placement in the Vaults branch as a room.
TAGS:    vaults_hard passable
DEPTH:   D:13-, Orc, Depths, Vaults
ORIENT:  float
KMASK:   ap+-_Y$*defgDEQ1234567 = opaque
KMASK:   = = opaque
KPROP:   -_$*defgDEQ123456 = bloody w:5 / nothing
KITEM:   _ = necklace of bloodlust no_pickup / wrath of trog no_pickup
ITEM:    manual of armour w:30 / manual of fighting w:30 / \
         manual of long blades / manual of axes / manual of maces & flails / \
         manual of polearms / manual of dodging / manual of shields
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 / arcanist / occultist / deep elf pyromancer / \
         / deep elf zephyrmancer / boggart / necromancer
: elseif you.in_branch("Orc") then
KMONS:   1 = patrolling stone giant / patrolling ettin
KMONS:   2 = troll w:15 / two-headed ogre w:15 / cyclops w:5 / deep troll w:5 \
         / orc knight
# The orcs mostly offer naughty elves to Trog's Sanctum, with a few naughty
# orcs and ogres thrown in.
KMONS:   3 = orc sorcerer w:5 / ogre mage w:5 / deep elf pyromancer w:30 \
         / deep elf zephyrmancer w:30 / deep elf sorcerer \
         / deep elf demonologist / deep elf annihilator
KMONS:   7 = deep elf elementalist
SUBST:   5 = 7, p = m
: elseif you.in_branch("Vaults") then
KMONS:   1 = patrolling ettin / patrolling iron troll
KMONS:   2 = two-headed ogre / cyclops / deep troll w:15 / stone giant
KMONS:   3 = arcanist / boggart / deep elf annihilator / deep elf demonologist \
          / deep elf sorcerer / deep elf high priest / titan / lich
# 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
DEPTH:  D:4-
ORIENT: float
SUBST:  x : cvb
SUBST:  " : xcvbn .:50
SUBST:  ' : xcvbn .:50
SUBST:  0 = 0.
MAP
xxxxxxxx
@.....0xxxxxxx
x.'..'.+....0x
x..""..x.'.'.x
x..""..x.."..x
x.'..'.x.'0'.x
x0.....x0...0x
xnxxxxxnxxx+xx
x9.+000x0..0x
x..x0"0x0''.x
xx+x000+.''0x
 x|nxxxx0..0x
 xxx   xxxxxx
ENDMAP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NAME:   nicolae_fronds_of_death
TAGS:   transparent
DEPTH:  D:12-, Depths
ORIENT: float
SUBST:  0 = ....0009, 9 = .....99998, % = %%%%***|
MAP
ccccc                 ccccc
cG%%ccc             ccc%%Gc
c%..v9ccc         ccc9v..%c
c%.8..+9ccc @@@ ccc9+..8.%c
ccv...v.+9ccc.ccc9+.v...vcc
 c9..9..x.+0c+c0+.x..9..9c
 cc+v...v.x.+.+.x.v...v+cc
  c9...0..x.x.x.x..0...9c
  cc+xv...v0x.x0v...vx+cc
   c9....0..x.x..0....9c
   cc+xxv...v0v...vxx+cc
    c0..0..0...0..0...c
   @cc+xxxv.....vxxx+cc@
   @.+....0..G..0....+.@
   @cc+xxxv.....vxxx+cc@
    c0..0..0...0..0..0c
   cc+xxv...v0v...vxx+cc
   c9....0..x.x..0....9c
  cc+xv...v0x.x0v...vx+cc
  c9...0..x.x.x.x..0...9c
 cc+v...v.x.+.+.x.v...v+cc
 c8..9..x.+.c+c.+.x..9..8c
ccv...v.+9ccc.ccc9+.v...vcc
c%.8..+9ccc @@@ ccc9+..8.%c
c%..v8ccc         ccc8v..%c
cG%%ccc             ccc%%Gc
ccccc                 ccccc
ENDMAP

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