##############################################################################
# mini_monsters.des: This is the place for minivaults with monsters.
#           So all vaults in this file should have no ORIENT lines but they
#           should contain MONS or KMONS lines.
#
#           Vaults with ORIENT lines are stored in float.des or large.des.
#           Minivaults without monsters go to mini_features.des.
#           Maps for the Vault branch, including Vaults:8 are in vaults.des.
#
#
# <<1>> Invertebrae        (insects, spiders, worms)
# <<2>> Vertebrae          (mammals, reptiles, also serpents, dragons)
# <<3>> Humanoids          (including centaurs, spriggans)
# <<4>> Demons and undead
# <<5>> Fixed shooters     (statues, oklobs, fog generators)
# <<6>> Others             (golems, slime denizens, insubstantial monsters)
# <<7>> Random             (using 8,9,0 or too many monsters to categorise)
# <<8>> Guardians          (thematic vaults centered around special items)
# <<9>> Classics           (ancient minivaults and extensions)
#
# Often, a vault will fit in two categories. Choose the one you think fits
# best or else delegate to Random or Others. Be picky with Guardians, please.
###############################################################################

default-depth: D:9-27, Vault, Elf

###############################################################################
#
# <<1>> Invertebrae
#       Insects, spiders, worms
#
###############################################################################

NAME:  minmay_newt_pond
DEPTH: D:1-2
KMONS: 1 = giant newt
KFEAT: 1 = W
SUBST: W = WWW1
MAP
 ......
..WWWW.
.WWWWW..
.WWWWWW.
.WWWWWW.
..WWWW..
 ......
ENDMAP

NAME:  minmay_bat_box
DEPTH: D:2-4
MONS:  bat / nothing w:5
MAP
    ....
   ......
  ........
 ..xxxxxx..
...x1111x...
...x1111x...
...x1111x...
...x1111x...
 ..x++++x..
  ........
   ......
    ....
ENDMAP

NAME:    eino_jars
DEPTH:   D:4-14
TAGS:    extra luniq_mini
SHUFFLE: 11%
: if you.absdepth() >7 then
MONS:    killer bee / nothing w:5
SUBST:   % = %*
: else
MONS:    killer bee larva
: end
MAP
xxxxxx
x1111x
x1111x
x++++x
@....@
ENDMAP

# Closed beehive
# Should work without explicit floor margin (dp)
NAME:  hive_lemuel
DEPTH: D:9-27,Hive:*
MONS:  killer bee, yellow wasp, red wasp, spiny worm
SUBST: ? : .w
SUBST: 1 = 1 a:2
SUBST: 1 : 1:15 2 3:2 4:1
SUBST: * : * R:3
KITEM: R = w:2 honeycomb / w:1 royal jelly
MAP
  ????????
 ??????????
???aaaaaa???
??aaaaaaaa??
??aa1111aa??
??aa1**1aa??
??aa1**1aa??
??aa1111aa??
??aaaaaaaa??
???aaaaaa???
 ??????????
  ????????
ENDMAP

# Beehive minivault
NAME:  minivault_7
TAGS:  allow_dup
MONS:  patrolling queen bee, patrolling killer bee, killer bee larva
KITEM: R = w:2 honeycomb / w:1 royal jelly
MAP
............
....aaaa....
..a2a2aaaa..
..aaRa3a2a..
.aa2aRa2aaa.
.a3aRa1aRa2.
.aa3aRaRa2a.
.aaa2a2a3aa.
..a3aRa2aa..
...aa2aa2a..
....aaaa....
............
ENDMAP

# Not Minivault 9 (by Mu.)
NAME:   not_minivault_9_mu
TAGS:   allow_dup
WEIGHT: 1
DEPTH:  D:15-27, Elf, Vault
MONS:   butterfly
MARKER: X = lua: props_marker { connected_exclude="true" }
SUBST:  X = =
MAP
XXXXXXXXXX
XxXXXXXXXX
XXXXXXXXXX
XXX1111XXX
XXX1111XXX
XXX1111XXX
XXX1111XXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
ENDMAP

# Anthill
NAME: minivault_29
TAGS: allow_dup
MONS: patrolling queen ant, patrolling soldier ant
MONS: patrolling worker ant, ant larva
MAP
.3......3...
...x.xx.x.2.
.xxx2xxxxx..
.xxxx42xxx2.
.2xx243432x3
.xx421424xx.
3xx423242x..
.x2x3243xxx.
.x2xx42422x.
..xxxxxxxx2.
...x2xxxx3..
.3.......33.
ENDMAP

NAME:   zaba_anthell
DEPTH:  D:12-19, Lair:2-, Hive
TAGS:   no_rotate
MONS:   queen ant, soldier ant, worker ant, soldier ant / w:20 worker ant
SUBST:  ? = . x
MAP
     ?  ? ? ?  ?
   ??x?x?x?x?x?x??
  ??x?3?.?3?.?3?x??
 ??x.?..3.?.3.?.4x??
 ?x?4444?.2?....4?x?
?x?..?....?..?2?43?x?
 ?33.4?..?2?..?.433?
?x?3?...?212?...?3?x?
 ?334.?..?2?..?4.33?
?x?34?2?..?....?..?x?
 ?x?4....?2.?4444?x?
 ??x4.?.3.?.3..?.x??
  ??x?3?.?3?.?3?x??
   ??x?x?x?x?x?x??
     ?  ? ? ?  ?
ENDMAP

NAME:  zaba_antful_of_joy
DEPTH: D:10-17, Lair, Hive
TAGS:  no_rotate
MONS:  queen ant, worker ant w:5 / soldier ant, worker ant / nothing w:5
KFEAT: ^ = alarm trap / .
MAP
    xxxxxxxxxxx
   xx333xxx333xx
   x33333x33333x
  xxx...xxx...xxx
 xxx..x..x..x..xxx
xx.2.xxx222xxx.2.xx
x.333.x32123x.333.x
xx...xxx222xxx...xx
 xxx..x.3x3.x..xxx
  xxx.^.xxx.^.xxx
   x.....x.....x
   xx...xxx...xx
    xxx33x33xxx
      xx.^.xx
       x+++x
ENDMAP

NAME:  worms_lemuel
DEPTH: D:6-15, Lair, Hive
TAGS:  no_rotate
SUBST: W = W:20 w
: if you.absdepth() > 13 then
SUBST: 1 = 1:200 2
:end
KFEAT: 1 = W
KFEAT: 2 = W
KMONS: 1 = w:20 worm / swamp worm
KMONS: 2 = brain worm
MAP
   WWWWWWW
 WWWWWWWWWWW
WWWxxxxxxxWWW
WWWx11111xWWW
WWWx11111+WWW
WWWx11111xWWW
WWWxxxxxxxWWW
 WWWWWWWWWWW
   WWWWWWW
ENDMAP

NAME:   minmay_another_anthill
DEPTH:  D:10-21, Lair:3-, Hive, Snake:1-3
MONS:   patrolling ant larva, worker ant, soldier ant, patrolling queen ant
SUBST:  a = 1223........x
MAP
  .. .... .. .
 .xx.xxxx.xx.x.
.xx.xaxxaxxax.x.
.x..xaaaaxaaaxx.
 .xxaaxaaaaxxax.
.x.xaaaaaaaaxx.
.xxaaaaaxaaaaxx.
.x.xxaa4aaaaax.
.x.aaaaaaaaax.x.
 .xaxaaaxxaaa.x.
.x.xaaaaaxaaaxx.
 ..xaaxaaaaax.x.
.xxaxaaaaaaaax.
.x.xaaaxxaxaaxx.
.xx.x.xax.xax.x.
 .xxxx.x.x.x.xx.
  .... . . . ..
ENDMAP

NAME:  minmay_rock_worms
DEPTH: D:16-26
KMONS: 1 = generate_awake rock worm
KFEAT: 1 = rock_wall
MAP
xxxxx
x111x
x111x
xxxxx
ENDMAP

NAME:   minmay_brainsmasher
DEPTH:  D:8-26
WEIGHT: 3
MONS:   brain worm
MAP
  .....
 .......
....%....
...nnn...
..%n1n%..
...nnn...
....%....
 .......
  .....
ENDMAP


###############################################################################
#
# <<2>> Vertebrae
#       Mammals, reptiles, also dragons, serpents.
#
###############################################################################

NAME:  minmay_rat_gold_closets
DEPTH: D:1-2
MONS:  rat / grey rat w:1
SUBST: 1 = 111$
MAP
.............
.x+x+x+x+x+x.
.x1x1x1x1x1x.
.xxxxxxxxxxx.
.x1x1x1x1x1x.
.x+x+x+x+x+x.
.............
ENDMAP

NAME:  rats_and_rats_again
TAGS:  mini_float
DEPTH: D:8-14
MONS:  shadow imp
MONS:  rat w:40 / grey rat w:40 / green rat w:12 / orange rat w:1 / nothing
MAP
...........
.xxx+++xxx.
.x2222222x.
.x2222222x.
.x2222222x.
.x2222222x.
.x2221222x.
.x2222222x.
.x2222222x.
.xxxxxxxxx.
...........
ENDMAP

NAME:  minmay_rats_cheese
DEPTH: D:2-3
MONS:  rat
ITEM:  cheese
MAP
xxxxx+xxxxxxx
x1....xd1111x
x.1..xxx1111x
x..1xxxxx111x
x..xxxxxxx11x
x.xxxxxxxxx1x
x+xxxxxxxxx+x
x.xxxxxxxxx1x
x1.xxxxxxx1.x
x.1.xxxxx1.1x
x1.1.xxx1.1.x
x.1.1.+1.1.1x
xxxxxxxxxxxxx
ENDMAP

NAME:  minmay_rat_hole
DEPTH: D:2-4
MONS:  rat / grey rat w:1
ITEM:  cheese w:30 / bread ration / meat ration / nothing w:60
MAP
 xxx
xxdx
xddxx
xdddxxxx
xxxx111xx
  xx1111x
  x11111x
  x11111x
  xx11xxx
   xx@x
ENDMAP

NAME:  minmay_snake_closets
TAGS:  no_monster_gen no_item_gen
DEPTH: D:2-4
MONS:  snake / small snake
ITEM:  any scroll / any potion
SUBST: ? = 111d
MAP
   xxxxxxx.@.xxxxxxx
   x.?x..+...+..x?.x
   x..x?.x...x.?x..x
xxxx+xxxxx...xxxxx+xxxx
x..+.....x...x.....+..x
x?.x.....x...x.....x.?x
x+xx?....+...+....?xxxx
x?.x.....x...x.....x.?x
x..+.....x...x.....+..x
xxxx+xxxxx...xxxxx+xxxx
   x..x?.x...x.?x..x
   x.?x..+...+..x?.x
   xxxxxxx.@.xxxxxxx
ENDMAP

NAME:   goddamned_bats
DEPTH:  D:3-12, Lair:1-3, Orc:1-2
# Sadly, for size-based ones, only mega, micro and giga exist.  Lack of kilo
# and tera is understandable, but come on, even mili is lacking.
KMONS:  1 = bat name:megabat n_rpl n_spe
KMONS:  2 = bat name:microbat n_rpl n_spe col:magenta tile:mons_microbat
# Can we spell them this way?  Please?
KMONS:  3 = bat name:fruity n_adj n_spe col:lightmagenta tile:mons_fruity_bat
KMONS:  4 = bat name:giga n_adj n_spe hd:4 col:brown tile:mons_gigabat
# Way harder than the rest here.
KMONS:  5 = vampire bat
# In RL, they sit put, not moving a finger.  Lazy bastards.
KMONS:  6 = bat skeleton name:skeletal_bat n_rpl n_spe n_zom
# The only here without a basis in reality.
KMONS:  7 = bat simulacrum name:ice_bat n_rpl n_spe n_zom
# There are actual "ghost bats" too, but near-extinct, while ghost-faceds
# have a number of species and are widespread.
KMONS:  8 = spectral bat name:ghost-faced_bat n_rpl n_spe n_zom
# Just an US WW2 military project, but that's good enough.
KMONS:  9 = fire bat hd:1
KMONS:  0 = bat zombie name:rotten_bat n_rpl n_spe n_zom
KMONS:  A = bat name:phase n_adj n_spe col:lightgreen spells:blink tile:mons_phase_bat
MAP
       xxxxx
      xxxxxxx
     xxxx7xxx
    xxxxx.xxx
   xxx9..xxx
  xxx9..0xxx
  xx.9..xxxxx
  xxx....xxxx
  xx88.xx.xxxx
  xxxxxxxx.xxxx
 xxxxxxxxx.AAxx
xxx.4xxxx..x..xx
xxx12.xxx.xx...xx
xxxx.xxx.xxxx6..x
xxxxx.xx.xxxx66.x
xx33.x...xxxxx.xxx
xxxxxxx...xxxxx.xx
 xxxx21xx.xxxxx5xx
  xxxxxxx.xxxxxxx
    xxxx@xx
ENDMAP

NAME:   saegor_snake_ambush
TAGS:   no_monster_gen no_pool_fixup
DEPTH:  D:3-5
KMONS:  S = w:3 snake / w:4 small_snake / w:5 plant / nothing
KFEAT:  SX = W
KITEM:  X = gold
KPROP:  W = no_rtele_into
MAP
.xxxxxx.@..
.xxWStxx+xx
@+SttctWStx
.xWtctWttWx
xxtWtWtctSx
xtctWXWtctx
xStctWtWtxx
xWttWtctWx.
xxSWtcttS+@
xx+xxtSWxx.
..@.xxxxxx.
ENDMAP

# This vault can be highly OOD, which is why lindwurms are used in the
# first place; unlike most dragon-types, lindwurms are flightless.
NAME:   minmay_lindwurm_lava
TAGS:   no_monster_gen
DEPTH:  D:8-18, Lair:2-
KMONS:  1 = lindwurm
KITEM:  1 = *
SUBST:  ' : ..'l
SUBST:  ' = ..l
MAP
     .....''.....
   ....'''ll'''....
  ...''llllllll''...
 ...'llllllllllll'...
 ..'llllllllllllll'..
..'llllllllllllllll'..
..'llllll....llllll'..
.'lllll...xx...lllll'.
.'lllll..xxxx..lllll'.
.'llll..x.1*.x..llll'.
'lllll.xx*||1xx.lllll'
'lllll.xx1||*xx.lllll'
.'llll..x.*1.x..llll'.
.'lllll..xxxx..lllll'.
.'lllll...xx...lllll'.
..'llllll....llllll'..
..'llllllllllllllll'..
 ..'llllllllllllll'..
 ...'llllllllllll'...
  ...''llllllll''...
   ....'''ll'''....
     .....''.....
ENDMAP

NAME:  pond
DEPTH: D:10-27, Lair
MONS:  plant w:30 / fungus
MONS:  giant frog w:30 / giant toad / snake / rat / green rat / swamp drake w:2
MONS:  vampire mosquito
SUBST: ! : w.
SUBST: 2 : 23
SUBST: 2 = 2.
SUBST: 3 = 3.
SUBST: . = . 1:1
KFEAT: ? = *
KMONS: ? = plant
TAGS:  no_monster_gen
MAP
..wwwww...
.wwwwwwww2
.wwwwwwwww
.2wwwwwwww
..ww222ww.
.wwww222w.
wwww!!22ww
www!!!?ww.
.ww!!!www.
.2w!!!ww2.
....!!w...
ENDMAP

# Not Minivault 9 (or, elephant zoo)
NAME:   not_minivault_9_due
TAGS:   allow_dup
WEIGHT: 1
DEPTH:  D:20-27, Elf:3-5, Vault:4-8
MONS:   elephant, dire elephant, hellephant
MARKER: X = lua: props_marker { connected_exclude="true" }
SUBST:  X = =
MAP
XXXXXXXXXX
XxXXXXXXXX
XXXXXXXXXX
XXX1112XXX
XXX1321XXX
XXX1221XXX
XXX2111XXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
ENDMAP

# A plain guardian serpent vault. (nrook)
NAME:  nrook_guardian_serpent_ordinary
DEPTH: D:9-27, Snake, Crypt
TAGS:  no_monster_gen no_item_gen
: if you.branch() == "Crypt" then
MONS:  patrolling spectral guardian serpent
: else
MONS:  patrolling guardian serpent
: end
MAP
......
.xxxx.
.x**x.
.x**x.
.xx=x.
...1..
ENDMAP

# A real vault behind a false one. (nrook)
NAME:  nrook_guardian_serpent_double
DEPTH: D:9-27, Snake
TAGS:  no_monster_gen
MONS:  patrolling guardian serpent
KPROP: *| = no_rtele_into
SUBST: C = ===c
MAP
.......
.ccccc.
.c*|*c.
.ccCcc.
.n%%%n.
.n%%%n.
.cc=cc.
...1...
ENDMAP

# Things aren't always what they seem (Lemuel)
#
# Intentionally moved this deeper because explore will gladly run into the
# room, and being hit by multiple mimics is un-fun.
# Slight tweak by having a fraction (unknown to the player) of items be
# real. (dp)
NAME:  fake_guardian_serpent_vault
DEPTH: D:15-26, Vault, Elf, Snake
MONS:  mimic, patrolling guardian serpent
ITEM:  any good_item
: local b = crawl.random2(10)
: if b > 7 then
SUBST: 1 = 1d
: elseif b > 1 then
SUBST: 1 = 111d
: end
MAP
...........
.xxxxxxxxx.
.x1111111x.
.x1111111x.
.x1111111x.
.x11.2.11x.
.xxxx+xxxx.
...........
ENDMAP

NAME:  minmay_serpent_palace
TAGS:  no_monster_gen no_item_gen
DEPTH: D:18-
MONS:  naga / naga warrior w:2 / naga mage w:1, greater naga / guardian serpent
MONS:  small snake / snake / water moccasin / viper / black mamba / anaconda
MONS:  lindwurm
SUBST: 1 = 11., 3 = ...3
SUBST: c : cv
MAP
...............................
.ccccccccccccccccccccccccccccc.
.c3+33.33c..3..3..2....3.c%%%c.
.c1ccccc1c.2...1.3.1.3.2.c%%%c.
.c.c$$$c3c.3.3..2.......3c%%%c.
.c1c$$$c3c....13...3.1...ccc+c.
.c3c$$$c.c3.1.....1..3.3.1332c.
.c1c2ccc3c....3.13....1.cccccc.
.c.c.3313c.3.1......1.3.c3313c.
.c3ccccccc1...3.....3...c3cc3c.
.c33.313....3.....3...1.c2|c3c.
.c1.31..3.3..ccc++ccc...cccc+c.
.c32..33.1.33c4l..l4c..1.2.1.c.
.cccccccccccccll..llcccccccccc.
...............................
ENDMAP

NAME:  roderic_batcave
TAGS:  no_monster_gen
DEPTH: D:3-20, Lair, Orc
: local d = you.absdepth()
: if d < 7 then d = 0 end
: mons("bat w:60 / vampire bat w:" .. d .. " / nothing w:10")
SUBST: ? : x@
SUBST: 1 = 1:10 .:1
MAP
  xxxx?xx
 xxx1..xxxx
xxx1...1xxx
xx11...11xx
xxx1...1xxx
 xxx..1xxx
  xx@xxx
ENDMAP

# A raven's nest, containing some jewellery.
# The dungeon version maya be hidden.
# Could be used as a subvault in some forest vault.
NAME:     roderic_ravens_nest
TAGS:     extra mini_float
DEPTH:    D:6-12, Lair: 3-6, Swamp
KMONS:    1 = raven
KITEM:    % = any jewellery
KITEM:    1 = any jewellery / nothing
: if you.branch() == "D" then
SHUFFLE:  t' / x"
SUBST:    " = x
NSUBST:   x = 1:= / *:x
: end
SUBST:    ' = .
: kmons("% = nothing w:10 / raven w:"..you.absdepth())
MAP
tttt
t%1t
ttt'@
ENDMAP

# A polar bear lost in the jungle, how odd
NAME:  roderic_lost_polar_bear
TAGS:  no_monster_gen mini_float
DEPTH: Lair: 3-7
MONS:  plant, polar_bear, bush
SUBST: ? = 1t
SUBST: ' = .:80 1 3:3
MAP
??'.
.'2'
'??.
ENDMAP


###############################################################################
#
# <<3>> Humanoids
#       Goblins, gnolls, orcs, ogres etc. We include spriggans and centaurs.
#
###############################################################################

NAME:    minmay_goblin_outpost
TAGS:    no_pool_fixup
DEPTH:   D:2-4
MONS:    goblin / hobgoblin w:5, goblin; sling . stone q:20
SUBST:   y = .WWw, Y = ...W, . = .....1
SHUFFLE: >X/_"
SUBST:   X = x, _ = =, " = @
MAP
   XXX
xxxx>xxxx
xxxx=xxxx
xwww2wwwx
xyywwwyyx
xYYYYYYYx
x.......x
x.......x
x.......x
@.......@
xxxxxxxxx
ENDMAP

NAME:  minmay_goblin_kobold_house
TAGS:  no_monster_gen
DEPTH: D:2-4
MONS:  goblin / hobgoblin, kobold
SUBST: . = 1%......
SUBST: 1 : 112
MAP
 xxxxxxx
xx.....xx
x.......x
x.......x
x.......x
xx.....xx
 xxx+xxx
  x...x
  x...x
  xx+xx
ENDMAP

# Sigmund has been educating the oppressed masses in guerrilla warfare.
NAME:    sigmund_army
DEPTH:   D:2-6
TAGS:    extra luniq_mini
MONS:    gnoll;scythe.robe, hobgoblin;scythe.robe, orc;scythe.robe
SUBST:   n = 1:20 n:5
KMONS:   n = Sigmund, gnoll;scythe.robe / hobgoblin;scythe.robe / orc;scythe.robe
SHUFFLE: x+1 / x+1 / x+1 /y-5
SUBST:   -=y, y=5, 5=1..
SHUFFLE: 123444
SUBST:   4=1223.., 1=1., 3=33.
MAP
xxxxx
x1n1x
x111x
xx+xx
 ...
ENDMAP

NAME:  minmay_mini_ossuary
TAGS:  no_monster_gen no_item_gen
DEPTH: D:4-8
ITEM:  any scroll / any potion
MONS:  mummy, kobold zombie / orc zombie / hobgoblin zombie
MAP
........
.cccccc.
.c.1ddc.
.c.cccc.
.c.22.c.
.c2..2c.
.cc~~cc.
........
ENDMAP

NAME:  minmay_orc_keep
DEPTH: D:8-, Orc
: if you.absdepth() > 24 then
MONS:  orc knight, orc warlord, orc sorcerer / orc high priest
SUBST: % = |
: elseif you.absdepth() > 18 then
MONS:  orc warrior, orc knight / orc warlord, orc sorcerer / orc high priest
SUBST: % = *|
: elseif you.absdepth() > 12 then
MONS:  orc / orc warrior w:5, orc knight / orc warrior, orc wizard / orc priest \
       / orc sorcerer w:2 / orc high priest w:1
SUBST: % = %*
: else
MONS:  orc, orc warrior / orc, orc wizard / orc priest
: end
MAP
www.@.www
wcc+++ccw
wc1...1cw
wc.....cw
wc2...2cw
wc%3%3%cw
wc1%3%1cw
wcccccccw
wwwwwwwww
ENDMAP

NAME:   minmay_ogre_servants
DEPTH:  D:3-6
MONS:   ogre
NSUBST: " = 6:" / *:'
KITEM:  ' = meat ration
KMONS: "' = goblin
MAP
xxxxx
x"1"x
x"""x
x"""x
xx+xx
ENDMAP

# Darts of dispersal
NAME:   minmay_kobolds_dispersive
DEPTH:  D:6-12
WEIGHT: 5
MONS:   kobold; dart ego:dispersal q:2 / w:3 big kobold; dart ego:dispersal q:4
MAP
xx+xx
x111x
x111x
xx+xx
ENDMAP

# Darts of explosion
NAME:   minmay_kobolds_explosive
DEPTH:  D:8-14
WEIGHT: 5
MONS:   kobold; dart ego:exploding q:2 / w:3 big kobold; dart ego:exploding q:4
MAP
xx+xx
x111x
x111x
xx+xx
ENDMAP

# Elven Outpost
#   50-50 chance of spiral arms, 50-50 chance of a moat
#   No loot but the elves' gear, but at the depth this appears that may be good
NAME:    elves_outpost_lemuel
DEPTH:   D:14-20, Orc:3-, Elf
MONS:    deep elf soldier / w:4 deep elf fighter
MONS:    w:20 deep elf mage / deep elf conjurer / deep elf summoner
SHUFFLE: ?:/bb, :;/ww
SUBST:   ?=., :=., ;=.
MAP
.?.....???..
?.;;;::;;;?.
?;;::;;;;;;.
?;;bbbbbb:;.
.:;b1111b:;.
.:;.1221>;:.
.;:b1111b;:.
.;:bbbbbb;;?
.;;;;;;::;;?
.?;;;::;;;.?
..???.....?.
ENDMAP

# Very unpleasant kobold minivault
NAME:   minmay_kobolds_curare
WEIGHT: 5
DEPTH:  D:12-18
MONS:   kobold; blowgun . needle ego:curare q:1 / \
        w:3 big kobold; blowgun . needle ego:curare q:2
MAP
xx+xx
x111x
x111x
xx+xx
ENDMAP

# Humans defending their loot
NAME:   minmay_ruffians
DEPTH:  D:6-10
MONS:   human; club | mace w:3 . animal skin | leather armour
MONS:   human; sling . stone | sling bullet w:3 . animal skin | leather armour
SUBST:  1 = 112.
KMONS:  3 = human; flail | spiked flail w:3 . ring mail | scale mail
KITEM:  3 = %
MAP
.........
.1.1.1...
.........
.x+xxx.1.
.x%%3x...
.xxxxx.1.
.........
ENDMAP

# Necromancer has a house with a fridge (and a nice garden) (Eino)
NAME:  eino_house_with_fridge
DEPTH: D:8-20, Lair:2-, Vault:1-4
TAGS:  no_monster_gen no_item_gen mini_float
MONS:  necromancer / patrolling necromancer, plant
MONS:  rat simulacrum / hound simulacrum / sheep simulacrum / grizzly bear simulacrum
MAP
............
.xxxxxxxxxx.
.x333x..%%x.
.x333+..xxx.
.x333x....x.
.xxxxx.3..x.
.....x..13x.
.2T2.+....x.
.....xxxxxx.
............
ENDMAP

# kobolds around a campfire
NAME:    lexackson_kobold_supper
DEPTH:   D:1-6
TAGS:    unique_kobold_supper_lexackson no_monster_gen
KPROP:   56' = no_rtele_into
MONS:    kobold, plant, bush
: if you.absdepth() < 4 then
KMONS:   7 =  kobold ; dagger . dart
: else
KMONS:   7 =  big kobold ; dagger . throwing net q:2
: end
KMONS:   1 = kobold name:hungry name_adjective ; nothing
SUBST:   . = e f .:150
: dgn.delayed_decay(_G, 'e', 'rat skeleton')
: dgn.delayed_decay(_G, 'f', 'giant gecko skeleton')
KMONS:   5 = att:neutral halfling hd:1 name:young name_adjective name_species
KFEAT:   6 = net trap
KFEAT:   m = iron_grate
MARKER:  P = lua:fog_machine { cloud_type = "flame", \
             pow_min = 10000, pow_max = 10000, delay = 1, \
             size = 1, walk_dist = 0, start_clouds = 1 }
MARKER:  P = lua:fog_machine { cloud_type = "grey smoke", \
             pow_min = 3, pow_max = 3, delay = 100, \
             size = 1, walk_dist = 1, start_clouds = 1 }
SUBST:   y = 2 3 x:5
NSUBST:  W = 5:.
NSUBST:  t = 6:2 3 / 6:x / *:t
MAP
xxxxxxxxxxxxx
xtttttttttttxxxx
xtyyWWWyyyyytttx
xyy.....y3yyyttx
xy..s1s..m'5yytx
@...1P1..m65'ytx
xy..s17..m'5yytx
xyy.....y2yyyttx
xtyyWWWyyyyyttxx
xttttttttxxttxxx
xxxxxxxxxxxxxx
ENDMAP

#################################################################
# checkpoints with guards to alert nearby monsters, by Core Xii
NAME:   corexii_checkpoint_a
DEPTH:  D, Elf
WEIGHT: 7
TAGS:   no_monster_gen no_item_gen allow_dup extra luniq_mini
NSUBST: 1 = 2:1 / *:.
: if you.branch() == "Elf" then
MONS:   elf
: else
MONS:   goblin / hobgoblin / kobold / orc
: end
MAP
x@xxxx
x.xxxx
x.m11+@
x.m11x
x.xxxx
x@xxxx
ENDMAP

NAME:    corexii_checkpoint_b
DEPTH:   D, Elf
WEIGHT:  3
TAGS:    no_monster_gen no_item_gen allow_dup extra luniq_mini
SHUFFLE: mA
SUBST:   A = x
NSUBST:  1 = 2:1 / *:.
: if you.branch() == "Elf" then
MONS:    elf
: else
MONS:    goblin / hobgoblin / kobold / orc
: end
MAP
xxxxxxx
x.....@
x.xmmx.
x.A11x.
@.A11+.
xxxxxxx
ENDMAP

NAME:   corexii_shack
DEPTH:  D:2-6
TAGS:   no_monster_gen no_item_gen allow_dup extra
NSUBST: + = 1:+ / *:x, m = 1:m / *:x, - = 1:1 / *:d
ITEM:   w:20 any food / any weapon / any armour / w:5 any potion / w:20 nothing
MONS:   goblin / hobgoblin / kobold / orc, plant / w:100 nothing
MAP
........
..2..2..
.2x++x2.
.2m--m2.
.2m--m2.
.2xmmx2.
..2222..
........
ENDMAP

# Centaur isle (Lemuel)
NAME:  centaur_isle
TAGS:  no_monster_gen no_pool_fixup no_rotate
SUBST: ? = *$
DEPTH: D:6-12, Shoals
MONS:  centaur
MAP
          wwww
       wwwwwwww
    wwwwwwwwwwwwwww
 wwwwwwwwwwwwwwwwwwwww
wwwwwwww..wwwwwwwwwwwww
wwwwww.11...wwwwwwwwwww
wwwww........wwwwwwwwww
wwwww...x=x..wwwwwwwwww
wwww..11x.x..wwwwwwwww
 www...xx>x11wwwwwwwww
 www..xx??x.wwwwwwwww
 wwww.xx??x.wwwwwww
  wwww.xxxx.wwwwww
   wwwwww..wwwww
    wwwwwwwwwww
       wwwwww
ENDMAP

NAME:   hunters_booth_kilobyte
DEPTH:  D:5-15
MONS:   centaur, bush
MAP
.....xxx
@....21=@
.....xxx
ENDMAP

NAME:   kilobyte_rumbling_trees
DEPTH:  D:14-20, Elf, Lair:4-8
MONS:   patrolling spriggan druid
MONS:   black bear / grizzly bear w:20 / bat w:20
FTILE:  .t1@ = floor_moss
MAP
ttttt       tttt@t
tttttt tt ttttt2tt
t2tttttttttttt.ttt
@t..ttttttttt.tttt
tttt..t.ttt..tttt
tttttt.1...ttttt
 ttttt..tttttttt
 tttt.ttttttttt
tttt.tttttttt
tttt2tttttt
 tttt@ttt
ENDMAP

# And for now, something woody (1KB)
NAME:   forest_paths
DEPTH:  D, Lair
FTILE:  .t0@*123 = floor_moss
: if you.absdepth()>15 then
MONS:   spriggan, spriggan druid, spriggan rider
SUBST:  0=1
: end
MAP
        xxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxx
    xxxxxtttttttttttttttttt.tttttttttttttttttttttxx
 xxxxtttttttttttttttttttttt...ttttttttttttttttttttx
xxttttttttttttttttttttttttttt..tttttttttttttt0}tttx
xttttttttt.tt......ttttttttttt..tttttttttttt..ttttx
xtttttttt.t...ttt.0.tttttttttt.tttttttttt3..ttttttx
xtt......tttttttt...ttttttttttt.tttttt...ttttttttxx
xt.ttttttttttttttt...1tttttttttt.tttt.tttttttttttxx
@.ttttttttttttttt..tttttttttttt1.tt...ttttttttttttx
xttttttttttttttt..tttttttttttttt2...ttttttttttttttx
xtttttttttttttttt..ttttttttttttttt.tttttttttttttttx
xtttttttttttttttt1.1.tttttttttttt.tttttttttt...tttx
xtttttttttttttttttt.1...tttttttttt..ttttttt.2*..ttx
xttttttttttttttttttttt1...ttttttttt.ttttttt.000.ttx
xttttttttttttttttttttttt...tttttttt.ttttt1..3.2tttx
xttttttttttttttttttttttttt....tttt.ttttttt.tt.t0ttx
xtttttttttttttttttttttttttttt.....tttttttt.tttttttx
.....ttttttttttttttttttttttt1..tttttttttt.ttttttttx
@.....tttttttt...ttttttttttt1..tttttttt..ttttttttxx
xttttt..ttt....tt...tt.......30.ttttt..tttttttttxx
xttttttt....ttttttt....ttttttt..ttt..ttttttttttxx
xxxtttttttttttttttttttttttttttt....ttttttttttxxx
  xxxtttttttttttttttttttttttttttttttttttttxxxx
    xxxxxttttttttxxxxxxxxttttttttttttttxxxx
        xxxxxxxxxx      xxxxxxxxxxxxxxxx
ENDMAP

NAME:    billiards_dpeg
MONS:    orc wizard, deep elf conjurer
SHUFFLE: 1*/2d
SUBST:   * = * |:1 %:4
SUBST:   d = * |
NSUBST:  X = + / x
MAP
.............
.xxxxxxxxxxx.
.x*1......bx.
.x1.......bx.
.x..bbbbb+bx.
.x..bxxxb.bx.
.x..bbbbb.bx.
.x..+......x.
.xbbbbbbb..X.
.xxxxxxxxxXx.
.............
ENDMAP

NAME:    kenku_band
DEPTH:   D:9-, Shoals, Swamp
TAGS:    no_pool_fixup
MONS:    kenku
MONS:    kenku ; war axe / kenku ; long sword / kenku ; scimitar
MONS:    kenku spells:airstrike;magic_dart;iskenderun's_mystic_blast
MAP
 .........
..wwwww.1..
.wwttwww.2.
.wtt3.tww..
.wwwt.2....
..wwwwww2..
 .........
ENDMAP

NAME:   minmay_rotating_lava
TAGS:   no_monster_gen
DEPTH:  D:10-16
MONS:   hell hound, hell knight band, hell knight
MAP
...............
.ccccccccccccc.
.c.....3.....c.
.c.ccccccccc.c.
.c.c......1c.c.
.c.c.cclcc.c.c.
.c.c.c...c1l.c.
.c.c2c.3.c.l.c.
.c.c.c***c1l.c.
.c.c.ccccc.c.c.
.c.c......1c.c.
.c.ccccccccc.c.
.c...1.1.1...c.
.cccclllllcccc.
...............
ENDMAP


################################################################################
#
# <<4>> Demons and undead
#
################################################################################

NAME:   minmay_hunger
DEPTH:  D:10-16
WEIGHT: 5
MONS:   hungry ghost
ITEM:   ring of hunger / any jewellery
MAP
ccc+ccc
c.1.1.c
c1c1c1c
+.1d1.+
c1c1c1c
c.1.1.c
ccc+ccc
ENDMAP

NAME:  minmay_nine_imps
DEPTH: D:7-14
MONS:  imp / white imp w:3 / shadow imp w:1
MAP
xxxxx
x111x
x111x
x111x
xx+xx
ENDMAP

NAME:    minmay_room_of_horrors
DEPTH:   D:16-
MONS:    small abomination, large abomination, unseen horror / chaos spawn
KFEAT:   _ = enter_abyss
SHUFFLE: 1234
MAP
xxxxxx
x3113x
+1221x
x1221x
x311_x
xxxxxx
ENDMAP

# The Horrible House of Horrid Horrors (by Mu.)
NAME:   horrible_house_mu
DEPTH:  D:16-25, Vault
KMONS:  g = boggart
KMONS:  h = unseen horror
KMONS:  R = rakshasa
KMONS:  V = vampire knight
KMONS:  8 = orange crystal statue
KMONS:  P = plant
SUBST:  p = P.
MAP
.....................
.pp...............pp.
.pcccccccccccccccccp.
..c.$$$|||.|||$$$.c..
..c..$$$.....$$$..c..
..c.g....lVl....g.c..
..c...llll.llll...c..
..c...lnll.llnl...c..
..c.hlllc.8.clllh.c..
..c...llcccccll...c..
..c...lllllllll...c..
..c.R..hlllllh..R.c..
..c.......l.......c..
..c...............c..
..c...............c..
.pccnnnccc+cccnnnccp.
.pp.....pPPPp.....pp.
.........ppp.........
ENDMAP

NAME:   minmay_beelzebubs_servants
DEPTH:  D:6-12
MONS:   hairy devil / nothing, rotting devil / nothing
MAP
........................
..xxxx....xxxx....xxxx..
.xx1.xx..xx**xx..xx.1xx.
.x21................12x.
.x21................12x.
.xx1.xx..xx**xx..xx.1xx.
..xxxx....xxxx....xxxx..
........................
ENDMAP

################################################################################
# Some earlyish demon minivaults by Eino.
# The difficulty of most low-tier demons is severely inflated by the time the
# player gets to meet them. Here (using default depth) they aspire to be both
# challenging and flavourful.

##### Red devils (4) can use weapons and armour.
NAME:    einodemon_armed_red_devil_minivault
TAGS:    patrolling mini_float
KMASK:   l = no_monster_gen
SHUFFLE: 1234
MONS:    red devil; spear | trident . ring mail | scale mail
MONS:    red devil; hand axe | war axe . buckler | nothing . leather armour | \
         ring mail
MONS:    red devil; flail | demon whip . ring mail | scale mail
MONS:    red devil; falchion | sabre . shield | buckler | nothing . \
         leather armour | ring mail
MAP
...........
.ll.v.v.ll.
.l..v.v..l.
...vv.vv...
.vvv1.2vvv.
...........
.vvv3.4vvv.
...vv.vv...
.l..v.v..l.
.ll.v.v.ll.
...........
ENDMAP

##### A rotting devil (4) & necrophages.
NAME:  einodemon_rotting_minivault
TAGS:  patrolling mini_float
MONS:  rotting devil
MONS:  necrophage
MARKER:  + = lua:props_marker { \
            door_open_prompt="This door is covered in warnings. Open " .. \
                             "it anyway?", \
            door_description_prefix="warning-scrawled " \
         }
MAP
...........
.cccc+cccc.
.c2c...c2c.
.c..1.1..c.
.c2c...c2c.
.cccc+cccc.
...........
ENDMAP

##### Demonic crawlers (s) and beetles.
NAME:  einodemon_crawler_minivault
TAGS:  patrolling mini_float
MONS:  demonic crawler
MONS:  goliath beetle / boulder beetle w:8 / demonic crawler w:2 / \
       nothing
MAP
..........
.m.mmmmmm.
.mx.x.x.m.
.m.x2x2xm.
.mx2x1x.m.
.m.x1x2xm.
.mx2x2x.m.
.m.x.x.xm.
.mmmmmm.m.
..........
ENDMAP

##### Hairy devils (4) and bears.
NAME:  einodemon_hairy_minivault
DEPTH: D:9-27
TAGS:  patrolling
MONS:  hairy devil / nothing w:20
MONS:  black bear w:20 / grizzly bear / nothing w:20
MAP
xxxxxxxxxxxxx
@.....xxxxxxx
xxxxx..xxxxxx
xxxxxx.xxxxxx
xx1.x...x.1xx
x12.2...2.21x
x12.2...2.21x
xx1.x...x.1xx
xxxxxx.xxxxxx
xxxxxx..xxxxx
xxxxxxx.....@
xxxxxxxxxxxxx
ENDMAP

# Carrion pond
# Bad water, a lot of carrion and feeders around, yuck!
# Has either necrophage or jackal, but the former is more memorable.
#
# Perhaps use Sewers style water?
# Would also be nice if we could make the corpses fit the branch.
# And even better if some corpses could rot (i.e. delayed rotting).
#                                                          --dpeg
NAME:  roderic_carrion_pond
TAGS:  no_monster_gen no_trap_gen mini_float
DEPTH: Lair: 2-7 , Swamp
SUBST: ? = %%.
KITEM: % = any corpse
: dgn.delayed_decay(_G, '%', 'any corpse')
: if you.xl() > 8 then
MONS:  necrophage
: else
MONS:  jackal
: end
SUBST: ' = 111.
MAP
 ..'..?..
.?'.?.??'.
'?.www?.?.
.'wwwww.?.
?..ww?.?'.
 .?'.?...
ENDMAP

###############################################################################
# Kobold demonologist guarded by invisible demons. (nrook)
# Added "evil rite" looking colours, so players expect some nastiness.
#
NAME:   nrook_kobold_shadow_demons
DEPTH:  D:14-27
MONS:   kobold demonologist
COLOUR: 123 = darkgrey
COLOUR: ' = white
# On average, there will be 5 demons from "2", and 1 from "3".
MONS:   w:9 shadow demon / w:1 Lorocyproca / w:10 nothing
MONS:   w:2 shadow demon / w:40 nothing
MAP
    ...
  .'''''.
 .'33333'.
 '3322233'
.'3222223'.
.'3221223'.
.'3222223'.
 '3322233'
 .'33333'.
  .'''''.
    ...
ENDMAP

#############################################################
# Fire demons vs. ice demons
NAME:   minmay_fire_ice_demons
TAGS:   no_monster_gen
DEPTH:  D:4-, Coc, Geh
: if you.absdepth() > 24 then
MONS:   fiend / balrug w:5
MONS:   ice fiend / blue death w:5
MONS:   sun demon / smoke demon / hellion
MONS:   ice devil / blue devil w:5
MONS:   red devil / imp
MONS:   ufetubus / white imp w:5
SUBST:  " = |
SUBST:  ' = |
: elseif you.absdepth() > 18 then
MONS:   sun demon / hellion w:5
MONS:   ice devil
MONS:   red devil / smoke demon w:5
MONS:   blue devil / white imp w:5
MONS:   imp
MONS:   ufetubus
SUBST:  " = |
SUBST:  ' = *
: elseif you.absdepth() > 12 then
MONS:   smoke demon, blue devil, imp, white imp
SUBST:  " = *
SUBST:  ' = %
SUBST:  5 = .
SUBST:  6 = .
: else
MONS:   imp, white imp
SUBST:  " = %
SUBST:  ' = .
SUBST:  3 = .
SUBST:  4 = .
SUBST:  5 = .
SUBST:  6 = .
: end
MAP
...........................
..ccccccc.........ccccccc..
.cc'3553ccc.....ccc4664'cc.
.c"'lll..5cc...cc6..www'"c.
.c1lllll..5.....6..wwwww2c.
.c"'lll..5cc...cc6..www'"c.
.cc'3553ccc.....ccc4664'cc.
..ccccccc.........ccccccc..
...........................
ENDMAP

NAME:  minmay_brain_eaters
DEPTH: D:10-18
MONS:  brain worm, neqoxec
MAP
xxxxx
x1.1x
x.2.x
x1.1x
xx+xx
ENDMAP

NAME:    hallowed_hall
TAGS:    no_monster_gen no_trap_gen extra
PLACE:   D:17-27
WEIGHT:  0
MONS:    quokka, shedu band, ophan, plant
COLOUR:  c = white
TILE:    c = wall_church
FTILE:   .+23GtABC = floor_limestone
COLOUR:  .23 = white
SHUFFLE: ABC
KFEAT:   A = altar_shining_one
KFEAT:   B = altar_elyvilon
KFEAT:   C = altar_zin
MAP
xxxxxxxxx
xcccccccx
xcG.B.Gcx
xc..3..cx
xcA...Ccx
xc.....cx4''
xcG...Gcx'''''
xccc+cccx4''''''
xct...tcx''''''''
xc..2..cx'''''''''xx
xc.....+''''1'''''cx
xct....c'''''''''4cx
xccccccccccccccccccx
xxxxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
#
# <<5>> Stationary shooters: statues, oklobs, fog generators.
#       We include fog generators here, as they won't move away either.
#
################################################################################

NAME:  minmay_statue_bubble
DEPTH: D:9-26
MONS:  silver statue / orange crystal statue / ice statue w:5
SUBST: ? = bbb.
MAP
 .......
..bm?mb..
.bm...mb.
.m..*..m.
.?.*1*.?.
.m..*..m.
.bm...mb.
..bm?mb..
 .......
ENDMAP

NAME:  minmay_protected_statue
DEPTH: D:9-26
MONS:  silver statue / orange crystal statue, plant, bush
SUBST: n : n:20 m 2:1 3:1 t:1
MAP
  ...
 .*|*.
.*nnn*.
.|n1n|.
.*nnn*.
 .*|*.
  ...
ENDMAP

NAME:   minmay_statue_crystal_thing
DEPTH:  D:9-26
MONS:   orange crystal statue w:30 / silver statue / ice statue w:5
NSUBST: ? = 1:= / *:b
MAP
      .....
    ...b+b...
  ...bbb.bbb...
  .bbb.....bbb.
 ..b...b=b...b..
 .bb.bbb.bbb.bb.
..b..b.....b..b..
.bb.bb..*..bb.bb.
.+..=..*1*..=..+.
.bb.bb..*..bb.bb.
..b..b.....b..b..
 .bb.bbb.bbb.bb.
 ..b...b=b...b..
  .bbb.....bbb.
  ...bbb.bbb...
    ...b+b...
      .....
ENDMAP

NAME:  minmay_dual_archer_statues
DEPTH: D:10-26
MONS:  statue tile:mons_statue_archer name:archer name_adjective; \
       longbow . arrow q:30
MONS:  bush
MAP
.........
...ccc...
.ccc|ccc.
.c.2.2.c.
.c12.21c.
.c.2.2.c.
.ccc.ccc.
...c+c...
.........
ENDMAP

# Another Ice Statue vault
NAME:  ice2_lemuel
DEPTH: D:12-26, Lair, Coc
TAGS:  no_pool_fixup no_monster_gen
SUBST: T = TU
SUBST: W = w:20 W .:5
MONS:  ice statue
MONS:  ice devil w:5 / blue devil w:5 / ice dragon / freezing wraith /\
       nothing w:30
MONS:  white imp / ice beast w:30 / polar bear / nothing w:50
MONS:  white imp / ice beast w:30 / polar bear / nothing w:50
KFEAT: 2 = >
KFEAT: 4 = >
SUBST: | = ||****%%%%
MAP
T..................T
..WWW..........WWW..
.WWWWW........WWWWW.
WWWWWWwww..wwwWWWWWW
WWW3WwwwwwwwwwwW3WWW
WW343wwwwwwwwww343WW
.WW3WwwwwwwwwwwW3WW.
.WWWWwwwwwwwwwwWWWW.
..WWWwww||||wwwWWW..
...WWwww|12|wwwwW...
..WWWwww||||wwwWWW..
.WWWWwwwwwwwwwwWWWW.
.WW3WwwwwwwwwwwW3WW.
WW343wwwwwwwwww343WW
WWW3WwwwwwwwwwwW3WWW
WWWWWWwww..wwwWWWWWW
.WWWWW........WWWWW.
 .WWW..........WWW..
T..................T
ENDMAP

# Oklob assault; statistically, three oklobs
NAME:    dpeg oklob_1
DEPTH:   D:16-27, Lair:4-
TAGS:    allow_dup
MONS:    plant, oklob plant
SUBST:   ? = 1 2:5 '
SHUFFLE: '"
SUBST:   ' : w .:5
SUBST:   " = .
MAP
   ...........
  .............
 .....'''''.....
.....''???''.....
....''?????''....
....''?????''....
.....''???''.....
 .....'''''.....
  .............
   ...........
ENDMAP

NAME:    statue_in_the_mist_lemuel
TAGS:    extra luniq_mini
MONS:    orange crystal statue / silver statue / ice statue
DEPTH:   D:9-, Orc, Elf, Vault, Snake, Swamp
MARKER:  G = lua:fog_machine { cloud_type= "grey smoke", \
             pow_min = 10, pow_max = 20, delay_min = 15, delay_max = 35, \
             size = 3, walk_dist = 2, spread_rate= 25 }
SHUFFLE: G111
MAP
G
ENDMAP

# Caryatid's revenge (1KB)
NAME:   archer_statue
DEPTH:  D:8-, Vault, Elf
MONS:   statue tile:mons_statue_archer name:archer name_adjective; \
        longbow . arrow q:30
MAP
    ccc
ccccc1ccccc
...........
...........
 .........
   .....
ENDMAP

# IOOD testing grounds
NAME:   iood_simple
DEPTH:  D:18-, Vault
MONS:   statue spells:orb_of_destruction tile:mons_statue_mage
MAP
       ...
    .........
   ...........
  .............
 ...............
 ...............
 ...............
.................
........1........
.................
 ...............
 ...............
 ...............
  .............
   ...........
    .........
       ...
ENDMAP

# Greed's colour
NAME:    david_greed
WEIGHT:  4
DEPTH:   D:10-26, Vault, Elf
ITEM:    nothing / any good_item
MONS:    silver statue / orange crystal statue / ice statue
SHUFFLE: d|
MAP
xxxxxxxxx
xbbbbbbbx
xb1...1bx
xb.....bx
xb.....bx
xbb.|.bbx
xxb.d.bxx
xxb...bxx
xxb...bxx
xxb.*.bxx
xxb...bxx
xxx@I@xxx
ENDMAP

# Rather shallow depth but you cannot randomly teleport in there.
NAME:    minmay_crystal_box
DEPTH:   D:12-26
MONS:    crystal golem, orange crystal statue
KPROP:   .12 = no_rtele_into
SUBST:   . = .:80 %$*|
SHUFFLE: Dd / Ee / Ff / Gg / Hh
SUBST:   D==, d=o, E=b, e=b, F=b, f=b, G=b, g=b, H=b, h=b
MAP
WWWWWWWWWWWWWW
WbbbbbbbbbbbbW
WDd1...1...1bW
WEe.........bW
WFf.........bW
WGg.........bW
WHh1...2...1bW
Wbb.........bW
Wbb.........bW
Wbb.........bW
Wbb1...1...1bW
WBbbbbbbbbbbbW
WWWWWWWWWWWWWW
ENDMAP

NAME:  minmay_archer_statue_crystal
DEPTH: D:10-, Vault, Elf
MONS:  statue name:archer tile:mons_statue_archer name_adjective; \
       longbow ego:frost | longbow ego:flame . arrow q:40
MAP
xx@xxx@xx
xb.bbb.bx
@.......@
xb.....bx
xb..1..bx
xb.....bx
@.......@
xb.bbb.bx
xx@xxx@xx
ENDMAP

NAME:  minmay_archer_statue_bushes
DEPTH: D:8-, Vault, Elf
MONS:  statue name:archer tile:mons_statue_archer name_adjective; \
       longbow . arrow q:40
MONS:  bush
MAP
.....
.222.
.212.
.222.
.....
ENDMAP

NAME:  minmay_more_statues
DEPTH: D:12-26
MONS:  ice statue w:5 / silver statue / orange crystal statue
MAP
cccbcccccbcccccbccc
c.....c%*|*%c.....c
c.................c
b..1.....G.....1..b
c.................c
c.....c.....c.....c
cccbcccc.@.ccccbccc
ENDMAP


###################################################################
#
# <<6>> Other monsters
#       Golems, slime denizens, insubstantial monsters...
#
###################################################################

NAME:   minmay_sticks_and_stones
DEPTH:  D:8-16
WEIGHT: 5
MONS:   wood golem, stone golem
ITEM:   stone / club w:5 / large rock w:3 / quarterstaff w:1
SUBST:  . = d:30 1 .:150
MAP
.........
.........
.........
.........
....2....
.........
.........
.........
.........
ENDMAP

NAME:   minmay_metal_thing
DEPTH:  D:12-20
KPROP:  .1* = no_rtele_into
MONS:   iron golem
NSUBST: ? = 1:= / *:v
MAP
xxxlllllllllllllllllxxx
xxxlvvvlvlvvvlvlvvvlxxx
xxxlv1vlvlv1vlvlv1vlxxx
llllv.vlvlv.vlvlv.vllll
lvvvv.v?v?v.v?v?v.vvvvl
lv1..*.....*.....*..1vl
lvvvv.v?v?v.v?v?v.vvvvl
llllv.vlvlv.vlvlv.vllll
xxxlv1vlvlv1vlvlv1vlxxx
xxxlvvvlvlvvvlvlvvvlxxx
xxxlllllllllllllllllxxx
ENDMAP

# My mission is to annoy. -LP
NAME:   lemuel_jelly_drop_a
MONS:   jelly
TAGS:   uniq_jelly_drop
WEIGHT: 5
KFEAT:  a = teleport trap
DEPTH:  D:8-27
MAP
..............
...vvvvvvvv...
..vv......vv..
.vv.vvvvvv.vv.
.v1v.....vv.v.
.vvvvvvvv.v.v.
.vav111111vav.
.v.v.vvvvvvvv.
.v.vv.....v1v.
.vv.vvvvvv.vv.
..vv......vv..
...vvvvvvvv...
..............
ENDMAP

# This is probably a get-off-the-level vault. -LP
NAME:  aerie_lemuel
DEPTH: D:12-26
MONS:  insubstantial wisp, ball lightning, vapour, air elemental
TAGS:  no_monster_gen
SUBST: .:..w
SUBST: 1 = 1 w:3, 2= 2 w:3, 3 = 3 w:3, 4 = 4 |:3
MAP
    bbbbbbbbbb
  bbb11211211bbb
 bb.12bbbbbb21.bb
bb..bbb2323bbb..bb
b..bb...bb...bb.1b
b.bb..bbbbbb..bb.b
b.b..bb2323bb..b1b
b.b.bb23bb23bb.b.b
b.b.b..bbbb..b.b1b
b.b.b.bb44bb.b.b.b
b2b2b3b4444b3b2b2b
b.b.b.b4444b.b.b.b
b.b.b.bb44bb.b.b1b
b.b.b2323bb..b.b.b
b.b.bbbbbb..bb.b1b
b.b..bbb...bb..b.b
b.bb..bb.bbb..bb1b
b..bb....b...bb..b
bb..bbbbbb.bbb..bb
 bb.12bbbb2b111bb
  bbb123321b.bbb
    bbbbbbbb@b
ENDMAP

NAME:    minislime_mu
DEPTH:   D:14-26, Vault
TAGS:    no_monster_gen no_item_gen
MONS:    slime creature, giant eyeball, eye of draining
SUBST:   J = 1111111123
KITEM:   R = royal jelly
SUBST:   m : xxxm
SHUFFLE: %!'"
NSUBST:  % = 1:d / *:%
NSUBST:  ! = 1:e / *:%
NSUBST:  ' = 1:f / *:%
NSUBST:  " = 1:g / *:%
SUBST:   % = %$
ITEM:    ring of teleportation / scroll of teleportation w:30 q:2
ITEM:    wand of digging / wand of disintegration
ITEM:    stone of earth elementals
ITEM:    scroll of teleportation q:2 w:20 / dagger ego:distortion
MAP
...................
..J.............J..
.JJ...mmmm.mmm...J.
....mmm%m.Jm'mm....
...mm%%%m..m''mm...
...m%%%%m.mm'''mm..
..mm%%%%mJ.m''''m..
..m%%%%%mm.m''''m..
..mmmmmmm..mmmmmm..
...J..mJm.....mJ...
..mmm.....R.mJ..m..
..m!mmmmm...mmmmm..
..m!!!!!m..mm"""m..
..mm!!!!m.mm""""m..
...mm!!!m.Jm"""mm..
....mm!mmm.m""mm...
.J...m!mJ..m"mm....
..J..mmmm.mmmm..J..
...............JJ..
...................
ENDMAP

NAME:    onia_ninara_cookie
SHUFFLE: ABCDEF
SUBST:   A : !, B : !, C : !, D : !, E : !, F : =, G : ~ l:50 w:50 I
SUBST:   ! : xvcba
SUBST:   H = 0 . ~ , J = 1 0:100 $:20
ITEM:    any jewellery
MONS:    giant eyeball
MAP
...........
..!H!H!H!..
.!!B!A!F!!.
.HCJJJ!JEH.
.!!J!G!J!!.
.HDJ!d!JDH.
.!!J!J!J!!.
.HEJ!JJJCH.
.!!F!A!B!!.
..!H!H!H!..
...........
ENDMAP

NAME:   minmay_acid_items
TAGS:   no_monster_gen no_item_gen no_trap_gen
DEPTH:  D:14-26
MONS:   ooze / jelly / brown ooze / death ooze / giant amoeba / azure jelly
MONS:   acid blob
KPROP:  | = no_tele_into
MAP
  ...........
 ..mmmmmmmmm..
..mm1112111mm..
.mm11mmmmm11mm.
.m11mm|||mm11m.
.mm11mmmmm11mm.
..mm1112111mm..
 ..mmmmmmmmm..
  ...........
ENDMAP


###################################################################
#
# <<7>> Random monsters
#       Either using 8, 9, 0 glyphs or just many choices.
#
###################################################################

NAME:   minmay_circled_x
DEPTH:  D:1-2
WEIGHT: 3
MAP
     ......
   ...xxxx...
  ..xx....xx..
 ..x........x..
 .x.x......x.x.
..x..x....x..x..
.x....x%%x....x.
.x....0xx0....x.
.x....0xx0....x.
.x....x%%x....x.
..x..x....x..x..
 .x.x......x.x.
 ..x........x..
  ..xx....xx..
   ...xxxx...
     ......
ENDMAP

NAME:   minmay_three_crescents
DEPTH:  D:1-4
WEIGHT: 3
MAP
 .....
..xxx..
.xx%xx..
.x%.0......
.xx0...xxx..
..x.....0xx.
 ........%x.
..x.....0xx.
.xx0...xxx..
.x%.0......
.xx%xx.
..xxx..
 .....
ENDMAP

# vault rotation makes the jar with loot unknown
NAME:   minmay_mini_jars
DEPTH:  D:2-4
WEIGHT: 3
MAP
..........
.x.x++x.x.
...x00x...
.xxxxxxxx.
.+0x%%00+.
.+0x%%00+.
.xxxxxxxx.
...x00x...
.x.x++x.x.
..........
ENDMAP

NAME:   minmay_divided_ellipse
DEPTH:  D:2-6
WEIGHT: 5
MAP
      .......
   ....xx+xx....
 ...xxxx...xxxx...
..xxx%0x...x0%xxx..
.xx0x0.x0.0x.0x0xx.
.+.%x..x.0.x..x%.+.
.xx0x..x...x..x0xx.
..xxx..x9.9x..xxx..
 ...xx+x%*%x+xx...
   ....xxxxx....
      .......
ENDMAP

NAME:   minmay_hollow_rounded_squares
DEPTH:  D:4-
SUBST:  0 = 0., x : x c:2 v:1 b:1
MAP
 ........
..xxxxxx..
.xx.00.xx.
.x0xxxx0x.
.x.0.x0xx........
.x0x.xx.+.xx==xx..
.x0xx9xxxxxG..Gxx.
.xx*x.|xxxG....Gx.
..xxxxxx.x*.9..|x.
..xxxxxx.x|..9.*x.
.xx0.9|xxxG....Gx.
.x..xxxxxxxG..Gxx.
.x0xx0x.+.xx==xx..
.x0x*x0.x........
.x.xxxx0x.
.xx.00.xx.
..xxxxxx..
 ........
ENDMAP

NAME:   minmay_pinched_square
DEPTH:  D:8-, Vault
MAP
.......   .......
.xxx.........xxx.
.x|xxxx...xxxx|x.
.xx9..xxxxx..9xx.
..x.....0.....x..
..x..x..0..x..x..
..xx..xx.xx..xx..
 ..x..xx.xx..x..
 ..x00..9xx00x..
 ..x..xxxxx..x..
..xx..xxxxx..xx..
..x..x..0..x.0x..
..x.....0...0.x..
.xx9..xxxxx0..xx.
.x|xxxx...xxxx.x.
.xxx.........xx..
.......   .......
ENDMAP

NAME:  minmay_ominous_box
TAGS:  extra luniq_mini
DEPTH: D:4-, Vault
SUBST: 8 = 8.......
MAP
.......
.vvvvv.
.v...v.
.v.8.v.
.v...v.
.vv=vv.
..G.G..
 .....
ENDMAP

NAME:    minmay_three_doors
TAGS:    mini_float
DEPTH:   D:4-
SHUFFLE: 089
MAP
xxxxxxx
xx...xx
x.....x
x..0..x
x.....x
xx...xx
xxx+xxxxxxxxx
......xx...xx
......x.....x
......+..9..x
......x.....x
......xx...xx
xxx+xxxxxxxxx
xx...xx
x.....x
x..8..x
x.....x
xx...xx
xxxxxxx
ENDMAP

NAME:  kb_rosetta
DEPTH: D:6-, Vault, Elf
SUBST: x : xcvmnot
SUBST: X : GItTU
MAP
   ...   ...
  ..x.. ..x..
 ...xx...xx...
....xxx.xxx....
.xxx.xx.xx.xxx.
..xxx9x.x9xxx..
 ..xxxx.xxxx..
  .....X.....
 ..xxxx.xxxx..
..xxx9x.x9xxx..
.xxx.xx.xx.xxx.
....xxx.xxx....
 ...xx...xx...
  ..x.. ..x..
   ...   ...
ENDMAP

# Small chamber for a nice item (Eino)
NAME:   small_chamber_with_monster
TAGS:   mini_float extra luniq_mini
DEPTH:  D:8-27, Elf, Vault, Crypt
MAP
xxxxxxx
xxG.Gxx
x..|..x
x..9..x
xx...xx
xxT.Txx
xx...xx
xxT.Txx
ENDMAP

# Evil grid
NAME:   minmay_evil_grid
DEPTH:  D:8-
NSUBST: A = 7:+ / *:c
NSUBST: B = 1:= / *:c
NSUBST: C = 1:+ / *:c
SUBST:  * = *|
MAP
ccCcccCcccCcc
c...c...c...c
C.9.A.9.A.9.C
c...c...c...c
ccAcccBcccAcc
c...c*.*c...c
C.9.B.8.B.9.C
c...c*.*c...c
ccAcccBcccAcc
c...c...c...c
C.9.A.9.A.9.C
c...c...c...c
ccCcccCcccCcc
ENDMAP

NAME:  dispersion_dpeg
TAGS:  allow_dup
DEPTH: D:13-26, Vault
SUBST: Y = 89
KITEM: 8 = % / * / w:1 |
KITEM: 9 = % / * / w:1 |
KFEAT: 8 = 8
KFEAT: 9 = 9
KFEAT: X = teleport trap
KFEAT: Z : teleport trap / w:30 x
SHUFFLE: xcvb
MAP
............
............
...xxxxxx...
..x......x..
..x.ZXXZ.x..
..x.XYYX.x..
..x.XYYX.x..
..x.ZXXZ.x..
..x......x..
...xxxxxx...
............
............
ENDMAP

NAME:    pandoras_box_mu
DEPTH:   D:14-24, Vault, Crypt:1-4
TAGS:    no_monster_gen no_item_gen
MARKER:  a = lua:fog_machine { \
                 pow_max = 10, delay_min = 10, delay_max = 40, \
                 size = 2, size_buildup_amnt = 5, \
                 size_buildup_time = 25, cloud_type = "black smoke" \
             }
KMONS:   a = vampire mosquito
KMONS:   b = green death
KMONS:   c = reaper
KMONS:   d = soul eater
KMONS:   e = chaos spawn
KMONS:   f = demonic crawler
KMONS:   g = glowing shapeshifter
KMONS:   h = shadow wraith
KMONS:   i = orange rat
KMONS:   j = giant cockroach
KMONS:   k = phantom
KMONS:   l = large abomination
KMONS:   m = scorpion
KMONS:   n = small abomination
KMONS:   o = unseen horror
KMONS:   p = red wasp
KMONS:   q = yellow wasp
KMONS:   r = wolf spider
KITEM:   e = acquire armour / acquire weapon
SHUFFLE: bcdfghjklno
MAP
.............
.............
..v.......v..
...vvvvvvv...
...vgbcdev...
...vfahajv...
...vklanov...
...vpqrimv...
...vv+++vv...
..v.......v..
.............
.............
ENDMAP

NAME:    spider_temple_joshua
DEPTH:   D:20-26
TAGS:    no_rotate
MONS:    naga mage / naga w:5 / naga skeleton w:2
MONS:    wolf spider w:7 / giant mite w:3
MONS:    oklob plant
MONS:    jelly
MONS:    trapdoor spider / wolf spider
MONS:    guardian serpent
MONS:    curse skull
# Randomise wall type: in 50% of maps, you cannot dig to the stairs.
SUBST:   x : xxxxxxvvvccb
# Hints at the important secret doors (red colour). On the one hand, we
# may be too nice here; on the other hand, that's spoily information.
# (red blood tiles at the claws)
COLOUR:  ' = red
FTILE:   ' = floor_rough_red
SUBST:   ' = .
# With 25% chance, have lava and curse skull instead of water and oklobs:
SUBST:   w : Ww.
SUBST:   w = W.
SHUFFLE: wU3 / wU3 / wU3 / l7L
SUBST:   L = l
# The legs are coloured and contain 10 spider monsters:
COLOUR:  " : white / yellow / brown
NSUBST:  " = 10:5 / *:"
SUBST:   " = .
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxx"""""""xxxxxxxxxxxxxx""""""xxxxx
xxxxx"xxxxxx"xxx..}...xxx"xxxxx"xxxxx
xxxxx=xxxxxxx"xx...)..xx"xxxxxx=xxxxx
xxxxx'xxxxxxxx"x..]...x"xxxxxxx'xxxxx
xx"""""""xxxxxx=......=xxxxx"""""""xx
x"xxxxxxx"xxwWxxxx+xxxxxW.x"xxxxxxx"x
xx"xxxxxxx=..wWWw.1...wWW.=xxxxxxx"xx
xxx"xxxxxxx.4WWW.2.2.WWWW.xxxxxxx"xxx
xxxx"xxxxxx..wWWw.W3WWWWw.xxxxxx"xxxx
xxxxx"xxxxx.1.wWWW3U3WWw2.xxxxx"xxxxx
xxxxxx=xxxx2.1.wWWW3WWw12.xxxx=xxxxxx
xxxxxx'xxxx.2.wWWWWWWw....xxxx'xxxxxx
x"""""""""=x..WW....WW...x="""""""""x
x"xxxxxxxxxxxxW...1...Wxxxxxxxxxxxx"x
x"xxx""""""""+W.4...4.W+""""""""xxx"x
x""='"xxxxxxxxxm.....mxxxxxxxxx"'=""x
xxxxx"x........x+xxxxx........x"xxxxx
....x"x........xWWWWWx........x"x....
....x"x........xxxxxWx........x"x....
....x"xx.......xxxWWWx.......xx"x....
....xx"xx.....xxxx+xxxx.....xx"xx....
.....xx"xx....x.......x....xx"xx.....
......xx"xx...x..262..x...xx"xx......
.......xx=xx..mx.....xm..xx=xx.......
........xx'x...xm+++mx...x'xx........
..................@..................
ENDMAP

NAME:    onia_ninara_dug_in_and_dangerous
TAGS:    allow_dup abyss ruin_abyss
DEPTH:   D:8-26, Vault
SHUFFLE: vcb, AB?/CD!, d<>, de
SUBST:   A=9, B=8, C=1, D=9
SUBST:   ? = %:10 *:50 |:60
SUBST:   ! = %:90 *:30 |:10
ITEM:    wand of digging / wand of disintegration
ITEM:    ring of teleportation / stone of earth elementals
MAP
...........
.vvnvvvnvv.
.vAAABAAAv.
.xxxxxxxxx.
.v???d???v.
.vvnvvvnvv.
.....@.....
ENDMAP

NAME:   minmay_librarian
TAGS:   no_monster_gen no_item_gen no_trap_gen
DEPTH:  D:9-27
: if you.absdepth() > 24 then
MONS:   ancient lich w:50 / greater mummy
ITEM:   any scroll w:6 / any book
: elseif you.absdepth() > 20 then
MONS:   lich w:60 / draconian annihilator w:20 / \
        draconian scorcher / draconian shifter
ITEM:   any scroll / any book
: elseif you.absdepth() > 15 then
MONS:   deep elf annihilator w:30 / deep elf sorcerer w:20 / \
        deep elf demonologist / deep elf death mage
ITEM:   any scroll / any book w:6
: else
MONS:   wizard w:50 / necromancer w:20 / deep elf mage w:20  / \
        deep elf summoner / deep elf conjurer / orc sorcerer / \
        ogre mage / naga mage / vampire mage / kobold demonologist w:5
ITEM:   any scroll / any book w:3
: end
MAP
xxxxxxxxxxxxx
xd....1....dx
xx.........xx
xd.........dx
xx.........xx
xd.........dx
xx.........xx
xd.........dx
xx.........xx
xd.........dx
xxxxxx+xxxxxx
ENDMAP


################################################################
#
# <<8>> Minivaults with monsters guarding a thematic item.
#
# A series begun by minmay. More entries welcome!
# minmay: "Depths begin intentionally shallow; players should not
#          be able to beat these right away, but should be able
#          to flee. I'd like to see what other people can come up
#          with for more of these vaults!
#          I suggest low weights (they'll be pretty uninteresting
#          the second time), OOD monsters that can be easily
#          escaped, and not using overpowered/useless unrandarts.
################################################################

# Piercer
#
NAME:   minmay_guarded_unrand_piercer
DEPTH:  D:10-, Vault
WEIGHT: 3
MONS:   statue name:archer tile:mons_statue_archer name_adjective; \
        good_item longbow . good_item arrow q:20
MONS:   statue name:archer tile:mons_statue_archer name_adjective; \
        longbow unrand:piercer . good_item arrow q:20
MAP
       ...
    .........
   ...........
  .............
 ...............
 ...............
 ...............
.......1.1.......
.................
.......1.2.......
 ...............
 ...............
 ...............
  .............
   ...........
    .........
       ...
ENDMAP

# Robustness
#
NAME:   minmay_guarded_unrand_robustness
DEPTH:  D:10-, Vault
TAGS:   no_monster_gen no_item_gen
WEIGHT: 3
# Iron golems are speed 7, so even a naga can outrun them.
MONS:   patrolling iron golem, patrolling metal gargoyle
ITEM:   ring of protection unrand:ring_of_robustness
MAP
...............
.vvvvv.@.vvvvv.
.v1.........1v.
.v.vvvvvvvvv.v.
.v.v2..2..2v.v.
.v.v.vv.vv.v.v.
.v...v1.1v...v.
.v.2.v.d.v.2.v.
.v...v1.1v...v.
.v.v.vv.vv.v.v.
.v.v2..2..2v.v.
.v.vvvvvvvvv.v.
.v1.........1v.
.vvvvv.@.vvvvv.
...............
ENDMAP

# Zonguldrok
#
NAME:   minmay_guarded_unrand_zonguldrok
DEPTH:  D:12-, Crypt
TAGS:   no_monster_gen no_item_gen
WEIGHT: 3
# Is there a better way to do this?
: if you.absdepth() > 16 then
MONS:   place:D:27 zombie / place:D:27 skeleton, bone dragon
: else
MONS:   place:D:18 zombie / place:D:18 skeleton, bone dragon
: end
ITEM:   long sword unrand:sword_of_zonguldrok
MAP
...............
.cc+cccccccccc.
.c...c1..c1.1c.
.c...c...+...c.
.c1.1c1..c...c.
.cc+ccc+ccc+cc.
.c...c1.1c1.1c.
.c...c.2.c...c.
.c1.1c1d1c...c.
.cc+ccccccc+cc.
.c...c..1c..1c.
.c...+...+...c.
.c1.1c..1c..1c.
.ccccccccccccc.
...............
ENDMAP

# Scythe of Curses
#
NAME:   minmay_guarded_unrand_curses
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:8-, Crypt
WEIGHT: 3
MONS:   reaper, reaper; scythe unrand:scythe_of_curses, mummy, guardian mummy
ITEM:   scroll of curse armour / scroll of curse weapon
KPROP:  1d2 = no_rtele_into
MAP
..............
.cccccc+cccccc.
.c3.........3c.
.c.+ccccccc+.c.
.c.c...4...c.c.
.c.c.mmmmm.c.c.
.c.c.m1d1m.c.c.
.+.c4md2dm4c.+.
.c.c.m1d1m.c.c.
.c.c.mmmmm.c.c.
.c.c...4...c.c.
.c.+ccccccc+.c.
.c3.........3c.
.cccccc+cccccc.
...............
ENDMAP

# Crown of Dyrovepreva
#
NAME:   minmay_guarded_unrand_dyrovepreva
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:14-
WEIGHT: 3
MONS:   patrolling crystal golem name:crystal_guardian n_rpl spells:bolt_of_fire;bolt_of_cold
MONS:   orange crystal statue
ITEM:   cap unrand:crown_of_dyrovepreva
KPROP:  12d' = no_rtele_into
SUBST:  ' = .
MAP
        .............
       ...............
      ...bb.......bb...
     ...bbbb.....bbbb...
    ...bbbbbb...bbbbbb...
   ...bbbbbbbb2bbbbbbbb...
  ...bb'''bbb'''bbb'''bb...
 ...bb'''''b'''''b'''''bb...
...bbb''1'''''1'''''1''bbb...
..bbbb'''''b'''''b'''''bbbb..
..bbbbb'''bbb'''bbb'''bbbbb..
...bbbbb'bbbbbbbbbbb'bbbbb...
....bbb''.bbb'''bbb'''bbb....
.....b'''''b'1'1'b'''''b.....
.....b''1''b''d''b''1''b.....
.....b'''''b'1'1'b'''''b.....
....bbb'''bbb'''bbb'''bbb....
...bbbbb'bbbbb2bbbbb'bbbbb...
..bbbbb'''bbb'''bbb'''bbbbb..
..bbbb'''''b'''''b'''''bbbb..
...bbb''1'''''1'''''1''bbb...
 ...bb'''''b'''''b'''''bb...
  ...bb'''bbb'''bbb'''bb...
   ...bbbbbbbbbbbbbbbbb...
    ...bbbbbb...bbbbbb...
     ...bbbb.....bbbb...
      ...bb.......bb...
       ...............
        .............
ENDMAP

# Flaming Death
#
NAME:   minmay_guarded_unrand_flaming_death
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:10-
WEIGHT: 3
# Fire elementals are speed 13, but can't open the doors.
# The player may kill the efreet over the lava, losing the scimitar.
# However, the player *can see* that the efreet is wielding an artefact.
KMONS:  l = fire elemental / nothing w:40
KFEAT:  l = l
KMONS:  1 = patrolling Azrael; scimitar unrand:scimitar_of_flaming_death, \
            patrolling efreet; scimitar unrand:scimitar_of_flaming_death
KPROP:  1' = no_tele_into
SUBST:  v : vc
SUBST:  ' = .
MAP
 ...........
..vvvv+vvvv..
.vvlllllllvv.
.vlllllllllv.
.vlllvvvlllv.
.vllvv'vvllv.
.vll+'1'+llv.
.vllvv'vvllv.
.vlllvvvlllv.
.vlllllllllv.
.vvlllllllvv.
..vvvv+vvvv..
 ...........
ENDMAP

# Ring of the Mage
#
NAME:   minmay_guarded_unrand_mage
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:16-
WEIGHT: 3
MONS:   wizard, orange crystal statue / silver statue
KMONS:  3 = lich / ancient lich
KITEM:  3 = ring of protection from magic unrand:ring_of_the_mage
KPROP:  32' = no_tele_into
SUBST:  ' = .
MAP
.......             .......
.ccccc..           ..ccccc.
.c...c...         ...c...c.
.c.1.+....       ....+.1.c.
.c...c.....     .....c...c.
.cc+cc......   ......cc+cc.
...........................
 ......WWWWWWWWWWWWW......
  .....WwwwwwwwwwwwW.....
   ....WwcccccccccwW....
    ...Wwc'''c'''cwW...
     ..Wwc'3'='2'cwW..
      .Wwc'''c'''cwW.
      .Wwcccccc=ccwW.
      .Wwc'''c'''cwW.
     ..Wwc'2'='2'cwW..
    ...Wwc'''c'''cwW...
   ....Wwcc+ccccccwW....
  .....WwwwwwwwwwwwW.....
 ......WWWWWWWWWWWWW......
...........................
.cc+cc......   ......cc+cc.
.c...c.....     .....c...c.
.c.1.+....       ....+.1.c.
.c...c...         ...c...c.
.ccccc..           ..ccccc.
.......             .......
ENDMAP

# Sword in stone
#
# There's a sword stuck inside a stone. Some knights are milling around
# wondering how to get it out. If you had both Shatter and Apportation,
# you could become the monarch! Or not..... (by Shiori)
#
# This is not about guarding an unrandart, but very close in spirit. (dpeg)
# If the vault comes up in Orc or Elf, there will be uniques or natives
# around.
#
NAME:   sword_in_stone
TAGS:   mini_float patrolling
DEPTH:  D:5-26, Vault, Orc, Elf
NSUBST: k = 4=k / *= .:19 k:1
KITEM:  S = good_item long sword / good_item great sword / good_item demon blade /\
            good_item triple sword / good_item double sword
KFEAT:  S = known teleport trap
NSUBST: n = n/cbn
: if you.branch() == "Orc" then
NSUBST: k = 1:o / *:k
KMONS:  k = orc warrior / orc knight w:5 / orc w:1
: elseif you.branch() == "Elf" then
NSUBST: k = 2=CDKL / *:k
KMONS:  k = deep elf knight
: elseif you.absdepth() < 10 then
SUBST: k = AWXYZ
: elseif you.absdepth() < 13 then
SUBST: k = ABCDE
: elseif you.absdepth() < 16 then
SUBST: k = CDEFG
: elseif you.absdepth() < 19 then
SUBST: k = FGHIJ
: elseif you.absdepth() < 22 then
SUBST: k = HIJKL
: else
SUBST: k = KLMNO
: end
KMONS: A = Blork the Orc / human; long sword | falchion . chain mail . shield
KMONS: B = human / human; great sword . banded mail|plate mail
KMONS: C = Urug / elf; sabre | long sword . leather armour . buckler | nothing
KMONS: D = Joseph / elf; long sword | scimitar . chain mail . shield
KMONS: E = Erica / orc knight
KMONS: F = Harold / orc knight
KMONS: G = Donald / hell knight
KMONS: H = Jozef / hell knight
KMONS: I = Louise / wizard; long sword . robe | leather armour . shield
KMONS: J = Maud / necromancer; great sword . robe | leather armour
KMONS: K = Frances / deep elf knight
KMONS: L = Agnes / deep elf knight
KMONS: M = Rupert / vampire knight
KMONS: N = Wiglaf / vault guard
KMONS: O = Frederick / draconian knight
KMONS: W = human; short sword . banded mail | chain mail . large shield
KMONS: X = human; scimitar . scale mail|chain mail . shield
KMONS: Y = human; sabre | long sword . robe | leather armour . buckler | nothing
KMONS: Z = orc; falchion | long sword . ring mail | scale mail . shield | nothing
KMONS: o = Blork the orc / orc warrior; great sword | long sword . chain mail . shield
MAP
kkkkkkk
kkkkkkk
kknnnkk
kknSnkk
kknnnkk
kkkkkkk
kkkkkkk
ENDMAP


###################################################################
#
# <<9>> The classics.
#      These are ancient minivaults, or expansions of them.
#
###################################################################

# Wizard's laboratory
NAME:  laboratory
MONS:  wizard, small abomination, large abomination
MAP
ccccccc+cc
c........c
c........c
c..1.....c
c........c
cc+ccccccc
c***c3232c
c|**+2223c
c||*c3322c
cccccccccc
ENDMAP

# This wizard likes to experiment!
NAME:    laboratory_2
MONS:    col:lightred wizard spells:polymorph_other;paralyse;blink\
         ;bolt_of_fire;bolt_of_fire;teleport_self
DEPTH:   D:10-26, Vault
MONS:    laboratory rat
MAP
ccccccc+cc
c........c
c........c
c..1.....c
c........c
cc+ccccccc
c***c2222c
c|**+2222c
c||*c2222c
cccccccccc
ENDMAP

# Lava pond
NAME: minivault_8
TAGS: allow_dup
MONS: patrolling molten gargoyle
SUBST: F = G:99 F:1
KMONS: F = orange crystal statue / silver statue / ice statue
MAP
x.x.x.x.x.x.
.c.c.c.c.c.x
x...l1l...c.
.c.llllll..x
x.lllllll1c.
.c.llFGll..x
x..llGFll.c.
.c1lllllll.x
x..llllll.c.
.c...l1l...x
x.c.c.c.c.c.
.x.x.x.x.x.x
ENDMAP

# Evil zoo
#
# The marker affects find_connected_range() so that each door opens and
# closes separately rather than all of them joining together into a huge
# gate that opens all at once.
NAME:   minivault_9
TAGS:   allow_dup
DEPTH:  D:15-27, Elf, Vault, Crypt, Dis, Geh, Tar, Coc
MARKER: X = lua: props_marker { connected_exclude="true" }
SUBST:  X = =
MAP
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXX8888XXX
XXX8998XXX
XXX8998XXX
XXX8888XXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
ENDMAP

# Closed-box minivault
NAME:  minivault_12
DEPTH: D:8-26
MAP
............
.GxxxxxxxxG.
.x>9$9$9$<x.
.x.$9$9$.$x.
.x$.****$.x.
.x.$*||*.$x.
.x$.*||*$.x.
.x.$****.$x.
.x$9$9$9$.x.
.x<$9$9$9>x.
.GxxxxxxxxG.
............
ENDMAP

# Little trap spiral
NAME: minivault_13
TAGS: abyss ruin_abyss
SHUFFLE: AB, CD, EH/FG
KFEAT: ACEH = any trap
KITEM: ABCD = gold / nothing
SUBST: F = G:99 F:1
KMONS: F = orange crystal statue / silver statue / ice statue
MAP
............
.xxxxxxxxxx.
.+.Ax.C=.9x.
.x.B=.Dx..x.
.xxxxxxxx=x.
.x.8+|0x8.x.
.x8$x.|x..x.
.xx=xxxx=xx.
.x.9=EFx..x.
.x..xGH=9.x.
.xxxxxxxxxx.
............
ENDMAP

# Lava pond
NAME:  minivault_15
TAGS:  extra luniq_mini
KMONS: 1 = silver statue / ice statue
KFEAT: 1 = <
MAP
.........
...lll...
..vvlvv..
.lv|*|vl.
.ll*1*ll.
.lv|*|vl.
..vvlvv..
...lll...
.........
ENDMAP

NAME:    minivault_16
TAGS:    allow_dup extra luniq_mini
WEIGHT:  40
# as this replaces the former statue only minivaults
SHUFFLE: G111
MONS:    orange crystal statue / silver statue / ice statue
MAP
...........
...........
...........
...........
...........
.....G.....
...........
...........
...........
...........
...........
ENDMAP

NAME: minivault_20
TAGS: allow_dup extra luniq_mini abyss ruin_abyss
MAP
............
.xxxx..xxxx.
.x........x.
.x..xxxx..x.
.x.x....x.x.
...x.x9.x...
...x.9x.x...
.x.x....x.x.
.x..xxxx..x.
.x........x.
.xxxx..xxxx.
............
ENDMAP

NAME:    minivault_25_ag
TAGS:    allow_dup extra luniq_mini abyss ruin_abyss
SHUFFLE: XY, ABCDE
SUBST:   X=x, Y=+
SUBST:   A=?, B=%%%*, C=T, D=0009, E=89
MAP
............
.xxXxxxxxxx.
.x........x.
.x.xYxxxx.Y.
.x.x....X.x.
.x.x.AA.x.x.
.x.x.AA.x.x.
.x.X....x.x.
.Y.xxxxYx.x.
.x........x.
.xxxxxxxXxx.
............
ENDMAP

NAME: minivault_28
TAGS: allow_dup abyss ruin_abyss
MAP
...........
.xxxx.xxxx.
.x.......x.
.x..999..x.
.x.9...9.x.
...9.I.9...
.x.9...9.x.
.x..999..x.
.x.......x.
.xxxx.xxxx.
...........
ENDMAP

NAME: special_room
TAGS: allow_dup luniq no_item_gen layout_basic
CHANCE: 20%
DEPTH: 6-30
{{
    local width = 5 + crawl.random2avg(6, 2)
    local height = 5 + crawl.random2avg(6, 2)

    extend_map { width = width, height = height }
    make_box { x1 = 0, y1 = 0, x2 = width - 1, y2 = height - 1, floor = 'O' }
    _G.subvault('O : special_room')

    local entrance_x, entrance_y
    if crawl.coinflip() then
        entrance_x = crawl.coinflip() and 0 or width - 1
        entrance_y = crawl.random_range(1, height - 2)
    else
        entrance_x = crawl.random_range(1, width - 2)
        entrance_y = crawl.coinflip() and 0 or height - 1
    end

    mapgrd[entrance_x][entrance_y] = '+'
}}
MAP
ENDMAP

NAME: crypt_curse_skull
TAGS: allow_dup luniq extra
DEPTH: Crypt
CHANCE: 3333
MONS: curse skull
MAP
1
ENDMAP

NAME: crypt_curse_skull_rare
TAGS: allow_dup luniq extra
DEPTH: Crypt
CHANCE: 1429
MONS: curse skull
MAP
1
ENDMAP


#### commented out vaults #### should look into these at some point

## Wet chambers - two mutually exclusive versions (Onia Ninara)
##
#NAME:    onia_ninara_007_chamber_of_wet_secrets
#DEPTH:   D:8-13
#TAGS:    no_monster_gen no_pool_fixup
#KMONS:   1 = centaur
#KMONS:   2 = water moccasin
#KMONS:   3 = electric eel
#ITEM:    bread ration/meat ration/royal jelly/potion of porridge, good_item cloak/any book
#SHUFFLE: !;
#SUBST:   " = .:80 W:30
#SUBST:   ; = .:80 W:30
#SUBST:   ! = w:20 W ? c
#KFEAT:   3 = w
#KFEAT:   2 = W / .
#KFEAT:   1 = W / . w:30
#KFEAT:   d = W / .
#KFEAT:   e = W / .
#KFEAT:   ? = spear trap / blade trap
#MAP
#.........
#.ccccccc.
#.c?;2Wdc.
#.ccWccec.
#.c.w"c3c.
#.c"w"ccc.
#.c>w!;!c.
#.c"w!!;c.
#.c.w!;!c.
#.c1w?T!c.
#.c$w;!!c.
#.cccc=cc.
#.........
#ENDMAP
#
#NAME:    onia_ninara_008_deeper_chamber_of_wet_secrets
#DEPTH:   D:20-26
#TAGS:    no_monster_gen no_pool_fixup
#KMONS:   1 = yaktaur captain
#KMONS:   2 = anaconda
#KMONS:   3 = storm dragon
#ITEM:    potion of cure mutation/potion of gain dexterity/potion of gain strength
#ITEM:    potion of gain intelligence/potion of experience/w:40 potion of heal wounds
#SHUFFLE: de, !;
#KFEAT:   3 = w / .
#KFEAT:   | = W / .
#KFEAT:   d = W / .
#KFEAT:   e = W / .
#KFEAT:   2 = W
#SUBST:   ; = .:80 W:30
#SUBST:   " = .:80 W:30
#SUBST:   ! = w:20 W ? c
#KFEAT:   ? = zot trap
#MAP
#.........
#.ccccccc.
#.c?.2Wdc.
#.ccWcc|c.
#.c"w"c3c.
#.c"w"ccc.
#.c"w!;!c.
#.c"w!?;c.
#.c"w!!;c.
#.c1w;U!c.
#.c$w!!;c.
#.cccc=cc.
#.........
#ENDMAP
