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

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

##############################################################################
# Dummy probability balancer vault for depths 1-11.
#
# Why this is necessary: there are very few vaults in the 1-11 range (entries
# are not considered here); to avoid too much repetition of the existing vaults,
# we use this dummy vault.
#
NAME: dummy_balancer
DEPTH: D:1-11
# Vaults tagged "dummy" are no-ops when the dungeon builder is looking for maps
# by depth.
TAGS: dummy
ORIENT: float
WEIGHT: 100
MAP
x
ENDMAP

##############################################################################
# Dummy probability balancer vault for non-dungeon branches.
#
NAME: dummy_balancer_other
DEPTH: 1-, !D
# Vaults tagged "dummy" are no-ops when the dungeon builder is looking for maps
# by depth.
TAGS: dummy
ORIENT: float
WEIGHT: 60
MAP
x
ENDMAP

################################################################################
# Elevator
#
NAME:    lemuel_elevator
DEPTH:   D, Vault, Elf, Crypt, Zot, Tar, Dis, Geh, Coc
ORIENT:  float
TAGS:    allow_dup
SUBST:   m:mn
SHUFFLE: {}, ]}) , [{(
MAP
mmmm
m{}m
mmmm
ENDMAP

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

##############################################################################
# Old Forge (1KB)
#
NAME:    old_forge
DEPTH:   D:4-12
ORIENT:  float
KITEM:   ? = long sword unrand:singing_sword, damaged short sword, \
             damaged long sword, damaged hand axe
KITEM:   ! = damaged executioner's axe, damaged short sword, \
             damaged long sword, damaged morningstar
KITEM:   + = damaged eveningstar, damaged short sword, \
             damaged long sword, damaged war axe
KITEM:   & = damaged hammer / nothing
MONS:    fungus, plant
MONS:    giant mite, scorpion
MONS:    rat / grey rat, green rat / orange rat
MONS:    giant bat
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 , .=........17
MAP
              xxxxxxxxxxxxxxxx
             xxx11'cccccccxxxx
            xxx'...c..?v3cx1xx
           xx111.3.c&'.v3c14xx
           x111'.......&&c4xxx
           xxx3.11..1xxccc.44x
             xxx.1.1113x..'xxx
              xxx'&..11.'xxx
               x1xxx'..xxx
               xxx xx'.'xx
                    xxx44xxxx
                      xx'.44xx
                       xxxx.'x
                          xx@x
ENDMAP

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

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

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

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

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

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

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

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

#####################################################
# Lions and Tigers and Bears, oh my! (or at least bears)
#
NAME:   lemuel_bear_cage
DEPTH:  D:7-21
MONS:   bear / black bear / grizzly bear / polar bear
MONS:   hippogriff / griffon
MONS:   yak / sheep / weight:3 death yak
MONS:   hound / wolf / hog
SUBST:  1 = 1:30 2 3 4 .
MAP
cccccccccc
c.1.1.1.1c
c1.1.1.1.c
c.1.1.1.1c
c1.1.1.1.c
c.1.1.1.1c
cnn++++nnc
..........
@........@
..........
xxxxxxxxxx
ENDMAP

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


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

#############################################################################
# Oklob shooting range
#
# Disallowing this vault on branch starts, as brown stairs can't help there.
# Chance for a plant to turn oklob based on dungeon level. Elf:7 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:    oklob_3
DEPTH:   D:18-26, Lair:2-, Elf:2-7
WEIGHT:  2
ORIENT:  float
SHUFFLE: ab" / AB'
SUBST:   a=[, b=(, A=., B=., '=., "=>
#
SUBST:   x : y:1 x:5 .:34
SUBST:   x = x:2 .
SHUFFLE: xcv
SUBST:   y = x
#
NSUBST:  1 = 1:2 1:3 *:1
: wt = (you.absdepth()-10)/2
: mons("oklob plant w:" .. wt .. " / plant")
MONS:    plant, oklob plant
MAP
xxxxxxxxxxxxxxx
xxxx...1...xxxx
xx...........xx
xx...........xx
x......"......x
x......'......x
x1...aA{Bb...1x
x......'......x
x......"......x
xx...........xx
xx...........xx
xxxx...1...xxxx
xxxxxxxxxxxxxxx
ENDMAP

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

###########################
# Another low-level vault - LP

NAME:    reptile_caves
DEPTH:   D:10-13, Lair, Snake
ORIENT:  float
MONS:    giant gecko / giant newt, crocodile, iguana
MONS:    fire drake / swamp drake
MONS:    snake, water moccasin, viper
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/567
SUBST:   X=x.
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxXW**wXxxxxxxxxxxxxxxX**XXx
xXwWwwwXxxxxxxX33xxxxxX423Xx
xXWww232XxxxxX121xxxxX.13Xxx
xXXWww2XxxxxxX.1xxxxxw222Xxx
xxXXWwwwaaxxxxXWxxaaaw1121Xx
xxxXWww1XaaaaaWwaaaxXWw211Xx
xxxxXW23xxxxxaWwwxxxXww11XXx
xxxxXX1XxxxxxxxWwwxxxxX.Xxxx
xxxxxxX.XxxxXwWwwwxxx...Xxxx
xxxxxxx..Xxxx2xWwxxX..XXxxxx
xxxxxxxX.12111xw3X211bxxxxxx
xxxxxxxxxxXXXxxW2xxxxbbxxxxx
xxxxxxxxxxxxxxxw1Xxxxxbbxxxx
xxxxxxxxxxxxxXww1Xxxxxxbxxxx
xxxxxxxxxxxXwwww111@...Xxxxx
ENDMAP

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

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

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

##############################################################################
# A variety of statues, with loot. (1KB)
#
NAME:    statue_cache
ORIENT:  north
TAGS:    no_monster_gen
DEPTH:   D:12-20, Elf, Vault
MONS: statue name:archer name_adjective tile:mons_statue_crossbow ; crossbow \
      ego:flame . bolt q:30
MONS: statue name:archer name_adjective tile:mons_statue_crossbow ; crossbow \
      ego:frost . bolt q:30
MONS: statue name:warrior name_adjective tile:mons_statue_axe ; battleaxe \
      ego:flaming good_item
MONS: statue name:warrior name_adjective tile:mons_statue_axe ; battleaxe \
      ego:freezing good_item
MONS: statue name:warrior name_adjective tile:mons_statue_mace ; great mace \
      ego:flaming good_item
MONS: statue name:warrior name_adjective tile:mons_statue_mace ; great mace \
      ego:freezing good_item
MONS: silver statue
KMONS: 8 = statue name:wizard name_adjective tile:mons_statue_mage \
           spells:lehudib's_crystal_spear;iskenderun's_mystic_blast;slow;stone_arrow
KMONS: 9 = statue name:wizard name_adjective tile:mons_statue_mage \
           spells:freezing_cloud;mephitic_cloud;throw_icicle;confuse
MAP
  cccccccccccccc
  cccccccc7ccccc
  cccccc.....ccc
  cccc..ccccc.cc
  ccc.ccccc5c.cc
  ccc.cccccc.ccc
  cc8.9cc3c.c6cc
  c$$$$$cc.ccccc
  c|*|*|c.c4cccc
ccccccccc.ccccccccc
........1.2........
...................
...................
 .................
   .............
      ...@...
ENDMAP

##############################################################################
# The Shining One Protects a Powerful Item 1 (by abrahamwl)
#
# The basic theme of this vault is that the the Shining one has placed a
# powerful item under the guard of an angel or daeva
#
NAME:    protected_by_tso_1
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup allow_dup luniq_protected_by_tso
WEIGHT:  4
DEPTH:   23-27
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
COLOUR:  - : yellow
SUBST:   - : +
KMASK:   + = no_secret_doors
MARKER:  ! = lua:message_at_spot ( "You almost think you hear a voice: \
                                   \"Seek not undue power, mortal.\"", \
                                   "warning" )
SUBST:   ! : .
MAP
         xxxxx
   xxxxxxxXXXxxxxxxx
   xXXXXXXX1XXXXXXXx
   xX|...-...-...|Xx
   xXXXXXX...XXXXXXx
   xxxxxXX...XXxxxxx
     xxxXG...GXxxx
    xxxxXX...XXxxxx
    xXXXXX...XXXXXx
    xXxxxx---xxxxXx
    xX...........Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX.....1.....Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX...........Xx
    xXXXXXX-XXXXXXx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

##############################################################################
# The Shining One Protects a Powerful Item 2 (by abrahamwl)
#
# The basic theme of this vault is that the the Shining one has placed a
# powerful item under the guard of an angel or daeva
#
NAME:    protected_by_tso_2
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup allow_dup luniq_protected_by_tso
WEIGHT:  4
DEPTH:   18-27
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:   A = altar_shining_one
KITEM:   A = w:1 acquire:the_shining_one any / nothing
: if crawl.one_chance_in(3) then
SUBST:   | = .
SUBST:   % = |
SUBST:   ? = =
: else
SUBST:   % = X
SUBST:   ? = X
: end

COLOUR:  _ : yellow
SUBST:   _ : .
SUBST:   T = T F:1
COLOUR:  - : yellow
SUBST:   - : +
KMASK:   + = no_secret_doors
MARKER:  ! = lua:message_at_spot ( "You almost think you hear a voice: \
                                   \"Seek not undue power, mortal.\"", \
                                   "warning" )
SUBST:   ! : .

MAP
    xxxxxxxxxxxxxx
  xxxXXXXXXXXXXXXXxxx
  xXXX_____A_____XXXx
  xX%?Wwwww_wwwwW=|Xx
  xXXXxWwww_wwwWxXXXx
  xxxXxxWWw_wWWxxXxxx
   xXXxxxx._.xxxxXXx
   xxXxxxx---xxxxXxx
    xX...........Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX.....1.....Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX...........Xx
    xXXXXXX-XXXXXXx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

##############################################################################
# The Shining One Protects a Powerful Item 3 (by abrahamwl)
#
# The basic theme of this vault is that the the Shining one has placed a
# powerful item under the guard of an angel or daeva
#
NAME:    protected_by_tso_3
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup allow_dup luniq_protected_by_tso
WEIGHT:  4
DEPTH:   18-27
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:   A = altar_shining_one
KITEM:   A = w:1 acquire:the_shining_one any / nothing
: if crawl.one_chance_in(3) then
SUBST:   | = .
SUBST:   % = |
SUBST:   ? = =
: else
SUBST:   % = X
SUBST:   ? = X
: end
COLOUR:  _ : yellow
SUBST:   _ : .
SUBST:   T = T F:1
COLOUR:  - : yellow
SUBST:   - : +
KMASK:   + = no_secret_doors
MARKER:  ! = lua:message_at_spot ( "You almost think you hear a voice: \
                                   \"Seek not undue power, mortal.\"", \
                                   "warning" )
SUBST:   ! : .
MAP
      xxxxxxxxxxx
     xxxxxXXXxxxxx
    xxxxxxX|Xxxxxxx
    xXXXXXX=XXXXXXx
   xxXWWWWTATWWWWXx
  xxxXW.._____..WXx
  xXXXWt..___..tWXx
  xX%?W...___...WXx
  xXXXWt..___..tWXx
  xxxXxxxx---xxxxXx
    xX...........Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX.....1.....Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX...........Xx
    xXXXXXX-XXXXXXx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

###########################################################################
# Eyes! by Minmay
NAME:   minmay_eyes
DEPTH:  D:14-24
ORIENT: float
MONS:   eye of devastation / great orb of eyes w:2
MONS:   giant eyeball / shining eye w:2
MONS:   giant orange brain
MAP
...................................
.cccccccccccc.........cccccccccccc.
.c.............................n2c.
.c.1.............1.............nnc.
.c...............................c.
.c...cccccccccnnnnnnnccccccccc...c.
.c...c.......................c...c.
.c...c.1.........1.........1.c...c.
.c...c.......................c...c.
.c...c...ccccccnnnnncccccc...c...c.
.c...c...c...............c...c...c.
.c...c...c.1.....1.....1.c...c...c.
.c...c...c...............c...c...c.
.n...c...c...cccnnnccc...c...c...n.
.n...n...c...c3.....3c...c.......n.
.n...n...n...c..%.%..c...n.......n.
.n...n...n.....%|*|%.n...n.......n.
.n.1.n.1.n.1....*|*..n.1.n.1...1.n.
.n...n...n.....%|*|%.n...n.......n.
.n...n...n...c..%.%..c...n.......n.
.n...n...c...c3.....3c...c.......n.
.n...c...c...cccnnnccc...c...c...n.
.c...c...c...............c...c...c.
.c...c...cnn.....1.....1.c...c...c.
.c...c...c2n.............c...c...c.
.c...c...cccccc.....cccccc...c...c.
.c...c.......................c...c.
.c...c.1.........1.........nnc...c.
.c...c.....................n2c...c.
.c...cccccccccnnnnnnnccccccccc...c.
.c...............................c.
.c.1.............1.............1.c.
.c...............................c.
.ccccccccccccnnnnnnnnncccccccccccc.
...................................
ENDMAP

##############################################################################
# Elemental Laboratory (by Mu.)
#
NAME:   elemental_lab_mu
DEPTH:  D:13-26, Elf:1-6
ORIENT: float
FLAGS:  no_monster_gen no_item_gen no_pool_fixup
MARKER: ! = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 1, size_buildup_amnt = 5, \
                size_buildup_time = 25, cloud_type = "flame" \
            }
MARKER: ? = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 1, size_buildup_amnt = 5, \
                size_buildup_time = 25, cloud_type = "thin mist" \
            }
MARKER: * = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 1, size_buildup_amnt = 5, \
                size_buildup_time = 25, cloud_type = "black smoke" \
            }
KMONS:  1 = fire elemental
NSUBST: ; = 3:2 / *=.ll
KMONS:  2 = molten gargoyle
KMONS:  e = earth elemental
SUBST:  E = exxx....
NSUBST: ' = 3:3 / 3:W / *:.
KMONS:  3 = clay golem
NSUBST: w = 3:4 / *:w
KMONS:  4 = water elemental
KFEAT:  4 = deep_water
NSUBST: " = 3:5 / *:.
KMONS:  5 = vapour
KMONS:  6 = air elemental
KMONS:  7 = fire vortex
#
: if you.in_branch("elf") then
KMONS:  Z = col:gila deep elf sorcerer \
        name:deep_elf_elementalist n_rpl n_des \
        spells:iron_shot;summon_air_elementals;sticky_flame;\
        summon_water_elementals;haste;blink actual_spells \
        ; robe ego:fire_resistance race:elven | \
        robe ego:cold_resistance race:elven | \
        robe ego:resistance race:elven . dagger ego:freezing race:elven | \
        dagger ego:flaming race:elven | dagger ego:electrocution race:elven
: else
KMONS:  Z = col:gila wizard hd:15 name_descriptor \
        name:master_elementalist name_replace \
        spells:iron_shot;summon_air_elementals;sticky_flame;\
        summon_water_elementals;haste;blink actual_spells \
        ; robe ego:fire_resistance | robe ego:cold_resistance | \
        robe ego:resistance \
        . dagger ego:freezing | dagger ego:flaming | \
        dagger ego:electrocution
: end
KITEM:  B = randbook disc:air / randbook disc:fire / randbook disc:ice / \
            randbook disc:earth
KITEM:  | = staff of fire / staff of cold / staff of earth / staff of air / \
            quarterstaff unrand:elemental_staff
MAP
       ccccccccc
      ccE+'''cwcc
     ccEEc'''cwwcc
    ccEEEc'''cwwwcc
   ccEEEEc'''cwwwwcc
  ccEEEEEc'''cwwwwwcc
 ccEEEEEEc''Wcwwwwwwcc
ccEEEEEEEc'WW+wwwwwwwcc
cEEEEEEEEcccccwwwwwwwwc
ccccccc+ccB|Bcccccccc+c
c;;;;;;;c$...$c"""""""c
c;;;;;;;c$.Z.$c""?"?""c
c;;;;;;;c$...$c"""""""c
c+cccccccc...cc+ccccccc
c........c+++c........c
cc..!1.!1c...c.6..6..cc
 cc......c7.7c......cc
  cc.....c...c.....cc
   cc.1!.c.*.c.6..cc
    cc...c...c...cc
     cc..c.7.c..cc
      cc.c...+.cc
       c+ccccccc
        @
ENDMAP

##############################################################################
# Ancient Champions (by Mu., lua by due)
#
NAME:   ancient_champions_mu
DEPTH:  D:15-26, Vault, Crypt
ORIENT: float
FLAGS:  no_item_gen no_monster_gen
KFEAT:  ABCDEFG = metal_wall
KMONS:  1 = col:gold skeletal warrior name:ancient_champion name_replace \
        name_descriptor spells:iron_shot;.;haste;pain;.;. actual_spells \
        ; plate mail ego:fire_resistance | plate mail ego:cold_resistance . \
        great sword ego:pain | great sword ego:draining | great sword \
        ego:flaming | w:3 triple sword ego:vorpal
KMONS:  2 = col:gold skeletal warrior name:ancient_champion name_replace \
        name_descriptor spells:bolt_of_draining;.;haste;throw_frost;.;. \
        actual_spells ; plate mail ego:fire_resistance | plate mail \
        ego:cold_resistance . great mace ego:vorpal | great mace ego:draining
KMONS:  3 = col:gold skeletal warrior name:ancient_champion name_replace \
        name_descriptor spells:venom_bolt;.;haste;haunt;.;. actual_spells \
        ; plate mail ego:fire_resistance | plate mail ego:cold_resistance . \
        battleaxe ego:vorpal | battleaxe ego:pain | \
        w:3 executioner's axe ego:vorpal
KMONS:  4 = col:gold skeletal warrior name:ancient_champion name_replace \
        name_descriptor spells:iskenderun's_mystic_blast;slow;haste;.;.;. \
        actual_spells ; plate mail ego:fire_resistance | plate mail \
        ego:cold_resistance . great sword ego:pain | great sword ego:draining \
        | great sword ego:flaming | battleaxe ego:vorpal | battleaxe ego:pain \
        | triple sword ego:vorpal | executioner's axe ego:vorpal
: local ac_desc = "The unfathomably ancient " ..
:    "skeleton of a humanoid creature. It has hundreds of golden sigils " ..
:    "etched onto its bones, and pulses with terrible, unholy power.\n"
SHUFFLE: 123
KPROP:  ]v.1234+ABCDEFG!n$wr|" = no_rtele_into
KITEM:  w = acquire weapon
KITEM:  r = acquire armour
NSUBST: $ = 1:w / 1:r / 4:| / *:$
COLOUR: " = yellow
KFEAT:  " = .
MARKER: 1 = lua:MonPropsMarker:new { description=ac_desc }
MARKER: 2 = lua:MonPropsMarker:new { description=ac_desc }
MARKER: 3 = lua:MonPropsMarker:new { description=ac_desc }
MARKER: 4 = lua:MonPropsMarker:new { description=ac_desc }
{{

-- First off, slave marker magic.
lua_marker("A", portal_desc { skele_slave=1 })
lua_marker("B", portal_desc { skele_slave=2 })
lua_marker("C", portal_desc { skele_slave=3 })
lua_marker("D", portal_desc { skele_slave=4 })
lua_marker("E", portal_desc { skele_slave=5 })
lua_marker("F", portal_desc { skele_slave=6 })
lua_marker("G", portal_desc { skele_slave=7 })

-- Then the actual function which does everything.
function skele_death (data, triggerable, triggerer, marker, ev)
  data.skele_number = data.skele_number + 1

  -- Only 7 skeles!
  if data.skele_number > 7 then
    return
  end

  local function get_slave (slavenum)
    local myslaves = dgn.find_marker_positions_by_prop("skele_slave", slavenum)
    return myslaves[1]
  end

  local wall_pos = get_slave(data.skele_number)
  if wall_pos == nil then
    crawl.mpr("Couldn't find a slave!")
  end

  dgn.terrain_changed(wall_pos.x, wall_pos.y, "floor", false, false, false)

  if you.see_cell(wall_pos.x, wall_pos.y) then
    crawl.mpr("As the champion is destroyed, a metal wall slides away!")
  else
    crawl.mpr("As the champion is destroyed, you hear a distant grinding noise.")
  end
end

local skele_death_marker = TriggerableFunction:new {
  func=skele_death,
  repeated=true,
  data={skele_number=0} }

skele_death_marker:add_triggerer(DgnTriggerer:new {
  type="monster_dies",
  target="ancient champion" })

lua_marker("]", skele_death_marker)
}}

MAP
vvvvvvvvvvvvvvvvvvv
v..".1v.."..v.."..v
v.""".v.""".v.""".v
v"""""C"""""B"""""v
v.""".v.""".v.""".v
v.."..v..".3v..".2v
vvvDvvvvvvvvvvvAvvv
v..".2v$$$$$v.."..v
v.""".v$$$$$v.""".v
v"""""v$$.$$v"""""v
v.""".v$$.$$v.""".v
v.."..v$...$v1."..v
vvvEvvvvvGvvvvv+vvv
v3."..v.."..v.."..v
v.""".v.""".v.""".v
v"""""F"""""v""]""v
v.""".v.""".v.""".v
v.."..v4."..v.."..v
vvvvvvvvvvvvvvvvvvv
ENDMAP
