##############################################################################
# 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.
##############################################################################

{{
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")
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 .. " skeleton 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 / hell beast / hell knight
ITEM:   good_item demon blade / good_item demon whip / \
        good_item demon trident
ITEM:   ring of fire ident:type / Necronomicon / \
        grand grimoire / scroll of torment ident:type
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 / hell beast / hell knight
ITEM:   good_item demon blade / good_item demon whip /\
        good_item demon trident
ITEM:   ring of fire ident:type / Necronomicon / \
        grand grimoire / scroll of torment ident:type
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 / hell beast / hell knight
ITEM:   demon blade / demon whip / demon trident / nothing
KMASK:  12Ad = opaque
SUBST:  ? : . l ?:40, ?=l.
: hell_entry_feature(_G, 'A')
: hell_entry_tier(_G, "mid")
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:5 / w:50 nothing
MONS:   blizzard demon / hell beast / cacodemon / green death / reaper \
        / balrug / hellion w:5 / tormentor w:5 / nothing w:30
MONS:
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
: dgn.delayed_decay(_G, '%', '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
WEIGHT: 6
TAGS: nolayout_encompass uniq_hell_entry_high transparent
: hell_entry_feature(_G, 'O')
NSUBST: + = 1:+ / 1:+x / *:x
MONS: hellephant / hell hog, hell hog / nothing
: 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
: hell_entry_feature(_G, 'O')
: hell_entry_tier(_G, "high")
MAP
 xxxxxxx
xx..O..xx
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 = hell beast
MONS: quicksilver dragon simulacrum / blizzard demon / ice dragon
MONS: iron troll / iron dragon
MONS: hell beast / hell hog / balrug
MONS: bone dragon / reaper / ancient champion band / soul eater w:20
: hell_entry_tier(_G, "mid")
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 = dngn_stone_wall_red
: 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 = dngn_stone_wall_red
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
KMONS:  i = reaper ; wand of flame / balrug ; wand of flame ident:type
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...
   ....cci'ccc..
  ...l..cc'''cc..
 ...lll..cc'''cc..
...lllll..cc'''cc..
..lllllll.'''O''c..
...lllll..cc'''cc..
 ...lll..cc'''cc..
  ...l..cc'''cc..
   ....cci'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

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

######################### 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 / hell 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:   ' = hell 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, hell beast / hell hog
MONS: sun demon / smoke demon / hell knight
NSUBST: 2 = 3:2 / *:.
NSUBST: 3 = 3:3 / *:.
FTILE: 123+G = floor_infernal_blank
: 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

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

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

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