##############################################################################
# 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 Vaults 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, Vaults, 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:7-14
TAGS:    extra luniq_mini
SHUFFLE: 11%
MONS:    killer bee / nothing w:5
SUBST:   % = %*
MAP
xxxxxx
x1111x
x1111x
x++++x
@....@
ENDMAP

# Closed beehive
# Should work without explicit floor margin (dp)
NAME:  hive_lemuel
DEPTH: D:9-27, Spider
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
COLOUR:a = yellow
TILE:  a = wall_wax
SUBST: a = x
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
KITEM: R = w:2 honeycomb / w:1 royal jelly
COLOUR:a = yellow
TILE:  a = wall_wax
SUBST: a = x
MAP
............
....aaaa....
..a2a2aaaa..
..aaRa2a2a..
.aa2aRa2aaa.
.a2aRa1aRa2.
.aa2aRaRa2a.
.aaa2a2a2aa.
..a2aRa2aa..
...aa2aa2a..
....aaaa....
............
ENDMAP

# Not Minivault 9 (by Mu.)
NAME:   not_minivault_9_mu
TAGS:   allow_dup
WEIGHT: 1
DEPTH:  D:15-27, Elf, Vaults
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
DEPTH: D:8-13, Lair, Spider
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:8-13, Lair:2-, Spider
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:8-13, Lair, Spider
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, Spider
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:8-13, Lair:2-, Spider
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
KFEAT:  n = iron_grate
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:  adder / ball python
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_des n_spe n_noc tile:mons_megabat
KMONS:  2 = bat name:microbat n_rpl n_des n_spe n_noc col:magenta tile:mons_microbat
# Can we spell them this way?  Please?
KMONS:  3 = bat name:fruity n_adj n_des n_spe n_noc col:lightmagenta tile:mons_fruity_bat
KMONS:  4 = bat name:giga n_adj n_des n_spe n_noc 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_des n_spe n_zom
# The only here without a basis in reality.
KMONS:  7 = bat simulacrum name:ice_bat n_rpl n_des 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_des 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_des n_spe n_zom
# Correction, this one, added because of a tile, is not real as well.
KMONS:  A = bat name:phase n_adj n_des n_spe col:lightgreen spells:blink tile:mons_phase_bat
# Carpathian Dwarf Mountain Bat.  Sadly the adjectives are in a wrong order.
KMONS:  B = bat name:dwarf_mountain n_adj n_des n_spe n_noc
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
xxxxxBxx.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 adder / w:4 ball python / 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 / adder / 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, Vaults: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, Vaults, Elf, Snake
MONS:  patrolling guardian serpent
: local b = crawl.random2(10)
: if b > 7 then
ITEM:  any good_item / any mimic
: elseif b > 1 then
ITEM:  any good_item w:1 / any mimic w:3
: else
ITEM:  any mimic
: end
MAP
...........
.xxxxxxxxx.
.xdddddddx.
.xdddddddx.
.xdddddddx.
.xdd.1.ddx.
.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:  ball python / adder / water moccasin / 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
: if you.branch() == "Swamp" then
KFEAT:  t = mangrove
: end
SUBST:    ' = .
: kmons("% = nothing w:10 / raven w:"..you.absdepth())
MAP
tttt
t%1t
ttt'@
ENDMAP

NAME:   nicolae_underground_beach
DEPTH:  D:2-
TAGS:   no_trap_gen no_pool_fixup
SUBST:  N = MO, M = bW, O = wW
: if you.absdepth() > 6 then
SUBST:  b = SBB
KPROP:  B = bloody
SUBST:  B = S
NSUBST: S = 3:v / *:S
: dgn.delayed_decay(_G, 'v', 'human corpse')
NSUBST: w = 4:j / *:w
KMONS:  j = shark
KFEAT:  j = w
: else
SUBST:  b = S
TAGS:   no_monster_gen
: end
SUBST:  E = .S
COLOUR: Sv : brown
FTILE:  vSwWj = floor_sand
SUBST:  S = .
MAP
      xxxxx
    xxxMNOxxx
   xxbbMNOwwxx
xxxxbbbMNOwwwx
.EEEbbbMNOwwwx
@EEEbbbMNOwwwx
.EEEbbbMNOwwwx
xxxxbbbMNOwwwx
   xxbbMNOwwxx
    xxxMNOxxx
      xxxxx
ENDMAP

# The dragon can be ood, but it can only get out if you let it chase you. A
# window provides ample warning.
NAME:   evilmike_quicksilver_bait
TAGS:   no_monster_gen
DEPTH:  D:16-
KITEM:  1 = gold, gold, gold, superb_item, acquire any
KMONS:  1 = patrolling quicksilver dragon
MAP
 ccccccccccccc
@llllllllllllc
 cnccccccccclc
 c1llllllllllc
 ccccccccccccc
ENDMAP

NAME:    hangedman_aviary
TAGS:    no_rotate no_h_mirror
DEPTH:   D:13-
MONS:    raven, tengu, harpy, phoenix
: if you.absdepth() < 18 then
SUBST:   3 = 1, 54 = 3
: else
SHUFFLE: wW / l'
SUBST:   ' = l, " = %*, 4 = 3, 5 = 4
: end
KMASK:   wWl = no_monster_gen
MAP
cccccccWW.@@.WWccccccc
c54..2ccW.xx.Wcc2..45c
cc3ww.%c......c%.ww3cc
 c*.ww1cc....cc1ww.*c
 cc*.w1........1w.*cc
  cc"2.cc.xx.cc.2"cc
   cccccW.@@.Wccccc
ENDMAP

NAME:   introduction_to_nature_1
TAGS:   no_monster_gen no_pool_fixup uniq_introduction_to_nature
DEPTH:  D:8-13
WEIGHT: 3
ITEM:   any potion
: if crawl.one_chance_in(8) then
ITEM:   Young Poisoner's Handbook / book of Changes / \
        randbook disc:Poison disc2:Transmutation slevels:8 w:5 / \
        randbook numspells:5 title:Nature \
        spells:beastly_appendage|summon_small_mammals|sticks_to_snakes|call_canine_familiar|spider_form
: else
ITEM:   randbook numspells:5 title:Nature \
        spells:beastly_appendage|sting|sticks_to_snakes|cure_poison|spider_form
: end
: if crawl.coinflip() then
ITEM:   arrow ego:poisoned / javelin ego:poisoned q:4-6 / dart ego:poisoned
: else
KITEM:  f = blowgun / w:5 nothing, needle ego:poisoned / needle ego:curare / needle ego:paralysis
: end
ITEM:   any potion q:2-3
MONS:   plant, oklob sapling
MONS:   ball python, adder, oklob plant
KFEAT:  78 = W
KFEAT:  B = w
KFEAT:  ' = known shaft trap
KFEAT:  ~ = alarm trap / floor
KFEAT:  ` = needle trap / web / floor w:30
KMONS:  6 = water moccasin
KMONS:  7 = spider
KMONS:  8 = giant centipede
KMONS:  9 = hound / jackal
KMONS:  B = butterfly att:neutral
KMONS:  ' = wandering mushroom
: if you.absdepth() < 11 then
KFEAT:  ? = altar_fedhas
SUBST:  m : 1twx
SUBST:  5 = 25
SUBST:  7 = 78
: else
SUBST:  ? = 6
: end
: if crawl.coinflip() then
SHUFFLE: def
: end
KMONS:  & = bush
SUBST:  & = wwwW&1
SUBST:  x : xxxcc
MAP
 tttttttttt@1
@teWWtwwww+tt`w1
wt~xWWWxxxxtw`Ww1
wt6xxxx77+dtwwwWx
wtt+3?xxxxttwWW1x
w1434.x'x'ft5wxxx
w1.4.mwxwxttWwgx
.w1..mmxxxWWww.x
..w33.Ww2WwwB.4x
.4....3wwww.3.xx
 ..........3.&1
   @9.......11
    ...1.
ENDMAP

NAME:   introduction_to_nature_2
TAGS:   no_monster_gen no_pool_fixup uniq_introduction_to_nature
DEPTH:  D:8-13
ITEM:   any potion
: if crawl.one_chance_in(8) then
ITEM:   Young Poisoner's Handbook / book of Changes / \
        randbook disc:Poison disc2:Transmutation slevels:8 w:5 / \
        randbook numspells:5 title:Nature \
        spells:beastly_appendage|summon_small_mammals|sticks_to_snakes|call_canine_familiar|spider_form
: else
ITEM:   randbook numspells:5 title:Nature \
        spells:beastly_appendage|sting|sticks_to_snakes|cure_poison|spider_form
: end
: if crawl.coinflip() then
ITEM:   arrow ego:poisoned / javelin ego:poisoned q:4-6 / dart ego:poisoned
: else
KITEM:  f = blowgun / w:5 nothing, needle ego:poisoned / needle ego:curare / needle ego:paralysis
: end
ITEM:   any potion q:2-3
MONS:   plant, oklob sapling
MONS:   ball python, adder, oklob plant
KFEAT:  78 = W
KFEAT:  B = w
KFEAT:  ' = known shaft trap
KFEAT:  ` = web / floor w:60
KMONS:  6 = water moccasin
KMONS:  7 = spider
KMONS:  8 = giant centipede
KMONS:  9 = hound / jackal band
KMONS:  B = butterfly att:neutral
KMONS:  ' = wandering mushroom
: if you.absdepth() < 11 then
KFEAT:  ? = altar_fedhas
SUBST:  m : 1twx
SUBST:  5 = 25
SUBST:  7 = 78
: else
SUBST:  T = tx
SUBST:  ? = 6
: end
: if crawl.coinflip() then
SHUFFLE: def
: end
KMONS:  & = bush
SUBST:  & = ww&&1
SUBST:  x : xxxcc
SUBST:  z : wW
MAP
  xxxxxxx
  x7`f`7x
  x`````x
  x`````xxtttt
  x>````xttttttt
  xxx&xxxtt.6tt
  x.```.xt11ttt
 tx.....x3tttw
@t.4x.x..3twww@
tt.3.....Wwww1
tt4.....3WWww
twtt.3...WwwB
tt't.....Wwwt
tettwwx+xwwtt
tttttttWttwt
t15wtBwwWttt
tgww1wwwwWwt
tw2WwWWWWwWttt
tt1wwwWwwt1Wtt
 tww1wwWwt?ttt
 ttwBwwWwttdtt
  ttwwWwt34t1t
  ttw1ttttttzt
  tttt...4wzwt
   1.9....wz
    .......
    ...@
ENDMAP

NAME:    hangedman_parallel_progression
TAGS:    patrolling no_monster_gen transparent
TAGS:    layout_rooms layout_misc layout_roguey layout_basic
DEPTH:   D:11-16
MONS:    rat / grey rat w:2, bat, giant newt / giant gecko, worm, ooze
MONS:    giant cockroach / giant mite w:8, jackal
KMONS:   8 = ball python / adder w:8
KMONS:   A = green rat
KMONS:   B = vampire bat / fire bat w:8
KMONS:   C = iguana / basilisk w:8
KMONS:   D = brain worm w:5 / giant leech
KMONS:   E = jelly
KMONS:   F = worker ant / giant centipede w:8
KMONS:   G = hound / wolf w:5
KMONS:   H = water moccasin
KMONS:   I = orange rat
KMONS:   J = unseen horror
KMONS:   K = alligator
KMONS:   L = rock worm
KMONS:   M = brown ooze / slime creature
KMONS:   N = demonic crawler
KMONS:   O = hell hound
KMONS:   P = black mamba
KITEM:   IJKLMNOP = any, any / gold w:5 / nothing
SHUFFLE: 1AI / 2BJ / 3CK / 4DL / 5EM / 6FN / 7GO / 8HP
MAP
xxxx+xxx    xxxx+xxx    xxxx+xxx    xxxx+xxx
x1x..xIx    x2x..xJx    x3x..xKx    x4x..xLx
x11.xxAx    x22.xxBx    x33.xxCx    x44.xxDx
xAx%%xAx    xBx%%xBx    xCx%%xCx    xDx%%xDx
xAxx.11x    xBxx.22x    xCxx.33x    xDxx.44x
xIx..x1x    xJx..x2x    xKx..x3x    xLx..x4x
xxx+xxxx    xxx+xxxx    xxx+xxxx    xxx+xxxx
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-, Vaults: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 name_nocorpse ; 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

NAME:  nooodl_orcs_dogs
DEPTH: D:10-, Orc
TAGS:  mini_float
: if you.absdepth() > 18 then
MONS:  w:5 orc warlord / orc knight / orc warrior / orc sorcerer / w:5 orc wizard
: elseif you.absdepth() > 13 then
MONS:  orc knight / orc warrior / orc wizard / w:5 orc
: else
MONS:  orc warrior / orc wizard / orc
: end
MONS:  warg
MAP
.................
.wwwwwww..wwwwwww.
.wxxxxxx++xxxxxxw.
.wx%...x..x...%xw.
.wx.11.x..x.11.xw.
.wx.22.+..+.22.xw.
.wx.11.x..x.11.xw.
.wx%..%x..x%..%xw.
.wxxxxxxxxxxxxxxw.
.wwwwwwwwwwwwwwww.
..................
ENDMAP

# This vault was built by evilmike, but the idea is mikee's. Who is really the
# evil one here?
NAME:   mikee_hates_you
TAGS:   no_monster_gen
DEPTH:  D:13-27
KPROP:  l = no_cloud_gen
KMONS:  1 = generate_awake siren ; trident ego:distortion w:5 | trident ego:venom
KITEM:  1 = acquire any
MARKER: ! = lua:fog_machine { \
                cloud_type = "foul pestilence", \
                pow_min = 100, pow_max = 100, delay = 10, \
                size = 1, walk_dist = 0, start_clouds = 1 \
            }
MARKER: + = lua:props_marker { \
                door_open_prompt= "This door is covered in warnings. Open " .. \
                                  "it anyway?", \
                door_description_prefix= "warning-scrawled " \
            }
MARKER: + = lua:restrict_door()
MARKER: = = lua:restrict_door()
SUBST:  ! = .
MAP
ccccccccccc
cccccc=cccc
@+!!!!l1=>c
cccccccnccc
cccccccnccc
       @
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.xxmx.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
:   if you.branch()=="Lair" then
MONS:   spriggan, spriggan druid n_adj n_noc name:young hd:8, spriggan rider
:   else
MONS:   spriggan, spriggan druid, spriggan rider
:   end
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:    tengu_band
DEPTH:   D:9-, Shoals, Swamp
TAGS:    no_pool_fixup
MONS:    tengu
MONS:    tengu ; war axe / tengu ; long sword / tengu ; scimitar
MONS:    tengu spells:airstrike;magic_dart;iskenderun's_mystic_blast tile:mons_tengu_conjurer
: if you.branch() == "Swamp" then
KFEAT:  t = mangrove
: end
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

NAME:   evilmike_dwarf_trog_shrine
DEPTH:  D:14-23, Vaults, Elf
MONS:   deep dwarf berserker
: if you.absdepth() < 19 then
NSUBST: 1 = 2:2 / *:1
: end
SUBST:  2 = 1'
KMONS:  _ = deep dwarf berserker
KFEAT:  _ = altar_trog
SUBST:  C : c', B : +', D : +', E : +c
SUBST:  = = ccc=
FTILE:  *|_1+'c = floor_hall
FTILE:  # = floor_rough_lightred
MARKER:  # = lua:fog_machine { cloud_type = "flame", \
                pow_min = 10, pow_max = 10, delay = 10, \
                size = 1, walk_dist = 0, start_clouds = 1 }
SUBST:  '# = .
MAP
.................
.ccccccccccccccc.
.ccccc#ccc#ccccc.
.c*1''''_''''1|c.
.c'''''''''''''c.
.c''''''C''''''c.
.ccccccBcBcccccc.
....ccc'C'ccc....
   ..cc'''cc..
    ..='2'=..
   ..cc'''cc..
 ...ccc'c'ccc...
 .cccccDcDccccc.
 .c'''''c'''''c.
 .c'''c'''c'''c.
 .c'1'c'''c'1'c.
 .cccccE+Eccccc.
 .ccc#c...c#ccc.
 ...............
   .....@.....
ENDMAP

NAME: lookout_dungeons_type
DEPTH: D:4-14
TAGS: extra no_pool_fixup layout_rooms layout_city
MONS: w:1 generate_awake centaur / w:4 nothing
MAP
....@....
.........
.........
...www...
...w1w...
...x+x...
   x.x
   x=x
    @
ENDMAP

NAME:    Guppyfry_Hobgoblin_minivault
DEPTH:   D:2-4
TAGS:    no_monster_gen mini_float
MONS:    hobgoblin, jackal, goblin
ITEM:    meat ration / beef jerky / any food / gold / rat corpse
SHUFFLE: 12dT
SUBST:   ? = 123d.
MAP
.......
.xxxxx.
.x??dx.
.+212+.
.x?dTx.
.xxxxx.
.......
ENDMAP

NAME: wad_orctagon
DEPTH:  D:2-4
WEIGHT: 4
MONS:   orc
MAP
......xxxxxxxxxxxxxx......
.....xxxxxxxx.1.1xxxx.....
....xx.xxxxx.G..G.xxxx....
...xx...xxxx......xxxxx...
..xxxx.xxxxxx....xxxxxxx..
.xxxxx=xxxxxx.mm.xxxxxxxx.
.xxIx.I.xIx.xx++xx.xxx...x
@+...m.m...x......x.+.mmm@
.xxIx.I.xIx.xx++xx.xxx...x
.xxxxxxxxxxxx.mm.xxxxxxxx.
..xxxxxxxxxxx....xxxxxxx..
...xxxxxxxxx......xxxxx...
....xxxxxxxx.G..G.xxxx....
.....xxxxxxxx.1.1xxxx.....
......xxxxxxxxxxxxxx......
ENDMAP

NAME:    hangedman_summoners_spam
TAGS:    no_monster_gen patrolling abyss
DEPTH:   D:18-, Vaults:3-7, Elf, Crypt
MONS:    boggart, vampire, kobold demonologist, deep elf summoner
MONS:    shadow demon, deep elf demonologist, vampire mage
KMONS:   8 = mummy priest
ITEM:    book of callings w:5 / book of summonings / grand grimoire w:5 / \
         book of beasts / randbook disc:summoning numspells:6
ITEM:    staff of summoning w:20 / rod of demonology w:5 / rod of summoning w:5
ITEM:    amulet of warding w:5 / amulet of warding randart
ITEM:    air elemental fan / lamp of fire / \
         stone of earth elementals / lantern of shadows
KITEM:   % = any, any / gold / nothing, any / nothing
KITEM:   _ = scroll of unholy creation, scroll of unholy creation / nothing
KFEAT:   _ = altar_sif_muna
KMASK:   "'@ = !no_monster_gen
SHUFFLE: 12, 34, 12 / 34
NSUBST:  ' = 1:@ / * = .@
SUBST:   c : ccb
: if you.branch() == "Abyss" then
SUBST:   bc = xcccccvb
: elseif you.branch() == "Crypt" then
SUBST:   5 = 7, 6 = 8
: elseif you.branch() == "D" or you.branch() == "Vaults" then
SHUFFLE: 56 / 78
: end
MAP
ccccccccccccccc
c24c5de6fd5c32c
c%%c*%...%*c%%c
c..cccc+cccc..c
c.............c
c.cG..g_g..Gc.c
c.............c
c..ccc+++ccc..c
c%%c.......c%%c
c13c"""U"""c14c
cccc'''''''cccc
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:  crimson 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.)
# XXX: Undiggable glass has been converted to statues.
NAME:   horrible_house_mu
DEPTH:  D:16-25, Vaults
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...lGll.llGl...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:   orange demon / 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
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
DEPTH: D:13-27, Vaults, Elf, Spider
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

##### Orange demons (4) and bears.
NAME:  einodemon_hairy_minivault
DEPTH: D:9-27
TAGS:  patrolling
MONS:  orange demon / 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!
#
# 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')
MONS:  necrophage
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: 12 = darkgrey
COLOUR: ' = white
MONS:   w:5 shadow demon / lorocyproca / w:40 nothing
MAP
    ...
  .'''''.
 .'''''''.
 '''222'''
.''22222''.
.''22122''.
.''22222''.
 '''222'''
 .'''''''.
  .'''''.
    ...
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:   brimstone fiend
MONS:   ice fiend
MONS:   balrug / hellion
MONS:   blizzard demon
MONS:   crimson imp
MONS:   white imp
SUBST:  " = |
SUBST:  ' = |
: elseif you.absdepth() > 18 then
MONS:   balrug / hellion w:5
MONS:   blizzard demon
MONS:   sun demon / smoke demon w:5
MONS:   ice devil
MONS:   crimson imp
MONS:   white imp
SUBST:  " = |
SUBST:  ' = *
: elseif you.absdepth() > 12 then
MONS:   sun demon / smoke demon w:5, ice devil, crimson imp, white imp
SUBST:  " = *
SUBST:  ' = %
SUBST:  5 = .
SUBST:  6 = .
: else
MONS:   crimson 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
DEPTH:   D:17-27
: if you.absdepth() > 21 then
MONS:    pearl dragon
: else
MONS:    quokka
: end
MONS:    shedu band, ophan, plant
COLOUR:  c = white
TILE:    c = wall_church
FTILE:   .+23GtABC = floor_limestone
COLOUR:  .23 = white
SHUFFLE: ABC
KFEAT:   A = altar_the_shining_one
KFEAT:   B = altar_elyvilon
KFEAT:   C = altar_zin
SUBST:   ' = .
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

NAME:   hangedman_weighted_door
DEPTH:  D:9-, Vaults, Crypt
MONS:   large zombie / large skeleton
KMONS:  A = spectral thing / large simulacrum
KITEM:  A = any good_item
KMASK:  .%* = no_monster_gen
KITEM:  * = star_item
KITEM:  % = any
KMASK:  1 = no_item_gen
MAP
cccc cccc
c11ccc**c
c11cAc%*c
cn+++++nc
c@.....@c
ENDMAP

NAME:   hangedman_blasphemy
DEPTH:  D:20-, Crypt
MONS:   phoenix simulacrum / spectral holy swine
MONS:   shedu zombie / apis skeleton, pearl dragon zombie
MONS:   profane servitor, deep dwarf death knight
COLOUR: G = lightgrey, t = w:5 lightgrey / w:5 darkgrey / brown, c = white
FTILE:  t' = FLOOR_PEBBLE_BROWN
TILE:   t = DNGN_TREE_DEAD, c = WALL_STONE_GRAY
KFEAT:  _ = altar_yredelemnul
MARKER: _ = lua:fog_machine { cloud_type = "foul pestilence", pow_min = 5, \
                               pow_max = 10, delay = 30, size = 1, walk_dist = 0 }
MAP
@@xxxxxxx
@..t....xxxxx
x...'''..c.2x
xt...tc'.c..xxx
x.'.11c'...G.2x
x.'t1cc't.....x
x.'ccc'G...ccxx
x..'''G'''...x
xx...t.'_ccc.x
 xcc...'cc3*.x
 x......c34.xx
 x2.G.c.c*.5x
 xxx..c...xxx
   x2.xxxxx
   xxxx
ENDMAP

NAME:   hangedman_devilish_allure
TAGS:   no_monster_gen no_item_gen patrolling
DEPTH:  D:12-26
WEIGHT: 5
KMONS:  S = silver statue
KITEM:  S = superb_item / any good_item
: if you.absdepth() < 18 then
MONS:   lesser demon, common demon, efreet / large abomination / rakshasa
: else
MONS:   lesser demon / common demon, common demon, greater demon
: end
KMASK:  ` = !no_monster_gen
KMASK:  ` = !no_item_gen
SUBST:  [ = [`
MAP
xxxxxxxxxxxx@@x
@``xll.l.l....x
@``xl.l.l.l..lx
x``x.%vvvvvvvxx
x{`m$*v11123vxx
x`[mlS+11222vxx
x(`m$*v11123vxx
x``x.%vvvvvvvxx
@``xl.l.l.l..lx
@``xll.l.l....x
xxxxxxxxxxxx@@x
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
 .......
..bG?Gb..
.bG...Gb.
.G..*..G.
.?.*1*.?.
.G..*..G.
.bG...Gb.
..bG?Gb..
 .......
ENDMAP

NAME:  minmay_protected_statue
DEPTH: D:9-26
MONS:  silver statue / orange crystal statue, plant, bush
SUBST: n : n:20 G 2:1 3:1
KFEAT: n = iron_grate
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:= / 1:n / *: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, Vaults, 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-, Vaults, 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-, Vaults
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, Vaults, 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-, Vaults, 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-, Vaults, 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

NAME:   evilmike_surprise_oklob
DEPTH:  D:9-, Elf, Vaults
WEIGHT: 5
KMASK:  x = no_wall_fixup
KMONS:  1 = oklob plant
KITEM:  1 = star_item / nothing
KITEM:  | = gold, superb_item
MAP
ccccccccccc
c1x|mmm...c
ccccccccc.c
ccccccccc@c
ENDMAP

NAME:   disabler_island
TAGS:   no_monster_gen no_pool_fixup mini_float
DEPTH:  D:8-14, Lair
SUBST:  ? = W..
NSUBST: ' = 1:| / 2:* / 1:> / 6:2 / *:.
SUBST:  2 = .2
SUBST:  1 = ww1
: if crawl.one_chance_in(3) and (not you.in_branch("Lair") or crawl.coinflip()) then
MONS:   lava snake, orange crystal statue
KFEAT:  1 = lava
SUBST:  wW = l
: elseif crawl.coinflip() then
MONS:   oklob plant, giant eyeball
MONS:   plant, bush
SUBST:  w : 34
COLOUR:  W = green
SUBST:  W = .
# no escape hatch is needed, plants/bushes are destroyable
KFEAT:  > = floor / w:5 altar_fedhas
: else
MONS:   electric eel, basilisk
KFEAT:  1 = deep_water
: end
MAP
    ........
  ............
 ..............
 ..............
.......??.......
....?.1w1?......
....?1w'w1.?....
....1w'''w1.....
....1'''''w1....
....1ww'''1?....
.....?1w1w1.....
......1.?.......
 ..............
 ..............
  ............
   .........
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 generate_awake
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, Vaults
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:   ! : xvcb
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

NAME:   hangedman_glaring_trap
DEPTH:  D:12-, Vaults
WEIGHT: 5
KMASK:  m = no_wall_fixup
KMONS:  1 = eye of devastation
KMONS:  8 = 8
KITEM:  18 = star_item w:9 / any w:1
MARKER: + = lua:restrict_door()
MAP
xxx@x
x8m.xxxxxx
xxm....+1x
xxx@xxxxxx
ENDMAP

NAME:   hangedman_incinerator
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:8-14
MONS:   fire bat, burning bush, fire vortex, flaming corpse
NSUBST: ' = 4:' / *:.
MARKER: ' = lua:fog_machine { cloud_type = "flame", pow_min = 25, \
            pow_max = 75, delay = 50, size = 1, walk_dist = 0, excl_rad = 0 }
MAP
xxxxxxxxx
xl.1xx23x
x1l'3x|2x
x.l''4xxx
x.ll''3xx
x.lll''1x
x'.llll.x
x.'...1lx
+xxxxxxxx
ENDMAP

NAME:   hangedman_eye_storm
DEPTH:  D:20-26
TAGS:   no_monster_gen no_item_gen patrolling
MONS:   golden eye, eye of draining, giant eyeball, \
        eye of devastation / great orb of eyes / shining eye w:5
KPROP:  13' = no_rtele_into
MAP
     c++cccc
   ccc..c3'ccc
  cc'c++c+m''cc
 cc1mm..c.mmm1cc
 c'mm...c...mm'c
cc'm....c..4.m'cc
c+mm...mc+...mm'c
c'm...mm4mm...m'c
c'm.4.m|m2m.4.m+c
c'm...mm|mm...m'c
c+mm...mmm...mm'c
cc'm.4.....4.m'cc
 c'mm...4...mm1c
 cc1mmm...mmm+cc
  cc''mmmmm'1cc
   ccc'+'+'ccc
     ccccccc
ENDMAP

NAME:    hangedman_cracks_in_the_wall
TAGS:    no_monster_gen patrolling
DEPTH:   D:12-26
: if you.absdepth() < 18 then
MONS:    stone golem, cyclops, basilisk, catoblepas
KMONS:   b = rock worm
SUBST:   * = %%***, | = *|
: else
MONS:    stone golem / earth elemental w:7, stone giant, catoblepas, iron dragon
KMONS:   bdf = spectral rock worm
SHUFFLE: ab / cd / ef
: end
KFEAT:   abcd = rock_wall
KFEAT:   ef = stone_wall
SUBST:   5 = 111..
MAP
xxxxxxxxxxxxxx.@@
xxxxaaaaaaaxxx..@
xxxxa1a.a5axxx...
xxaaaa.a.aaaax...
xxa5a.aaa.a1ax...
xxaa.aa2aa.aax...
xba.aa.*3aa.a...@
xb.a$$x*|4aa.x..@
xba.aa.*3aa.a...@
xxaa.aa2aa.aax...
xxa5a.aaa.a1ax...
xxaaaa.a.aaaxx...
xxxxa1a.a5axxx...
xxxxaaaaaaaxxx..@
xxxxxxxxxxxxxx.@@
ENDMAP

NAME:    hangedman_aerie_drop
TAGS:    no_monster_gen no_pool_fixup
DEPTH:   D:17-26, Vaults:4-7
WEIGHT:  3
MONS:    patrolling spriggan air mage ; staff of air
MONS:    patrolling spriggan rider ; spear ego:electrocution . buckler
MONS:    lightning spire, sky beast, electric eel
KMONS:   E = vapour w:10 / ball lightning w:6 / \
             generate_awake air elemental w:7 / air elemental w:1
KITEM:   dT = any weapon good_item ego:electrocution, disc of storms
KFEAT:   E = deep_water
KFEAT:   d = shallow_water
KFEAT:   T = teleport trap
KFEAT:   * = +
MARKER:  * = lua:restrict_door()
MARKER:  T = lua:fog_machine { cloud_type = "rain", pow_max = 2, \
                 delay_min = 10, delay_max = 60, size = 4, walk_dist = 2 }
SHUFFLE: ab, {( / <<
NSUBST:  E = 11:E / *:e, 5 = 2:5 / *:w
SUBST:   e = E5w, a = v
MAP
 {bab bab bababtt
.baEabaEaba...abt4
@nEEwEwEEn1.4.2ntW
.baw5v5wab.3v3.ba@
 .bEnTnE*.4ndn4.+@
.baw5v5wab.3v3.ba@
@nEEwEwEEn1.4.2ntW
.baEabaEaba...abt4
 (bab bab bababtt
ENDMAP

NAME:   nicolae_well_that_was_easy
DEPTH:  D:4-13
TAGS:   no_hmirror no_vmirror no_monster_gen no_trap_gen no_item_gen mini_float
WEIGHT: 3
MARKER: = = lua:restrict_door()
SUBST:  - = ABCDEFHIJKLMNOPQR
KITEM:  A = gossamer rune of zot mimic
KITEM:  B = decaying rune of zot mimic
KITEM:  C = serpentine rune of zot mimic
KITEM:  D = barnacled rune of zot mimic
KITEM:  E = slimy rune of zot mimic
KITEM:  F = silver rune of zot mimic
KITEM:  H = abyssal rune of zot mimic
KITEM:  I = demonic rune of zot mimic
KITEM:  J = glowing rune of zot mimic
KITEM:  K = magical rune of zot mimic
KITEM:  L = fiery rune of zot mimic
KITEM:  M = dark rune of zot mimic
KITEM:  N = iron rune of zot mimic
KITEM:  O = icy rune of zot mimic
KITEM:  P = obsidian rune of zot mimic
KITEM:  Q = bone rune of zot mimic
KITEM:  R = golden rune of zot mimic
MAP
    .......
  ...........
 ....ccccc....
 ..nnc...cnn..
...n.......n...
..cc.9...9.cc..
..cG........c..
..=....-....c..
..cG........c..
..cc.9...9.cc..
...n.......n...
 ..nnc...cnn..
 ....ccccc....
  ...........
    .......
ENDMAP

NAME:    hangedman_jelly_panic
TAGS:    no_monster_gen no_item_gen
DEPTH:   D:4-, Vaults
MONS:    ooze
KMONS:   2J = jelly
KMONS:   3 = brown ooze
KMONS:   4K = slime creature
KMONS:   5L = acid blob w:5 / azure jelly / death ooze
KFEAT:   JKL = altar_jiyva
KITEM:   $ = $, $ w:5 / nothing
MARKER:  + = lua:restrict_door()
: if you.absdepth() > 19 then
SHUFFLE: CD, 2"6; / 3`5~
SUBST:   35`~ : xx., '"~- = .
SUBST:   1 = 5L, 26 = 2
SUBST:   ABE : $, C : $$., D : m..
: elseif you.absdepth() > 12 then
SHUFFLE: AB, CD, 2" / 3`
SUBST:   456-~; = x, '"`E = .
SUBST:   1 = 4:7 K:3
SUBST:   AD : $, B : m.., C : $m.
: elseif you.absdepth() > 7  then
SHUFFLE: AB, CD, 2"6; / 3`5~
SUBST:   14'- = x, 35`~ : xx., ";ED = .
SUBST:   2 : 2:8 J:2, 6 = 1
SUBST:   AC : $, B : m..
: else
SHUFFLE: AB, 3` / 4- / 5~
SUBST:   26"; = x, 35`~ : xx., '-CED = .
SUBST:   1 = 2:9 J:1, 4 = 1
SUBST:   A : $, B : m..
: end
MAP
   xxxxxxxxx
   xxxxxxxxx
  xxx2x1x2xxx
xxxcx"x'x"xcxxx
xxxx.......xxxx
xx3`.DECED.`3xx
xxxx.EABAE.xxxx
xx4-.CB$BC.-4xx
xxxx.EABAE.xxxx
xx5~.DECED.~5xx
xxxx.......xxxx
xxxcx;x+x;xcxxx
  xxx6x.x6xxx
   xxxx+xxxx
   xxxx@xxxx
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-, Vaults
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-, Vaults
SUBST: 8 = 8.......
MARKER: = = lua:restrict_door()
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, ABC
SUBST:   AB = ., C = *
MARKER:  G = lua:props_marker { stop_explore = "statue" }
MAP
xxxxxxx
xxAAAxx
x.....x
x..0..x
x.....x
xx...xx
xxx+xxxxxxxxx
......xx...xx
......x....Bx
...G..+..9.Bx
......x....Bx
......xx...xx
xxx+xxxxxxxxx
xx...xx
x.....x
x..8..x
x.....x
xxCCCxx
xxxxxxx
ENDMAP

NAME:  kb_rosetta
DEPTH: D:6-, Vaults, 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, Vaults, 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:= / 1:n / *: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, Vaults
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, Vaults, 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
MARKER:  G = lua:props_marker { stop_explore = "statue" }
MAP
.............
.............
..v.......v..
...vvvvvvv...
...vgbcdev...
...vfahajv...
...vklanov...
...vpqrimv...
...vv+++vv...
..v.......v..
......G......
.............
ENDMAP

NAME:    onia_ninara_dug_in_and_dangerous
TAGS:    allow_dup abyss ruin_abyss
DEPTH:   D:8-26, Vaults
SHUFFLE: vcb, AB?/CD!, d<>, de
SUBST:   A=9, B=8, C=1, D=9
SUBST:   ? = %:10 *:50 |:60
SUBST:   ! = %:90 *:30 |:10
KMASK:   x = no_wall_fixup
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

NAME:  nooodl_food_tri
TAGS:  no_rotate
ITEM:  any food
SUBST: R = 0d$...
MAP
       x
      xxx
     xxRxx
    xxRRRxx
   xxRRRRRxx
  xxRRRRRRRxx
 xxRRRRRRRRRxx
xxxxxxx+xxxxxxx
ENDMAP

NAME:   wad_scary_box
DEPTH:  D:9-26
WEIGHT: 4
FTILE:  ' = floor_pebble
COLOUR: ' = white
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx...............x
x.x.+.......xx..xx.......xx..x
x..xcccccccc.xxxxxxxx..G.xx.Gxxx
xxx.0098+*|n.+.'.'.'..xx.......+
xxx.0098+**n.+.'.'.'..xx.......+
x..xcccccccc.xxxxxxxx..G.xx.Gxxx
x.x.+.......xx..xx.......xx..x
xxxxxxxxxxxxxx...............x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   wad_mini_maze
DEPTH:  D:7-26
WEIGHT: 4
NSUBST: ? = 1:n / 1:= / *:X
SUBST:  X : cccvvb
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxx@xx
xXXXXXXXXXXXXXXXXXXXXXXXXX.Xx
xX9%......X.......X...X....Xx
xXXXXXX.X.XXXXX.X.XXX.X.XX.Xx
xX......X.......X.....X..X.Xx
xX.???XXX.XXXXXXXXXXX.XX.X.Xx
xX.?**?.......X.X...X.X..X.Xx
xX.?**?.XXXXX.X.X.X.X.XXXX.Xx
xX.?**?.....X.X.X.X.X.X....Xx
xX.X??XXX.X.XXX.X.X.X.X.XXXXx
xX.X9%..X.X.....X.X.X.X....Xx
xX.XXXX.X.X.XXX.X.X%X.XXXX.Xx
xX......X.X...X...X9X......Xx
xXXXXXXXX.XXXXXXXXXXXXXXXXXXx
xxxxxxxxx@xxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   wad_hexagon
WEIGHT: 4
DEPTH:  D:8-26
KFEAT:  t = tree
FTILE:  ' = floor_pebble
COLOUR: ' = white
MAP
xxx...xxxxxxxxxxxxxx...xxx
xx...xxxxxx........xx...xx
x...xxxxx..xxxxxxxx.xx...x
...xxxxx...xxxxxxxxx.xx...
..xxxxx...xxcccccccnx.xx..
.xxxxx..xxxxc'0...'cxx.xx.
.xxxx.xxx*.9v.'..'.cxxx.xx
@....xx**8..=.V''V....+..@
.xxxx.xxx*.9v.'..'.cxxx.xx
.xxxxx..xxxxc'...0'cxx.xx.
..xxxxx...xxcccccccnx.xx..
...xxxxx...xxxxxxxxx.xx...
x...xxxxx..xxxxxxxx.xx...x
xx...xxxxxx........xx...xx
xxx...xxxxxxxxxxxxxx...xxx
ENDMAP

NAME:   wad_rectangle_vault
DEPTH:  D:3-26
WEIGHT: 4
FTILE:  ; = floor_pebble
FTILE: "0~U = floor_pebble_brown
COLOUR: "0 = brown
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x..xxx;;;;;.;;;;;.;;;;;xxx..x
x..xxxx;";...;";...;";xxxx..x
xx.x.x;""";.;"0";.;""";x.x.xx
@.x.x;""~0";""U0";""~"0;x.x.@
xx.x.x;""";.;""";.;0"";x.x.xx
x..xxxx;";...;";...;0;xxxx..x
x..xxx;;;;;.;;;;;.;;;;;xxx..x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   wad_dig_loot
DEPTH:  D:8-26
WEIGHT: 4
FTILE:  " = floor_pebble_brown
COLOUR: " = brown
MONS:   plant
MAP
@....vvvvv..G.@
.""".vvvvv1....
.."..vvvvv.."0.
.....vvvvv.""".
.~G..vvvvv.~...
vvvvv.....vvvvv
vvvvv."...xx*xv
vvvvv."".G.x%8v
vvvvv."...xx*xv
vvvvv0....vvvvv
ENDMAP

NAME:   evilmike_bad_box
DEPTH:  D:13-27, Vaults
TAGS:   mini_float no_wall_fixup
MONS:   boring beetle
NSUBST: 9 = 1:1 / 1:19 / *:9
KMONS:  8 = 8
KITEM:  8 = star_item / superb_item
SUBST:  n : m.., o : m..
MAP
............
............
..nn.oo.nn..
..nmmmmmmn..
...m9999m...
..om9889mo..
..om9889mo..
...m9999m...
..nmmmmmmn..
..nn.oo.nn..
............
............
ENDMAP

NAME:    evilmike_minifort
DEPTH:   D:9-26, Vaults, Elf
TILE:    x = wall_marble
COLOUR:  x = white
TILE:    c = wall_vines
FTILE:   ABCDEFcx+. = floor_vines
SHUFFLE: ABCDEF
NSUBST:  A = 1:> / *=.%
NSUBST:  B = 6:0 / *:., C = 6=$0 / *:., D = 6=%0 / *:.
NSUBST:  E = 1:98 / 1:*| / *:., F = 1:90 / 1:$ / *:.
SUBST:   x = c, ' = .
MAP
ccccc@'''''''@ccccc
cAAAcwwwwwwwwwcBBBc
cAAAcwwwwwwwwwcBBBc
cAAAcGwwwwwwwGcBBBc
cAAAccccc+ccccc.BBc
cAAAc.........+.BBc
cAA.c.........c.BBc
cAA.+..xxxxx..ccccc
cAA.c..xxxxx..+.DDc
ccccc.........c.DDc
cCC.+.........cDDDc
cCC.ccccc+cc+cccccc
cCCCcEEE..c...FFFFc
cCCCcEEEEEcFFFFFFFc
cCCCcEEEEEcFFFFFFFc
ccccccccccccccccccc
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-, Vaults
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-, Vaults
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:14-, 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 n_des 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, Vaults, 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 = FGIJ
: elseif you.absdepth() < 22 then
SUBST: k = IJKL
: else
SUBST: k = KLMNO
: end
KMONS: A = Blork the orc / human; long sword | falchion . chain mail . shield
KMONS: B = human / human; great sword . splint mail|plate armour
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 . splint 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:    wizard col:lightred name:mad n_adj n_noc spells:polymorph_other;\
         paralyse;blink;bolt_of_fire;bolt_of_fire;teleport_self
DEPTH:   D:10-26, Vaults
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, Vaults, Crypt, Dis, Geh, Tar, Coc, Zot
MARKER: X = lua: props_marker { connected_exclude="true" }
SUBST:  X = =
# Pick interesting monsters for dungeon branches. Vaults and D get normal OOD.
: if you.branch() == "Elf" then
KMONS:  8 = deep elf annihilator / deep elf blademaster / deep elf master archer / \
            deep elf sorcerer / deep elf death mage / deep elf demonologist / \
            deep elf high priest / w:20 place:Elf
: elseif you.branch() == "Crypt" then
KMONS:  8 = bone dragon / lich / ancient lich / w:5 death cob / w:5 curse toe / \
            w:5 large zombie / w:5 large skeleton / eidolon / w:20 reaper / \
            soul eater / w:30 place:Crypt
: elseif you.branch() == "Dis" then
KMONS:  8 = w:5 shadow fiend / w:5 ice fiend / w:5 brimstone fiend / w:5 hell sentinel / \
            iron dragon / tormentor / iron golem / place:Dis
: elseif you.branch() == "Geh" then
KMONS:  8 = brimstone fiend / w:5 hell sentinel / hellion / balrug / fire giant / \
            place:Geh
: elseif you.branch() == "Tar" then
KMONS:  8 = w:15 shadow fiend / reaper / w:5 soul eater / shadow dragon / lich / \
            ancient lich / w:15 place:Tar
: elseif you.branch() == "Coc" then
KMONS:  8 = w:15 blizzard demon / frost giant / w:5 titan / w:15 ice fiend / \
            w:5 large simulacrum / place:Coc
: elseif you.branch() == "Zot" then
KMONS:  8 = w:35 nonbase draconian / orb of fire / electric golem / killer klown / \
            death cob / w:5 curse toe / w:5 ancient lich
: end
KITEM:  9 = *
KMONS:  9 = 9
MAP
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXX8888XXX
XXX8998XXX
XXX8998XXX
XXX8888XXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
ENDMAP

# No, John. You are the door vault
NAME:   reverse_minivault_9
DEPTH:  D:15-27, Vaults
WEIGHT: 4
MARKER: X = lua: props_marker { connected_exclude="true" }
SUBST:  X = =
MAP
xxxxxxxxxxxxxx
x8.*.8..8.9.8x
x.XXXXXXXXXX.x
x9XXXXXXXXXX*x
x.XXXXXXXXXX.x
x8XXX....XXX8x
x.XXX.{..XXX.x
x.XXX....XXX.x
x8XXX....XXX8x
x.XXXXXXXXXX.x
x*XXXXXXXXXX9x
x.XXXXXXXXXX.x
x8.9.8..8.*.8x
xxxxxxxxxxxxxx
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.
.+.Ac.Cc.9x.
.x.B=.D=..x.
.xcccccc=cx.
.x.8+|0c8.x.
.x8$c.|c..x.
.xc=cccc=cx.
.x.9=EF=..x.
.x..cGHc9.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: 10% (Spider), 20%
DEPTH: 6-30
{{
    -- An incredibly ugly kludge to avoid duplicating the list of valid
    -- branches/depths (and causing mysterious errors if it's not up to date).
    if not dgn.map_by_tag("special_room") then
      return
    end

    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' }
    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


#### 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 / bolt 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
