##############################################################################
# hell.des: Vestibule entry vaults; the Vestibule itself.
#           Vaults specific to the Hell branches should go to one of
#           dis.des, geh.des, coc.des, or tar.des.
##############################################################################

: crawl_require('dlua/vault.lua')

{{
function hell_entry_feature(e, glyph)
    e.tags("extra luniq_enter_hell chance_enter_hell")
    e.depth_chance("Depths", 10000)
-- start TAG_MAJOR_VERSION == 34
    e.depth_chance("D:21-", 10000)
-- end TAG_MAJOR_VERSION
    e.kfeat(glyph .. " = enter_hell")
    e.tile("v = dngn_metal_wall_darkgray")
end

function hell_entry_tier(e, tier)
    e.tags("nolayout_encompass")
    if tier ~= "low" then
        e.tags("luniq_hellpanabyss_threat_entry")
        if tier == "high" then
            e.tags("uniq_hell_entry_high")
        end
    end
end

function hell_water_abbrev(e, type, baseweight)
    return "patrolling " .. type .. " zombie w:" .. math.floor(baseweight/2) ..
        " / patrolling " .. type .. " draugr w:" .. math.floor(baseweight/3) ..
        " / patrolling " .. type .. " simulacrum w:" .. math.floor(baseweight/6)
end

function hell_water_spawns(e)
    e.kmons("P = " .. hell_water_abbrev(_G, "sea snake", 150) ..
               " / " .. hell_water_abbrev(_G, "alligator", 120) ..
               " / " .. hell_water_abbrev(_G, "anaconda", 130) ..
               " / " .. hell_water_abbrev(_G, "hydra", 230) ..
               "/ kraken zombie w:25 / kraken simulacrum w:12 \
                / patrolling water elemental w:113")
    e.kfeat("Pw = w")
    e.kmask("wW = no_monster_gen")
    e.nsubst("w = 8:P / 4 = Pw / *:w")
end

function hell_lava_spawns(e)
    e.kmons("~ = patrolling molten gargoyle w:5 / patrolling smoke demon w:5")
    e.kfeat("~l = l")
    e.kmask("l = no_monster_gen")
    e.nsubst("l = 6:~ / 4 = ~l / *:l")
end
}}

default-depth: Depths, D:21-

##############################################################################
# Vestibule entries
##############################################################################

# This replaces the hardcoded placement of a hell entrance in Depths;
# it also acts as the backup entrance and the entrance for encompass vault
# placements.
NAME:   hell_entry
TAGS:   allow_dup overwrite_floor_cell no_exits replace_portal transparent
TAGS:   fallback_enter_hell
WEIGHT: 50
: hell_entry_feature(_G, 'O')
MAP
O
ENDMAP

##############################################################################
# Hellmouth (Lemuel)
NAME:   hellmouth_1
ORIENT: float
TAGS:   no_rotate
MONS:   sun demon / smoke demon / soul eater / hell hog
MONS:   hellion / balrug / reaper / sin beast / hell knight
ITEM:   good_item demon blade / good_item demon whip / \
        good_item demon trident
ITEM:   Necronomicon / \
        grand grimoire / scroll of torment pre_id
SUBST:  d=de, ?:?.l, ?=l.
: hell_entry_feature(_G, 'A')
: hell_entry_tier(_G, "mid")
MAP
xxxxxxxxxxxxxxxxxxx
xxxxxxxxlllxxxxxxxx
xxxxxxlllAlllxxxxxx
xxxlllll.d.llll?xxx
xlllllll121lllll?.x
x?lllllll1llll?...x
x.??llllllll?.....x
x...?llllll?......x
x....?lllll.......x
xxx...?lll?.....xxx
xxxx...lll?....xxxx
xxxxx.?ll?....xxxxx
xxxxx?lll.....xxxxx
xxxxxxlll?...xxxxxx
xxxxxxxlll...xxxxxx
xxxxxxxxll?.xxxxxxx
xxxxxxxxll?.xxxxxxx
xxxxxxxxl?@xxxxxxxx
ENDMAP

##############################################################################
# Hellmouth 2 (Lemuel)
NAME:   hellmouth_2
WEIGHT: 6
ORIENT: float
TAGS:   no_monster_gen
MONS:   sun demon / smoke demon / soul eater / hell hog / nothing w:20
MONS:   hellion / balrug / reaper / sin beast / hell knight
ITEM:   good_item demon blade / good_item demon whip /\
        good_item demon trident
ITEM:   Necronomicon / \
        grand grimoire / scroll of torment pre_id
ITEM:   good_item demon blade / good_item demon whip /\
        good_item demon trident / w:30 nothing
SUBST:  d=de, ?:?.l, ?=l.
SUBST:  b : b:30 c v .
KMASK:  @' = !opaque
: hell_entry_feature(_G, 'A')
: hell_entry_tier(_G, "high")
MAP
''''''''''''''''''''''''''
'''''''bbbbbbbbbbbb'''''''
''''bbbb..........bbbb''''
''bbb....llllllll....bbb''
'bb....llllllllllll....bb'
'b....llllllllllllll....b'
'b....llllll??llllll....b'
'b...?lll??.....?lll?...b'
'b...?ll?...111...ll?...b'
@+...?l?...11211d..l?...b'
@+...?l?...12A21|f.l?...b'
'b...?ll...11211d.ll?...b'
'b...?lll?..111..lll?...b'
'b....llll?.....llll....b'
'b....llllll??llllll....b'
'bb....llllllllllll....bb'
''bbb....llllllll....bbb''
''''bbbb..........bbbb''''
'''''''bbbbbbbbbbbb'''''''
''''''''''''''''''''''''''
ENDMAP

##############################################################################
# Hellmouth 3 (Lemuel)
NAME:   hellmouth_3
TAGS:   transparent
ORIENT: float
MONS:   sun demon / hell knight / hell hog / soul eater / smoke demon
MONS:   hellion / balrug w:20 / sin beast
ITEM:   demon blade / demon whip / demon trident
NSUBST: 1 = 1:l / 1:1l / *:1
KMASK:  12Ad = opaque
SUBST:  ? : . l ?:40, ?=l.
: hell_entry_feature(_G, 'A')
: hell_entry_tier(_G, "high")
MAP
              ..??..      ....
   .....     .......     ..??.
  ..??...   ....l?..    ......
 ..?ll?........?l?..   .......
..?lll?.........l.... .....
...?l........??l?.........
 ..........??lll?.........
 ........?lllllll?........
  .....?llllllllll??.....
  ....?lll111111llll?....
   ...?llll12Ad1lll.......
   ....?lll11111ll?.......
   .....?lllll1ll?.........
 ........??llllll......?....
...........?llll?.....ll?...
..?..  .....?ll?.......ll?..
.?...   ...................
....      ........??..
ENDMAP

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

NAME:   grunt_hell_entry_demonic_statue
WEIGHT: 6
ORIENT: float
TAGS:   no_monster_gen no_tele_into
MONS:   sun demon / smoke demon / soul eater / ynoxinul / sixfirhy / \
        neqoxec / w:50 nothing
MONS:   blizzard demon / sin beast / cacodemon / green death / reaper / \
        balrug / hellion w:5 / tormentor w:5 / nothing w:30
ITEM:   skeleton
KFEAT:  b = .
KMONS:  A = obsidian statue
MARKER: A = lua:fog_machine { cloud_type = "grey smoke", \
            pow_min = 20, pow_max = 30, delay = 50, \
            size = 1, walk_dist = 3, start_clouds = 1 }
KMONS:  b = w:100 nothing / w:4 common demon
KPROP:  b = nothing / w:5 bloody
KITEM:  b = nothing / w:1 gold
MARKER: H = lua:props_marker { stop_explore = "statue" }
KFEAT:  HI = G
: hell_entry_feature(_G, 'A')
: hell_entry_tier(_G, "high")
MAP
      xxxxxxx
    xxxbbbbbxxx
  xxxbbbbbbbbbxxx
  xbbbbGbbbGbbbbx
 xxbG1bbbbbbd1Gbxx
 xdb2bb2bGb2bb2bbx
xxbbbbGbbbbbGbbbbxx
xbbGb2bbd3*bb2bGbbx
xbbbbbb%**d*bbbbdbx
xbd1bGb%*A*%bGb1bbx
xb%bbbb%*d*dbbbbbbx
xbbGbbbd%b*bbbbGbbx
xxbbbbGbbbbbGdbbbxx
 xbb1bb2bGd2bb1bbx
 xxbG1bbbbbbb1Gbxx
  xbbbbG1b1Gbbbbx
  xxxbbbbb%bbbxxx
    xxxHdbbIxxx
    xxxv+++vxxx
ENDMAP

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

NAME: lightli_too_deep
TAGS: no_monster_gen nolayout_encompass uniq_hell_entry_high
ORIENT: northeast
MONS: balrug
MONS: sun demon / smoke demon
: hell_entry_feature(_G, 'H')
SUBST: y = x..
SUBST: ; = %A.....l
KITEM: % = dwarf skeleton
KITEM: A = any weapon w:20 / chain mail w:60 / plate armour w:19 / \
           crystal plate armour w:1
: hell_entry_tier(_G, "mid")
MAP
xxxxxxxxxxxxxxx
xxxxcccccccxxxx
xxxxcA;H;Acxxxx
xxxxc;;1;;cxxxx
xxxxc;2|2;cxxxx
xxxxc;;;;;cxxxx
xxxxccc.cccxxxx
xxxxxxy.yxxxxxx
xxxxxxy.yxxxxxx
xxxxxxy.yxxxxxx
xxxxxxy.yxxxxxx
xxxxxy%yxxxxxxx
xxxxxy.yxxxxxxx
xxxxxy.yxxxxxxx
xxxxy...yxxxxxx
xxxy.%...yxxxxx
ENDMAP

##############################################################################
NAME: grunt_hell_horde
TAGS: nolayout_encompass uniq_hell_entry_high transparent
WEIGHT: 6
MONS: hellephant, hell hog
# Second hellephant chance and hell hog counts increases with depth.
: nsubst("1 = 1:1 / 1:2 / 1:2. / 1 = 1:" ..
:         you.depth() .. " .:" .. 5 - you.depth())
: nsubst("2 = " .. you.depth() + 1 .. ":2 / 4:. / * = " ..
:        "2:" .. you.depth() .. " .:" .. 6 - you.depth())
NSUBST: + = 1:+ / 1:+x / *:x
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "high")
MAP
 xxx+xxx
xxl2.2lxx
xl2...2lx
x2.1.1.2x
+...O...+
x2.1.1.2x
xl2...2lx
xxl2.2lxx
 xxx+xxx
ENDMAP

NAME:   grunt_metal_band
TAGS:   transparent
WEIGHT: 6
KMONS:  O = Margery band / hell knight band w:4, hell knight band
KFEAT:  yz = b
SUBST:  b : xxxz
NSUBST: z = 1:y / 1:z
TILE:   y = bedevilled_crystal_gehenna
TILE:   z = bedevilled_crystal_dis
: set_feature_name("crystal_wall", "bedevilled crystal wall")
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "high")
MAP
 xxxxxxx
xb..O..bx
x.......x
x.......x
@...G...@
 .......
   .@.
ENDMAP

NAME: grunt_mini_vestibule
TAGS: nolayout_encompass no_monster_gen uniq_hell_entry_high transparent
: hell_entry_feature(_G, 'O')
KMONS: O = sin beast
MONS: frost giant / quicksilver dragon simulacrum / freezing wraith
MONS: iron dragon / war gargoyle / ancient champion
MONS: salamander tyrant / hell hog / balrug
MONS: eidolon / spectral spark wasp / spectral guardian sphinx
: hell_entry_tier(_G, "high")
MAP
  .....@.....
 ..ccnc+cncc..
..cc.......cc..
.cccc..1..cccc.
.c.ccc...ccc.c.
.n..ccc+ccc..n.
.c...c...c...c.
@+.4.+.O.+.2.+@
.c...c...c...c.
.n..ccc+ccc..n.
.c.ccc...ccc.c.
.cccc..3..cccc.
..cc.......cc..
 ..ccnc+cncc..
  .....@.....
ENDMAP

##############################################################################
# Some branch-inspired mini entries. Total weight 14 for each branch.
NAME:    hangedman_geh_valley
WEIGHT:  4
TAGS:    transparent uniq_hell_entry_geh
KMONS:   O = sun demon / balrug w:1 / nothing w:5
SHUFFLE: +- / +- / =+
NSUBST:  - = 1:+cc / *:c
SUBST:   = = c
KMASK:   l = no_monster_gen
TILE:    c = stone_wall_pyre
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
  xxxxxxxxx
xxxllcccllxxx
xll.cc.cc.llx
x...-.O.-...x
....cc.cc....
@....c+c....@
.............
x.llll.llll.x
xlxxxxlxxxxlx
xxx  xxx  xxx
ENDMAP

# Inspired by the grated corridors in evilmike_geh.
NAME:   pf_hell_entry_great_geh
TAGS:   uniq_hell_entry_geh
WEIGHT: 4
KFEAT:  m = iron_grate
TILE:   c = dngn_stone_wall_red
COLOUR: c = red
FTILE:  .O = floor_infernal_blank
KMASK:  l = no_monster_gen
KPROP:  l = no_tele_into
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
cccc@cccc
clm...mlc
clm...mlc
clm...mlc
clm...mlc
clm...mlc
clm...mlc
clm...mlc
cccc+cccc
ccl...lcc
ccl.O.lcc
ccl...lcc
ccclllccc
ccccccccc
ENDMAP

# Inspired by the entrance to evilmike_geh.
NAME:    pf_vacation_house_of_asmodeus
TAGS:    transparent uniq_hell_entry_geh
WEIGHT:  4
TILE:    c = stone_wall_pyre
COLOUR:  c = red
FTILE:  'O = floor_infernal_blank
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
       @
  ccccc'ccccc
 cc'''c'c'''cc
 c'''''''''''c
 c''vv'''vv''c
 c''vv'''vv''c
 cc'''''''''cc
@''''''O''''''@
 cc'''''''''cc
 c''vv'''vv''c
 c''vv'''vv''c
 c'''''''''''c
 cc'''c'c'''cc
  ccccc'ccccc
       @
ENDMAP

# Inspired by the end of lightli_geh, sort of.
# (Low weight because the associated vault is disabled. -- Grunt)
NAME:   pf_dread_powers_of_hell
TAGS:   transparent uniq_hell_entry_geh
WEIGHT: 2
TILE:   c = dngn_stone_wall_red
COLOUR: c = red
FTILE:  'iO = floor_infernal_blank
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
     ........
    ..cccccc...
   ....cc''ccc..
  ...l..cc'''cc..
 ...lll..cc'''cc..
...lllll..cc'''cc..
..lllllll.'''O''c..
...lllll..cc'''cc..
 ...lll..cc'''cc..
  ...l..cc'''cc..
   ....cc''ccc..
    ..cccccc...
     ........
ENDMAP

NAME:    hangedman_coc_ice_floe
WEIGHT:  7
TAGS:    transparent no_pool_fixup uniq_hell_entry_coc
KMONS:   O = blizzard demon w:5 / nothing
KFEAT:   A = stone_arch
SHUFFLE: ab / ab / ba
SUBST:   a : xww, b = x
TILE:    x = wall_ice
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
   ..  ..
 .........
...wwWww..
..wwAxxww..
..wxxxxxw..
..wxxxxbw..
 .waxxxaw.
..wbxxxxw..
..wxxxxxw..
..wwxxOww..
 ..wwWww...
 .........
  ..  ..
ENDMAP

# A variant on hangedman_coc_ice_floe.
NAME:   pf_coc_iceberg
WEIGHT: 7
TAGS:   transparent no_pool_fixup uniq_hell_entry_coc
TILE:   x = wall_ice
COLOUR: x = lightcyan
FTILE:  'O = floor_frozen
COLOUR: ' = lightblue
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
   ..  ..
  .........
 ...wwwww...
...wwxxxww...
...wxxxxxw...
..wxxx'xxxw..
..wxx'''xxw..
..wxx'O'WxW..
..wxx'''xWw..
..wxxx'xxxw..
...wxxxxxw...
...wwxxxww...
 ...wwwww...
  .........
   ..   ..
ENDMAP

NAME:    hangedman_tar_grid_catacomb
WEIGHT:  4
TAGS:    transparent uniq_hell_entry_tar
KMONS:   O = soul eater w:5 / nothing
KFEAT:   A = stone_arch
SHUFFLE: o@O& / O&o@
SUBST:   o = ., & = x
NSUBST:  O = 1:O / *:A
TILE:    c = wall_cobalt_stone
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
    x&xxxx&x
    &.OxxO.&
    x.cccc.x
   xx..cc..xx
  xx..cccc..xx
 xx....cc....xx
xx....cccc....xx
x......cc......x
xx....cccc....xx
 xxxx..cc..xxxx
    x.cccc.x
    @.oxxo.@
    x@xxxx@x
ENDMAP

# Inspired by the loot vaults in tar_minmay_river.
NAME:   pf_hell_entry_tar_spiral
TAGS:   transparent no_monster_gen uniq_hell_entry_tar
WEIGHT: 5
TILE:   c = wall_cobalt_stone
COLOUR: . = magenta
FTILE:  +.O = floor_infernal_blank
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
    cccc
  ccc..ccc
 cc......cc
 cc..cccc..c
 c..cc..cc..
cc.cc....cc.@
c..c..cc.+..
c..c..cc.ccc
cc.cc......c
 c..cc+c.O.c
 cc..c.c..cc
  cc...cccc
   ccc....c
     cccc.c
         @
ENDMAP

# Inspired by the sad fish in tar_minmay river. They've never gotten a kill. :(
NAME:   pf_hell_entry_tar_river
TAGS:   transparent no_pool_fixup uniq_hell_entry_tar
WEIGHT: 5
COLOUR: . = magenta
FTILE:  .O = floor_infernal_blank
NSUBST: w = 2=F / 2=F. / w
# E is tiles not adjacent to walkable space
NSUBST: E = 2=FE / E
KMONS:  F = spectral caustic shrike
KFEAT:  EFw = deep_water
KMASK:  Ww = no_monster_gen
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
      @
   wwWwwEE
  EwWwwEEEE
 EEwwWwwEEEE
 EwwwwWwwwwE
 wwWww.wwWww
@WWwW.O.WwWw@
 wwwww.wwwwW
 EEEwWwwEEww
 EEEwwWwEEEE
  EEEwWwwEE
   EEwwWwE
      @
ENDMAP

####
# A couple of Dis-inspired mini-entries; total weight 14.
NAME: grunt_hell_entry_dis_old
TAGS: transparent nolayout_encompass uniq_hell_entry_dis
WEIGHT: 4
KMONS: O = iron dragon w:5 / iron troll w:20 / nothing
: hell_entry_feature(_G, 'O')
MAP
...................
.vvvv.........vvvv.
.v%.vvvvvvvvvvv.%v.
.v..+$%vvvvv$%+..v.
.vv+vvvv...vvvv+vv.
..v....+...+....v..
..v+vvvv...vvvv.v..
..v....vv+vv.%v.v..
..v..vOvv.vv.vv.v..
..v....vv.vv....v..
.vv+v..vv.vvvvv+vv.
.v..vvvvv.vvvvv..v.
.v%.vvvvv+vvvvv.%v.
.vvvv.........vvvv.
.........@.........
ENDMAP

NAME: grunt_hell_entry_dis_mu
TAGS: transparent nolayout_encompass uniq_hell_entry_dis
WEIGHT: 5
KMONS: O = iron dragon w:5 / iron troll w:20 / nothing
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
...................
..vvvvvvv.vvv......
..v$v$v$vvv$vvv....
.vv+v+v.+.+.vvvvv..
.v....vvv.vvv...vv.
.v.vvvvv...v.vvv.v.
.v.+...+...+.vO+.v.
.v.vvvvv...v.vvv.v.
.v....vvv+vvv...vv.
.vv+v+vvv.vvvvvvv..
..v$v$v.v.vvvvv....
..vvvvv.v+v........
.........@.........
ENDMAP

NAME: grunt_hell_entry_dis_grunt
TAGS: transparent nolayout_encompass uniq_hell_entry_dis
WEIGHT: 5
KMONS: O = iron dragon w:5 / iron troll w:20 / nothing
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
MAP
...................
...................
...vvvvvvvvv...vvv.
...v.+.v$v.vv.vv.v.
...v.v+v+vv.vvv.vv.
.v+v.v.v.vvv...vv..
.+.+.v.+.+.+.%.v...
.v+v.v.v.vvv...vv..
...v.v+v+vv.vvv.vv.
...v.+.v$vOvv.vv.v.
...vvvvvvvvv...vvv.
...................
.........@.........
ENDMAP
# If you're dumb enough to go to the Hells this weekend, you're a big enough
# schmuck to come to Big Baal Hell's Store!
# Inspired by the NSFW classic: https://www.youtube.com/watch?v=4sZuN0xXWLc
# Unlike Big Bill Hell's Cars, the items here are intended to be pretty good and
# useful in the Hells, since a shop full of crappy items wouldn't be
# particularly interesting, even if it was funny. However, to keep with the
# spirit of Big Bill Hell, the prices are 666% of the usual. Thieves!
NAME:   nicolae_hell_entry_big_baal_hell
TAGS:   transparent no_item_gen patrolling
ORIENT: float
WEIGHT: 2
{{
  -- sells 11 items: 2 each from lists geared towards each Hell, 2 from a
  -- generic list, and 1 from a list of holy wrath weapons

  -- the Dis inventory focuses on damage/AC increases to counteract the
  -- corrosion hell effect, rCorr for caustic shrikes, reflection for various
  -- Dis projectiles, and enchant armour/weapon scrolls in bulk
  local disinv = util.random_subset( { "any weapon randart ego:heavy",
    "ring of slaying randart", "ring of protection randart",
    "any weapon randart ego:protection", "crystal plate armour randart",
    "golden dragon scales randart", "tower shield randart",
    "any weapon randart artprops:rCorr", "any armour randart artprops:rCorr",
    "ring of resist corrosion randart", "amulet of reflection randart",
    "scroll of enchant weapon q:10", "scroll of enchant armour q:10",
    "potion of might q:10", "randbook disc:conjuration slevels:13",
    "randbook disc:earth slevels:13", "staff of earth randart",
    "staff of conjuration randart" }, 2 )

  -- the Gehenna inventory focuses on fire resistance and cold damage, and
  -- some potions of invisibility since a lot of monsters there can't sInv,
  -- and some tloc since you can't use blink/tele scrolls
  local gehinv = util.random_subset( { "any weapon randart ego:freezing",
    "ring of protection from fire randart",
    "fire dragon scales randart", "wand of iceblast charges:25",
    "any weapon randart artprops:rF:1", "any armour randart artprops:rF:1",
    "potion of invisibility q:10", "randbook disc:ice slevels:13",
    "randbook disc:translocation slevels:13", "staff of fire randart" }, 2 )

  -- the Cocytus inventory focuses on cold resistance and fire damage, and
  -- throws in some willpower for narguns
  local cocinv = util.random_subset( { "any weapon randart ego:flaming",
    "ring of protection from cold randart",
    "ice dragon scales randart", "any weapon randart artprops:rC:1",
    "staff of air randart", "staff of cold randart", "wand of flame charges:55",
    "any armour randart artprops:rC:1", "ring of willpower randart",
    "randbook disc:fire slevels:13" }, 2 )

  -- the Tartarus inventory focuses on increased willpower to counteract the
  -- Will/2 hell effect, as well rN+ for theme, scrolls of fog in bulk to deal
  -- with fear/mesmerise
  local tarinv = util.random_subset( { "ring of willpower randart",
    "ring of positive energy randart", "any armour randart artprops:rN:1",
    "any armour randart artprops:Will:1", "pearl dragon scales randart",
    "scroll of fog q:10", "quicksilver dragon scales randart",
    "any weapon randart artprops:Will:1", "any weapon randart artprops:rN:1",
    "staff of necromancy randart" }, 2 )

  -- Generically useful in all the Hells, a lot of scrolls and potions in bulk,
  -- but also rings of rN+ and willpower, which are useful in all the Hells, and
  -- up to two generic randarts/randbooks, as well as magic stuff and
  -- assorted weapons, including demon weapons
  local hellinv = util.random_subset( { "scroll of blinking q:10",
    "scroll of revelation q:10", "scroll of silence q:10",
    "any ally scroll q:10", "scroll of teleportation q:10",
    "potion of brilliance q:10", "potion of enlightenment q:10",
    "potion of cancellation q:10", "potion of curing q:10",
    "potion of haste q:10","potion of heal wounds q:10", "potion of magic q:10",
    "potion of experience", "potion of resistance q:10", "any weapon randart",
    "any armour randart", "any jewellery randart", "any weapon randart",
    "any armour randart", "any jewellery randart", "any wand charges:27",
    "ring of positive energy randart", "ring of willpower randart",
    "randbook good_item", "randbook good_item", "ring of wizardry randart",
    "any magical staff randart", "scroll of acquirement q:2", "any manual",
    "demon trident randart", "demon whip randart", "demon blade randart",
    "javelin ego:silver q:25", "any misc" }, 2)

  -- one guaranteed randart weapon with holy wrath, including ranged weapons
  local hw = " randart ego:holy_wrath"
  local holyinv = util.random_subset( { "quick blade" .. hw, "rapier" .. hw,
    "eudemon blade" .. hw, "triple sword" .. hw, "battleaxe" .. hw,
    "executioner's axe" .. hw, "trishula" .. hw, "bardiche" .. hw,
    "sacred scourge" .. hw, "eveningstar" .. hw, "lajatang" .. hw,
    "longbow " .. hw, "arbalest" .. hw, "hand cannon" .. hw,
    "triple crossbow" .. hw }, 1 )

   local fullinv = util.join( " | ", { util.join( " | ", disinv ),
     util.join( " | ", gehinv ), util.join( " | ", cocinv ),
     util.join( " | ", tarinv ), util.join( " | ", hellinv ), holyinv[1] } )

   kfeat( "S = general shop name:Big_Baal_Hell type:Store suffix: count:11 " ..
       "use_all greed:66 ; " .. fullinv )
}}
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "low")
KMONS: S = balrug band / hell knight band / jiangshi band / \
           ancient champion band / deep troll shaman band / \
           salamander tyrant band / wyrmhole
SUBST: L = l., ` = lx
MAP
  xxxx
xxx``xxx
x`llll`xxxx
xllLLllll`xxx
........lll`xx
....T.T..Llllxx
.....S.....Lllxx
xll.T.T.....Ll`x
x`l.......O.Ll`x
xxllllllL...Ll`x
 xx``x`llLLLllxx
  xxxxx`lllll`x
      xxx```xxx
        xxxxx
ENDMAP

NAME:   nicolae_hell_entry_hellmouth_sunbeams
TAGS:   transparent patrolling
ORIENT: float
WEIGHT: 5
KMONS:  1 = sun demon
KMONS:  2 = eye of devastation / great orb of eyes
KMONS:  3 = shining eye w:5 / hell hound / hell hog / sin beast / hellion
NSUBST: - = 4=1 / 8=1. / 2=2 / 4=2. / 1=3 / 2=3. / .
SUBST:  b = bc
KMASK:  O = opaque
KPROP:  O = no_tele_into
TILE:   b = bedevilled_crystal_gehenna
: set_feature_name("crystal_wall", "bedevilled crystal wall")
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "high")
MAP
         ..@..
         ..c..
         .ccc.
       ...ccc...
     ...vv...vv...
   ...vv..---..vv...
....vv..-------..vv....
.ccc..-----------..ccc.
lccc---------------cccl
lccc------lll------cccl
llllvv----lOl----vvllll
 lllllvv--lll--vvlllll
 lllllllvv---vvlllllll
  llllllllcbcllllllll
   lllllllccclllllll
     lllllccclllll
        lllllll
ENDMAP

##############################################################################
# Vestibule of Hell and Geryon
##############################################################################

default-depth:

######################################################################
# The main vault for Vestibule w/subvaults (by Mu.)
# The old vestibule has been folded into this vault.
#
NAME:     vestibule_of_hell_subvaulted
PLACE:    Hell
ORIENT:   encompass
TAGS:     no_rotate no_dump
SUBVAULT: A : vestibule_dis
SUBVAULT: B : vestibule_tar
SUBVAULT: C : vestibule_coc
SUBVAULT: D : vestibule_geh
SUBVAULT: E : vestibule_geryon
SHUFFLE:  ABCD
SUBST:    ABCDE = .
: if crawl.coinflip() then
  : if crawl.coinflip() then
MONS:   Murray
NSUBST: : = 1:1 / *:.
  : else
SUBST: : = .
  : end
: else
SUBST: : = x
: end
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxxxxxxxxxxxx
xxxxxxxxxxx::AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA::xxxxxxxxxxx
xxxxxxxxxx::::AAAAAAAAAAAAAAAAAAAAAAAAAAAAA::::xxxxxxxxxx
xxxxxxxxx::::::AAAAAAAAAAAAAAAAAAAAAAAAAAA::::::xxxxxxxxx
xxxxxxxx::::::::AAAAAAAAAAAAAAAAAAAAAAAAA::::::::xxxxxxxx
xxxxxxx::::::::::AAAAAAAAAAAAAAAAAAAAAAA::::::::::xxxxxxx
xxxxxx::::::::::::AAAAAAAAAAAAAAAAAAAAA::::::::::::xxxxxx
xxxxx::::::::::::::AAAAAAAAAAAAAAAAAAA::::::::::::::xxxxx
xxxxC:::::::::::::::AAAAAAAAAAAAAAAAA:::::::::::::::Dxxxx
xxxxCC:::::::::::::::AAAAAAAAAAAAAAA:::::::::::::::DDxxxx
xxxxCCC:::::::::::::::AAAAAAAAAAAAA:::::::::::::::DDDxxxx
xxxxCCCC:::::::::::::::AAAAAAAAAAA:::::::::::::::DDDDxxxx
xxxxCCCCC:::::::::::::::AAAAAAAAA:::::::::::::::DDDDDxxxx
xxxxCCCCCC:::::::::::::::AAAAAAA:::::::::::::::DDDDDDxxxx
xxxxCCCCCCC:::::::::::::::AAAAA:::::::::::::::DDDDDDDxxxx
xxxxCCCCCCCC:::::::::::::::AAA:::::::::::::::DDDDDDDDxxxx
xxxxCCCCCCCCC::::::::::::::EEE::::::::::::::DDDDDDDDDxxxx
xxxxCCCCCCCCCC::::::::::::EEEEE::::::::::::DDDDDDDDDDxxxx
xxxxCCCCCCCCCCC::::::::::EEEEEEE::::::::::DDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCC::::::::EEEEEEEEE::::::::DDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCC::::::EEEEEEEEEEE::::::DDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCC::::EEEEEEEEEEEEE::::DDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCCC::EEEEEEEEEEEEEEE::DDDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCCCCEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCCCCEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCCCCEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCCC::EEEEEEEEEEEEEEE::DDDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCCC::::EEEEEEEEEEEEE::::DDDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCCC::::::EEEEEEEEEEE::::::DDDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCCC::::::::EEEEEEEEE::::::::DDDDDDDDDDDDxxxx
xxxxCCCCCCCCCCC::::::::::EEEEEEE::::::::::DDDDDDDDDDDxxxx
xxxxCCCCCCCCCC::::::::::::EEEEE::::::::::::DDDDDDDDDDxxxx
xxxxCCCCCCCCC::::::::::::::EEE::::::::::::::DDDDDDDDDxxxx
xxxxCCCCCCCC:::::::::::::::BBB:::::::::::::::DDDDDDDDxxxx
xxxxCCCCCCC:::::::::::::::BBBBB:::::::::::::::DDDDDDDxxxx
xxxxCCCCCC:::::::::::::::BBBBBBB:::::::::::::::DDDDDDxxxx
xxxxCCCCC:::::::::::::::BBBBBBBBB:::::::::::::::DDDDDxxxx
xxxxCCCC:::::::::::::::BBBBBBBBBBB:::::::::::::::DDDDxxxx
xxxxCCC:::::::::::::::BBBBBBBBBBBBB:::::::::::::::DDDxxxx
xxxxCC:::::::::::::::BBBBBBBBBBBBBBB:::::::::::::::DDxxxx
xxxxC:::::::::::::::BBBBBBBBBBBBBBBBB:::::::::::::::Dxxxx
xxxxx::::::::::::::BBBBBBBBBBBBBBBBBBB::::::::::::::xxxxx
xxxxxx::::::::::::BBBBBBBBBBBBBBBBBBBBB::::::::::::xxxxxx
xxxxxxx::::::::::BBBBBBBBBBBBBBBBBBBBBBB::::::::::xxxxxxx
xxxxxxxx::::::::BBBBBBBBBBBBBBBBBBBBBBBBB::::::::xxxxxxxx
xxxxxxxxx::::::BBBBBBBBBBBBBBBBBBBBBBBBBBB::::::xxxxxxxxx
xxxxxxxxxx::::BBBBBBBBBBBBBBBBBBBBBBBBBBBBB::::xxxxxxxxxx
xxxxxxxxxxx::BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB::xxxxxxxxxxx
xxxxxxxxxxxxBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
# Vestibule Tartarus

NAME: vestibule_tar_old
TAGS: vestibule_tar
KFEAT: T = enter_tartarus
KMONS: T = revenant soulmonger / shadow dragon
FTILE: +'T = floor_infernal_blank
TILE: c = dngn_stone_dark
MAP
xxxxxxxxxxxxxxxcccxxxxxxxxxxxxxxx
 xxxxxxxxxxxxxcc'ccxxxxxxxxxxxxx
  ....xxxxccccc'T'cccccxxxx....
   .......c'''c'''c'''c.......
    ......c'''cc+cc'''c......
     ....ccc'''''''''ccc....
      ...ccc'''''''''ccc...
       ..cccccc+++cccccc..
        .ccc.........ccc.
         ...............
          .............
           ...........
            .........
             .......
              .....
               ...
ENDMAP

NAME: vestibule_tar_mu
TAGS: vestibule_tar
KFEAT:  T=enter_tartarus
FTILE:  =T3Dz+'; = floor_infernal_blank
TILE:   c = dngn_stone_dark
SUBST:  ; = .
KMONS:  3 = shadow wraith
KMONS:  z = vampire knight / phantasmal warrior / ancient champion / nothing
KMONS:  D = shadow dragon
KMONS:  2 = reaper / soul eater
MAP
ccccccccccccccccccccccccccccccccc
 ccczz+'''''';;;;;;;''''''+zzccc
  cczzc''3''c';;T;;'c''3''czzcc
   c+ccc''''''c;;;c''''''ccc+c
    .cccc'''''''D'''''''cccc.
     ..ccc'''''''''''''ccc..
      .cccc'''cc+cc'''cccc.
       ..cccc'c'''c'cccc..
        .cccc'cz'zc'cccc.
         ..cccczzzcccc..
          .cccc'''cccc.
           ..ccc'ccc..
            .c2c'c2c.
             ..c+c..
              .c.c.
               ...
ENDMAP

NAME:   vestibule_tar_nicolae_necropolis
TAGS:   vestibule_tar
KFEAT:  T = enter_tartarus
SUBST:  d = ccc., z = zzz..
KMONS:  z = place:Depths:1 zombie
KMONS:  b = revenant soulmonger / lich / vampire mage / ancient lich / \
            mummy priest / curse skull / dread lich
TILE:   c = dngn_stone_dark
MAP
.......dd...............dd.......
 ...z..ddz..c.z.T.z.c..zdd..z...
  .....dd...............dd.....
   ..z.ddz..c.z.b.z.c..zdd.z..
    ...ddd.............ddd...
     ...dd....c.z.c....dd...
      ..dddz.........zddd..
       ..ddd..c.z.c..ddd..
        ..ddd.......ddd..
         ..dd.c.z.c.dd..
          .............
           .z.c.z.c.z.
            .........
             .c.z.c.
              .....
               ...
ENDMAP

NAME: vestibule_tar_grunt_deathgaze
TAGS: vestibule_tar
KFEAT: T = enter_tartarus
KMONS: T = revenant soulmonger / lich / shadow dragon
MONS: ancient champion band, reaper / soul eater
MONS: phantasmal warrior / vampire knight
FTILE: +'T12 = floor_infernal_blank
TILE: c = dngn_stone_dark
MAP
...........ccccccccccc...........
 ...cc...ccc'''''''''ccc...cc...
  ..cc..cc'''''''''''''cc..cc..
   .....c'''2'''T'''2'''c.....
    ..3.cc'''''''''''''cc.3..
     ....cccc'''''''cccc....
      ...c''cc'''''cc''c...
       ..cc'''''c'''''cc..
        ..cc'1'ccc'1'cc..
         ..cc''c'c''cc..
          ..cc'''''cc..
           ..cc+++cc..
            .........
             ...3...
              .....
               ...
ENDMAP

NAME:   vestibule_tar_nicolae_cwn_annwn
TAGS:   vestibule_tar patrolling
KMONS:  1D = oblivion hound / nothing
KFEAT:  D = enter_tartarus
TILE:   c = dngn_stone_dark
: vault_metal_statue_setup(_G, "G", "mystic cage")
MAP
ccccccccccccccccccccccccccccccccc
 cccccccccccccc...cccccccccccccc
  ccccccccccc...D...ccccccccccc
   ccccccccG.........Gcccccccc
    ccccccc...........ccccccc
     cccccc..1.....1..cccccc
      cccc....c.1.c....cccc
       ccc.1.Gc...cG.1.ccc
        cc...cc...cc...cc
         cc..c.....c..cc
          cc.c..1..c.cc
           ..cc...cc..
            ..cc.cc..
             .......
              .....
               ...
ENDMAP

NAME:   vestibule_tar_nicolae_miasmatic
TAGS:   vestibule_tar
KMONS:  J = tainted leviathan
KMONS:  12 = putrid mouth
KFEAT:  J = enter_tartarus
NSUBST: D = + / x, E = + / x
SUBST:  1 = 11., 2 = 22`
FTILE:  `2+ = floor_black_cobalt
TILE:   x = wall_cobalt_rock
MAP
...xxx`````````````````````xxx...
 ...x```2```````2```````2```x...
  .xxx`x`x`x`````````x`x`x`xxx.
   .xxDxDxDxx```````xxExExExx.
    .x.x.x.xxx`````xxx.x.x.x.
     .......D```J```E.......
      ...1.xxx`````xxx.1...
       .....D```````E.....
        ...xxx`x`x`xxx...
         ...xxDxxxExx...
          ...x.x.x.x...
           ...........
            .........
             ...1...
              .....
               ...
ENDMAP

NAME:    vestibule_tar_nicolae_seven_gates_of_the_underworld
TAGS:    vestibule_tar
KMONS:   H = lich / halazid warlock / shadow dragon / \
             undertaker / revenant soulmonger
KMONS:   12 = ancient champion / skeletal warrior / phantasmal warrior / \
              reaper / soul eater / shadow demon / shadow wraith / \
              flayed ghost / putrid mouth
KFEAT:   H = enter_tartarus
SHUFFLE: DE/FH
SUBST:   D = +, E = 1, F = c, 1 = 1 ':15, 2 = 22.
FTILE:   +'H1 = floor_infernal_blank
TILE:    c = dngn_stone_dark
MAP
ccccccccccccccccccccccccccccccccc
 cc'''''''''+'''''''+'''''''''cc
  cc''1'1'1'+'1'1'1'+'1'1'1''cc
   cc'''''''+'''''''+'''''''cc
    cc+++ccccccccccccccc+++cc
     cc''''''c'''''+''''''cc
      cc1'H'1c1'E'1+1'1'1cc
       cc''''c'''''+''''cc
        ccFFFccDDDccccccc
         cc'''''''''''cc
          cc''1'1'1''cc
           cc'''''''cc
            ccc+++ccc
             G2.2.2G
              .....
               ...
ENDMAP

################################################################################
# Vestibule Gehenna

NAME: vestibule_geh_old
TAGS: vestibule_geh
KFEAT: G = enter_gehenna
KMONS: G = hellion / balrug
: hell_lava_spawns(_G)
MAP
xxxxxxxxxxxxxx.l.l.xxxxxxxxxxxxxx
 xxxxxxxxxx...l.l.l...xxxxxxxxxx
  xxxxxx.....l.l.l.l.....xxxxxx
   .........l.l.l.l.l.........
    .........l.l.l.l.l.......
     .......l.l.l.l.l.......
      .....l.l.l.l.l.l.....
       .....l.l.G.l.l.....
        ...l.l.l.l.l.....
         ...l.l.l.l.l...
          ...l.l.l.l...
           ...l.l.....
            .l.l.....
             .......
              .....
               ...
ENDMAP

NAME: vestibule_geh_mu
TAGS: vestibule_geh
KFEAT:  G=enter_gehenna
SUBST:  L = l.
KMONS:  2 = hellion
KMONS:  3 = sun demon / smoke demon
KMONS:  2 = reaper / balrug / sin beast
FTILE:  x'5a2V+ = floor_infernal_blank
: hell_lava_spawns(_G)
MAP
lllllllllllllllllllllllllllllllll
 Lllllllllllllllllllllllllllllll
  LllxxxxxxxxxxxxxxxxxxxxxxxllL
   Lllxx'''''''''''''''''xxllL
    Lllxx''3''''G''''3''xxllL
     Lllxx'''''''''''''xxllL
      Lllxx''V''2''V''xxllL
       Lllxx'''''''''xxllL
        Lllxx'''''''xxllL
         Lllxxx+++xxxllL
          Lllxx...xxllL
           Lll..3..llL
            Lll...llL
             Lll.llL
              ll.ll
               l.l
ENDMAP

NAME:    vestibule_geh_nicolae_lava_paths
TAGS:    vestibule_geh
SHUFFLE: ab/cd/ef, cd/cd/gh, ef/ef/ef/ij
NSUBST:  a = G / H / ', b = 1:' / 2:'pp / *:p
NSUBST:  h = 1:. / 2:.qq / *:q, j = 1:. / 2:.rr / *:r
SUBST:   p : llXXx, q : llXXx, r : llXXx
KFEAT:   G = enter_gehenna
SUBST:   ce = x, d : xlllLX., f : xlllLX., gi = ....m, m = mm.
SUBST:   L = l., X = xl
KMONS:   H = hellion
KMONS:   m = sun demon / smoke demon
KMONS:   ' = sin beast / hell hog / nothing w:140
FTILE:   AH' = floor_infernal_blank
: hell_lava_spawns(_G)
MAP
.........bab.........dcd.........
 ...m..bbbabbb.....dddcddd..m...
  ....bbaaaaabb.m.ddcccccdd....
   ...baaaaaaab...dcccccccd...
    ..bbaaaaabb.m.ddcccccdd..
     ..bbaabbb.....dddccdd..
      ..bbbb.m.fff.m.dddd..
       ......fffefff......
        ..m.ffeeeeeff.m..
         ...feeeeeeef...
          ..ffeeeeeff..
           ..ffeeeff..
            .mfffffm.
             .......
              ..m..
               ...
ENDMAP

NAME:   vestibule_geh_grunt_obsidian_fortress
TAGS:   vestibule_geh
KFEAT:  G = enter_gehenna
MONS:   balrug / hellion, sin beast / hell hog
MONS:   sun demon / smoke demon / hell knight
NSUBST: 2 = 3:2 / *:., 3 = 3:3 / *:.
FTILE:  123+G = floor_infernal_blank
TILE:   c = stone_wall_pyre
: hell_lava_spawns(_G)
MAP
lllllllllccccccccccccccclllllllll
 llllllccc'''c''1''c'''cccllllll
  llllcc3''2'+''G''+'2''3ccllll
   lllc''''''c''1''c''''''clll
    llc'2'2'ccccccccc'2'2'cll
     lcc''''c'''''''c''''ccl
      lcc''c+''2'2''+c''ccl
       lcccc'3'''''3'ccccl
        lllc''3'''3''clll
         llcc'''''''ccll
          llccc+++cccll
           lll.....lll
            l.l4.4l.l
             .lllll.
              .lll.
               ...
ENDMAP

NAME:   vestibule_geh_nicolae_gehenna_overflowing
TAGS:   vestibule_geh
KMONS:  D = balrug band / hell knight band / hellephant
KMONS:  1 = sun demon / smoke demon / hell hog / creeping inferno w:5
KFEAT:  D = enter_gehenna
NSUBST: F = . / L, H = . / L, J = . / L, K = . / L, M = . / L, N = . / L, \
        L = 4=1 / 4=1L / L
SUBST:  L = l.
MAP
lllllL..........l...Ll...LlllllL.
 Lll....Lll....lDl...l.....lllL.
  .FlF....Ll..LlllL..HlH.JlJ...
   ..llll..FlllLlLlH...lll....
    ....Flll....l..lKllH.Ll..
     ....l.LlL..lL..l.......
      .LlL...lL..l..KlllK..
       .L.......llN.....lK
        ...MlMllM.l.Nll..
         .Ml.l....Nll.Nl
          l..LllL...l..
           .....l..Ll.
            ...LlL.l.
             ..lll..
              .LlL.
               ...
ENDMAP

NAME:    vestibule_geh_nicolae_lone_tower
TAGS:    vestibule_geh
KMONS:   D = balrug band / sin beast band / hell hog band / \
             hell knight band w:5
KFEAT:   D = enter_gehenna
SHUFFLE: Pp/Qq/Rr/Ss
SUBST:   P = +, p = ., QRS = c, qrs = l, L = l.
TILE:    c = stone_wall_pyre
FTILE:   +D' = floor_infernal_blank
COLOUR:  c = red
MAP
.LllllllllL.....L.LL..LllllllllL.
 .LllllllL..LllpppllL..LllllllL.
  ..LllL...LllccPccllL...LllL..
   .......Lllcc'''ccllL.......
    ......Llcc'''''cclL......
     ......sc'''''''cq......
      ....LsS'''D'''QqL....
       ....sc'''''''cq....
        ..Llcc'''''cclL..
         .Lllcc'''ccllL.
          .LllccRccllL.
           .LllrrrllL.
            .LL.L.LL.
             .......
              .....
               ...
ENDMAP

NAME:   vestibule_geh_nicolae_tongues_of_flame
TAGS:   vestibule_geh
KMONS:  D = stoker
KMONS:  E = searing wretch
KFEAT:  D = enter_gehenna
NSUBST: D = D / l
SUBST:  E = E., L = l.
MAP
lllllllllllllllllllllllllllllllll
 lllDllllDlllDllDlllDllll.DllDll
  ll..Lll.Ll.Llll.l.llllL.ll.ll
   ll.ll..lll.llL.lL.lll.Lll.l
    lEl.LlllLEllElllElll..lE.
     ..l..ll..ll.ll...l.L.l.
      L..E.l..l.ll.L.l.E.l.
       .L..l.l.Ell..l..l..
        ..l..l..ll..l....
         ...El.L.llEl..L
          .L..l..ll..l.
           ....L.lL...
            .L.E.l...
             ...L..L
              L....
               ..L
ENDMAP

################################################################################
# Vestibule Cocytus

NAME: vestibule_coc_old
TAGS: vestibule_coc
KFEAT: C = enter_cocytus
KMONS: C = blizzard demon / ice statue
: hell_water_spawns(_G)
MAP
wwwwwwwwwwwwwwwwCwwwwwwwwww......
 wwwwwwwwwwwwww....wwwwwww......
  wwwwwwwwww.........wwww......
   wwwwwwwww..wwwww....ww.....
    wwwwwwwww..wwwww....ww...
     wwwwwwww....ww......ww.
      .wwwww..ww.....ww....
       ...w..wwwww..wwww..
        ....wwwwwwwwwwww.
         .....wwwwwwww..
          ......wwwww..
           ...........
            .........
             .......
              .....
               ...
ENDMAP

NAME: vestibule_coc_mu
TAGS: vestibule_coc
KFEAT:  C=enter_cocytus
SUBST:  8 = 8 .:59
KMONS:  8 = ice statue
KMONS:  3 = ice devil
: hell_water_spawns(_G)
MAP
...........wwwwwwwwwww...........
 ....33...wwwwwwwwwwwww...33....
  ....3...wwwwww8wwwwww...3....
   ......wwwww.....wwwww......
    .....wwww...C...wwww.....
     ....wwww.......wwww....
      ...www8..T.T..8www...
       ..wwww.......wwww..
        ..www..T.T..www..
         ..www.....www..
          ...ww...ww...
           .....3.....
            .........
             .......
              .....
               ...
ENDMAP

NAME:    vestibule_coc_nicolae_fridge_bridge
TAGS:    vestibule_coc no_pool_fixup
KFEAT:   C = enter_cocytus
SHUFFLE: ab
SUBST:   a = I, b : w., W = w.
KMONS:   I = ice statue
KMONS:   3 = blizzard demon
KMONS:   2 = ice dragon / freezing wraith
: hell_water_spawns(_G)
MAP
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
 WWWWwwwwwwwww.....wwwwwwwwwWWWW
  ..WWWwwwwwww.3C3.wwwwwwwWWW..
   ...WWwwwwww.....wwwwwwWW...
    ...Wwwwwwwa...awwwwwwW...
     ..WWwwwwww...wWwwwwWW..
      ..Wwwwwww2.2wwwwwwW..
       .WWwwwww...wwwwwWW.
        .WWwwww...wwwwWW.
         .WWWww2.2wwWWW.
          ..WWW...WWW..
           ...b...b...
            .........
             .......
              .....
               ...
ENDMAP

NAME: vestibule_coc_grunt_go_with_the_floe
TAGS: vestibule_coc no_pool_fixup
MONS: frost giant / blizzard demon / ice statue
MONS: blizzard demon, ice dragon / freezing wraith
NSUBST: 3 = 3:3 / *:.
SUBST: W = wW.
KFEAT: A = stone_arch
KFEAT: C = enter_cocytus
KFEAT: W = W
: hell_water_spawns(_G)
MAP
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
 wwwwwWWWWWWWWWWwWWWWWWWWWWwwwww
  wwwWW...WW...WWW...WW...WWwww
   wwW..W2....3...3....2W..Www
    wwW.3W...W..W..W...W3.Www
     wwW..W.WWW.3.WWW.W..Www
      wwW.C.WwW.W.WwW.A.Www
       wwW..WwW.W.WwW..Www
        wwW1WwW.3.WwW1Www
         wwWWwW.W.WwWWww
          wwwwW.W.Wwwww
           wwwW.3.Wwww
            wwW.W.Www
             wW.W.Ww
              W.3.W
               .W.
ENDMAP

NAME:   vestibule_coc_nicolae_advancing_glacier
TAGS:   vestibule_coc no_pool_fixup
KMONS:  D = frost giant / ice dragon / wendigo band
KMONS:  1 = ice devil / blizzard demon
KFEAT:  D = enter_cocytus
KFEAT:  a = x
SUBST:  - = aw., ` = aw, ~ = w.
TILE:   a = wall_ice
COLOUR: a = lightcyan
MAP
aaaaaaaaxxxxxxxxxxxxxxxxxaaaaaaaa
 aaaaaaaaxxxxxxxxxxxxxxxaaaaaaaa
  aaaaaaaaaxxxxxxxxxxxaaaaaaaaa
   -aaaaaaaaaaxxxxxaaaaaaaaaa-
    .-aaaaaaaaaaaaaaaaaaaaa-.
     .-aaaaaaaaaaaaaaaaaaa-.
      .-aaaaaaaaaaaaaaaaa-.
       .-aaaaaaaaaaaaaaa-.
        ..-aaaaaaaaaaa-..
         ...w`aaaaa`w...
          ..www`a`www..
           .~wwwDwww~.
            .~w~.~w~.
             .~1.1~.
              .....
               ...
ENDMAP

NAME:   vestibule_coc_nicolae_freezer_leak
TAGS:   vestibule_coc no_pool_fixup
KMONS:  D = frost giant / ice dragon
KMONS:  1 = blizzard demon / freezing wraith / simulacrum / ice devil
KFEAT:  D = enter_cocytus
SUBST:  - = `., ' = x`
NSUBST: ` = 4=1 / 4=1` / `
FTILE:  D1` = floor_frozen
COLOUR: 1` = lightblue
TILE:   x = wall_ice
COLOUR: x = lightcyan
MAP
.-```............................
 -`x`-.-``.-```-........-``-....
  ```--````'xx'`--``--`''```...
   ..-``.``x``````````'xx'``..
    .--..`'x`D`'``--``'xx'`-.
     ....``'```x`-..-``''`-.
      .-``````xx``....-``-.
       -`-.-`x``'`-.......
        -...-```x'`-.....
         ..-``-`'x``....
          .-`-.-`x'`...
           .--..-''-..
            .....--..
             .......
              .....
               ...
ENDMAP

NAME:  vestibule_coc_nicolae_polynya
TAGS:  vestibule_coc no_pool_fixup
KMONS: D = wendigo
KMONS: 1 = simulacrum
KFEAT: D = enter_cocytus
SUBST: - = w., 1 = 1.
MAP
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
 wwwwwwww-..1.....1...-wwwwwwwww
  wwww-....-ww...ww-....-wwwwww
   ww-..1.Wwwww.1www-.1..-wwww
    ww....WWDwww..www.....www
     ww...Wwwww-..ww-....-ww
      ww-...ww...ww..1.-www
       www-.1..-ww...-wwww
        wwwwwwwww.1.-wwww
         wwwwww-...-wwww
          wwww...-wwwww
           ww-.1.wwwww
            ww...-www
             ww...ww
              w1..w
               ...
ENDMAP

################################################################################
# Vestibule Dis

NAME: vestibule_dis_old
TAGS: vestibule_dis
KFEAT: D = enter_dis
KMONS: D = war gargoyle / reaper
FTILE: +'D = floor_infernal_blank
MAP
xxxxxxxxxxxxxvvvvvvvxxxxxxxxxxxxx
 xxxxxxxxxx..v'''''v..xxxxxxxxxx
  xxxxxx.....v'''''v....xxxxxxx
   xxx.......v'''''v.......xxx
    .........v''D''v.........
     ........v'''''v........
      .......v'''''v.......
       ......vvv+vvv......
        .................
         ...............
          .............
           ...........
            .........
             .......
              .....
               ...
ENDMAP

NAME: vestibule_dis_mu
TAGS: vestibule_dis
KFEAT:  D=enter_dis
KMONS:  8 = iron dragon
KMONS:  3 = rust devil
KMONS:  6 = war gargoyle
FTILE:  'A+ = floor_infernal_blank
MAP
.............v.vvv.v.............
 ...vv....v...vv'vv...v....vv...
  ..3v.....vv.v'D'v.vv.....v3..
   .......v...vv'vv...v.......
    ...vv....v.v+v.v....vv...
     ..3v..6...8.8...6..v3..
      .....................
       ...vv...v.v...vv...
        ..3v.........v3..
         ...............
          ...vv...vv...
           ..3v...v3..
            .........
             .......
              .....
               ...
ENDMAP

NAME:   vestibule_dis_nicolae_mini_city_of_dis
TAGS:   vestibule_dis
KFEAT:  D = enter_dis
NSUBST: E = + / v, F = + / v, q = + / v, p = + / v, \
        B = 1:+ / 1:+vv / *:v, Z = 1:+ / 1:+v / *:v
SUBST:  2 = 22., 3 = 33.
KMONS:  1 = iron dragon
KMONS:  2 = rust devil
KMONS:  3 = war gargoyle / reaper w:5
KFEAT:  H = G
TILE:   GH = dngn_statue_iron_golem
FTILE:  A'1H = floor_infernal_blank
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 ....Gv.......vHDHv.......vG....
  ..2.E..2G...v'1'v...G2..F.2..
   ...v.......v'''v.......v...
    ..vvEvvvqqv'''vppvvvFvv..
     .....Gv..v'''v..vG.....
      ..2..v.3B'''B3.v..2..
       ....E..vvBvv..F....
        ...v..Z.3.Z..v...
         ..vEvv...vvFv..
          ..2Gv...vG2..
           ...vZvZv...
            ..G...G..
             .......
              .....
               ...
ENDMAP

NAME: vestibule_dis_grunt_castle
TAGS: vestibule_dis
MONS: war gargoyle / iron dragon, iron troll / iron golem
MONS: rust devil
NSUBST: D = 1:D / *:A
KFEAT: D = enter_dis
KFEAT: A = stone_arch
MAP
.......v.vvvvxxxxxxxvvvv.v.......
 ..vv...vvD.vvxxxxxvv.Dvv...vv..
  .3v...vv.2vvvvvvvvv2.vv...v3.
   ....v.vvv.........vvv.v....
    ....v.vv..1...1..vv.v....
     ..v.vvv.........vvv.v..
      ..vv.2vvv+++vvv2.vv..
       .vvD.vv.....vv.Dvv.
        .vvvv.v...v.vvvv.
         .vv.v.3.3.v.vv.
          ..v.v...v.v..
           ..3.....3..
            ..v...v..
             .......
              .....
               ...
ENDMAP

NAME:   vestibule_dis_nicolae_crystalline
TAGS:   vestibule_dis patrolling
KMONS:  D = crystal guardian
KMONS:  1 = crystal echidna / orange crystal statue / iron golem / iron troll
KFEAT:  D = enter_dis
SUBST:  E = D-, - = ..b, 1 = 111.
NSUBST: D = D / 3=111. / .
TILE:   b = wall_emerald
TILE:   v = dngn_metal_iron
MAP
vvbbbbbbbbbbbbbbbbbbbbbbbbbbbbbvv
 vvbbbbbbbbbbDbEbEbDbbbbbbbbbbvv
  vvbbbbbbbbDbDbEbDbDbbbbbbbbvv
   vvbbbbbbDbEbEbEbEbDbbbbbbvv
    vvbbbb-bDbDbEbDbDb-bbbbvv
     vvbb.b.bDbEbEbDb.b.bbvv
      vv-b1b-b-b-b-b-b1b-vv
       -v-b.b.b.b.b.b.b-v-
        .v-b1b.b-b.b1b-v.
         .v-b.b.b.b.b-v.
          .v.b1b-b1b.v.
           .v-b-b-b-v.
            .v-v-v-v.
             .......
              .....
               ...
ENDMAP

NAME:  vestibule_dis_nicolae_girt_by_a_triple_wall
TAGS:  vestibule_dis no_pool_fixup
KMONS: D = war gargoyle / iron dragon / iron giant
KMONS: 12 = iron troll / iron golem / rust devil
KFEAT: D = enter_dis
SUBST: 1 = 11'
FTILE: +'D1 = floor_infernal_blank
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vv1''''+''''v''D''v''''+''''1vv
  vv''''+'1''v1'''1v''1'+''''vv
   vv'''vv'''vv'1'vv'''vv'''vv
    vv'''vv''1v+++v1''vv'''vv
     vv'1'vv'''''''''vv'1'vv
      vv'''vv'''1'''vv'''vv
       vv'''vvvvvvvvv'''vv
        vv'''''''''''''vv
         vv''1'''''1''vv
          vvvvv+++vvvvv
           wwww...wwww
            wwww.wwww
             .......
              .....
               ...
ENDMAP

NAME:    vestibule_dis_nicolae_metal_as_hell
TAGS:    vestibule_dis patrolling
KMONS:   D = war gargoyle / iron dragon / ancient champion
KMONS:   1 = iron golem / rust devil / reaper / iron troll
KMONS:   2 = hellion
KFEAT:   D = enter_dis
KFEAT:   - = iron_grate
SUBST:   1 = 111., 2 = 222.
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvv...................vvvvvv
  vvvvv.2...1...1...1...2.vvvvv
   vvvv...................vvvv
    vvv...v---v.2.v---v...vvv
     .--...--.......--...--.
      .--...--..D..--...--.
       .--...--...--...--.
        .-v.1.v---v.1.v-.
         .--.........--.
          .--...1...--.
           .--.....--.
            .-v...v-.
             .......
              .....
               ...
ENDMAP

################################################################################
# Vestibule Geryon
NAME: vestibule_geryon_old
TAGS: vestibule_geryon
MONS: Geryon
MAP
       ...
      ..{..
     .......
    .........
   ...........
  .............
 ...............
.................
.......<1<.......
........<........
 ...............
  .............
   ...........
    .........
     [.....(
      .....
       ...
ENDMAP

NAME: vestibule_geryon_mu
TAGS: vestibule_geryon
MONS: Geryon
MAP
       ...
      ..<..
     ...1...
    .........
   ...........
  .............
 ...............
........(........
.<.............<.
.......{.[.......
 ...............
  .............
   ...........
    .........
     .......
      ..<..
       ...
ENDMAP

NAME: vestibule_geryon_nicolae_six_columns
TAGS: vestibule_geryon
MONS: Geryon
NSUBST: 1 = 1 / .
SUBST: b : x.
MAP
       ...
      .....
     .......
    .........
   ..xb...bx..
  ..b1.....1b..
 ...............
...b.........b...
..x1....{....1x..
...b.........b...
 ...............
  ..b1.....1b..
   ..xb...bx..
    .........
     .......
      .....
       ...
ENDMAP

NAME: vestibule_geryon_nicolae_wayward_sun
TAGS: vestibule_geryon
MONS: Geryon
SHUFFLE: ABCD, bc
SUBST: a : ..x, b : ..x, c : ., B : .x, C : .x, D : .x
NSUBST: A = 1:{ / 1:1 / *:.
MAP
       ...
      .....
     .......
    ....C....
   .a.b.B.b.a.
  ...D.cAc.D...
 ...b.x.x.x.b...
.....c.xxx.c.....
...CBAxxxxxABC...
.....c.xxx.c.....
 ...b.x.x.x.b...
  ...D.cAc.D...
   .a.b.B.b.a.
    ....C....
     .......
      .....
       ...
ENDMAP

NAME: vestibule_geryon_grunt_focused
TAGS: vestibule_geryon
MONS: Geryon
# Missing: abcde - we don't want it to be *completely* open.
SHUFFLE: ABCDE / ABCDe / ABCdE / ABCde / ABcDE / ABcDe / ABcdE / ABcde / \
         AbCDE / AbCDe / AbCdE / AbCde / AbcDE / AbcDe / AbcdE / Abcde / \
         aBCDE / aBCDe / aBCdE / aBCde / aBcDE / aBcDe / aBcdE / aBcde / \
         abCDE / abCDe / abCdE / abCde / abcDE / abcDe / abcdE
SUBST: ABCDE = x, abcde = .
MAP
       ...
      ..B..
     ...C...
    ....B....
   .ED.....DE.
  ..D{.....[D..
 .......A.......
.................
.BCB..A.1.A..BCB.
.................
 .......A.......
  ..D(.....<D..
   .ED.....DE.
    ....B....
     ...C...
      ..B..
       ...
ENDMAP

NAME:    vestibule_geryon_nicolae_amphitheater
TAGS:    vestibule_geryon
MONS:    Geryon
NSUBST:  1 = 1 / 0, < = { / <
SHUFFLE: DE
SUBST:   D = x, E = .
MAP
       ...
      .....
     .EDEDE.
    xx.....xx
   x1.......1x
  .x...EDE...x.
 .E...D...D...E.
..D..E..<..E..D..
..E..D.....D..E..
..D..E.<.<.E..D..
 .E...D...D...E.
  .x...EDE...x.
   x1.......1x
    xx.....xx
     .EDEDE.
      .....
       ...
ENDMAP

NAME:    vestibule_geryon_nicolae_diamonds
TAGS:    vestibule_geryon
MONS:    Geryon
NSUBST:  < = { / <
SHUFFLE: DE
SUBST:   D : x, E : x.
MAP
       ...
      .....
     ...D...
    ...E.E...
   ...D.<.D...
  .....E.E.....
 ...D...D...D...
...E.E.....E.E...
..D.<.D.1.D.<.D..
...E.E.....E.E...
 ...D...D...D...
  .....E.E.....
   ...D.<.D...
    ...E.E...
     ...D...
      .....
       ...
ENDMAP

NAME:   vestibule_geryon_nicolae_swimming_pool
TAGS:   vestibule_geryon no_pool_fixup
KMONS:  1 = Geryon
NSUBST: < = { / <
SUBST:  L = l., D : x., E : x., F : x.
: if crawl.one_chance_in( 3 ) then
KFEAT:  1 = w
SUBST:  l : w
: else
KFEAT:  1 = l
: end
MAP
       ...
      F...F
     EF...FE
    DE.....ED
   DD.......DD
  EE.<.LlL.<.EE
 FF...LlllL...FF
.....LlllllL.....
.....lll1lll.....
.....LlllllL.....
 FF...LlllL...FF
  EE.<.LlL.<.EE
   DD.......DD
    DE.....ED
     EF...FE
      F...F
       ...
ENDMAP
