##############################################################################
# dis.des: Special maps for the Iron City of Dis.
# Content: (mini)vaults particular to Dis, and/or first appearing in Dis
#          (order: Dis, Geh, Coc, Tar)
##############################################################################

: crawl_require('dlua/vault.lua')

{{
function dis_setup(e)
   e.place("Dis:$")
   e.tags("dis", "no_rotate")
   e.kitem("$ = $ no_pickup")
   e.set_feature_name("metal_statue", "iron statue")
end

function dis_rune(e)
   e.kmask('O = no_item_gen')
   e.kitem('O = iron rune of Zot')
end

function callback.grunt_iron_hall_animate(data,triggerable,trigger,marker,ev)
    if not dgn.persist.grunt_iron_hall_animated then
        dgn.persist.grunt_iron_hall_animated = true
        for replica in iter.replica_iterator("trap_statue", 1) do
        if crawl.one_chance_in(4) then
            dgn.terrain_changed(replica.x, replica.y, "floor", false)
            dgn.create_monster(replica.x, replica.y,
                               "patrolling iron golem generate_awake")
        end
    end
    crawl.mpr("You hear the creaking of ancient metal!", "warning")
    end
end

function dis_divider(e, water)
   e.tags("dis_divider no_rotate no_hmirror unrand")
   e.orient("north")
   e.depth("Dis:$")
   e.kmons("1 = hell sentinel")
   e.kmons("2 = quicksilver elemental / iron giant w:5")
   if water then
      e.kfeat("2w = deep_water")
      e.kmask("w = no_monster_gen")
   end
end

function dis_castle(e)
   e.tags("dis_castle no_rotate no_vmirror unrand")
   e.orient("north")
   e.depth("Dis:$")
   dis_rune(e)
end
}}

##############################################################################
# The Iron City of Dis
##############################################################################
default-depth: Dis, !Dis:$

NAME:   lemuel_mystery_crypt
MONS:   guardian mummy w:6 / ushabti w:4 / mummy priest / royal mummy
MONS:   ancient lich / dread lich
NSUBST: 1:1=}> / *=1
# occasionally the downstairs are in this vault
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
xxxxxxxxxxxxxxxxxx
xxGxxxxx1xxxx2.+1x
xx.xxxxx.xxxx..xxx
xx.xx1.x.x.1x..+1x
xx.xxx+x+x+xx..xxx
x...+.......+..+1x
+...+...G...+.Gxxx
x...+.......+..+1x
xx.xxx+x+x+xx..xxx
xx.xx1.x.x.1x..+1x
xx.xxxxx.xxxx..xxx
xxGxxxxx1xxxx2.+1x
xxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# The Dragons of Dis
# There is an 2/3 chance all the downstairs will be here.
NAME:    lemuel_dis_dragons
MONS:    iron dragon / crystal echidna, iron dragon
SHUFFLE: ]})
SUBST:   1=1. , }=}}> , )=..> , ]=..>
MAP
vvvvvvv+++vvvvvvv
v1.}.1v...v1.].1v
v.1.1.v...v.1.1.v
v..1..v.2.v..1..v
v.....v...v.....v
v.....v+++v.....v
v...............v
v.......1.......v
v...............v
v.......).......v
vvvvvvvvvvvvvvvvv
ENDMAP

##############################################################################
NAME:   grunt_dis_stairs_iron_hall
ORIENT: encompass
TAGS:   transparent patrolling no_monster_gen
MONS:   iron dragon / quicksilver elemental, hellion / tormentor
MONS:   iron giant
MONS:   crystal echidna / nothing, war gargoyle / nothing
KFEAT:  G = metal_statue
{{
    dgn.persist.grunt_iron_hall_animated = false
    local trap_marker = TriggerableFunction:new {
        func = "callback.grunt_iron_hall_animate",
        repeated = true}
    trap_marker:add_triggerer(DgnTriggerer:new {
        type="player_move"})
    lua_marker(':', trap_marker)
    lua_marker('1', trap_marker)
    lua_marker('2', trap_marker)
    lua_marker('d', trap_marker)
    lua_marker('e', trap_marker)
    lua_marker('f', trap_marker)
    lua_marker('}', trap_marker)
    lua_marker('G', props_marker {trap_statue=1,
                                  veto_destroy="veto"})
}}
SUBST: d = 3, e = 4, f = 5
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvG.+4Gvvv:::::}:::::vvvG4+.Gvv
vv..+4.vv::::1::::1:::vv.4+..vv
vv..v..vG::::::G::::::Gv..v..vv
vv..v55vv:::G:::::G:::vv55v..vv
vv55v..vG:2::::1::::2:Gv..v55vv
vv55v55vv:::::::::::::vv55v55vv
vv44v..vGf:G:::G:::G:fGv..v44vv
vv..v44vv::::e:::e::::vv44v..vv
vv..v..vG::::::2::::::Gv..v..vv
vv..v55vv:3:G:::::G:d:vv55v..vv
vv..v..vGf:::::G:::::fGv..v..vv
vv..v55vv:f:d::e::d:f:vv55v..vv
vv..v..vvvGvGve:evGvGvvv..v..vv
vv..v++vvvvvvv+++vvvvvvv++v..vv
vv..v..vGvGvGv...vGvGvGv..v..vv
vv55v4....4...3.3...4....4v55vv
vv55v...4...4.....4...4...v55vv
vv44vGvGvGvGvv.3.vvGvGvGvGv44vv
vv++vvvvvvvvvvvvvvvvvvvvvvv++vv
vG@.G.....................G@.Gv
v..............{..............v
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

###############################################################################
# Looks really weird and silly in box-packing, so limited to the city layouts.
NAME:    hangedman_dis_monolith
TAGS:    transparent layout_city
ORIENT:  centre
MONS:    patrolling quicksilver elemental / patrolling iron dragon / \
         patrolling war gargoyle
MONS:    patrolling hell sentinel
MONS:    hellion / tormentor / ancient champion / \
         dancing weapon w:20 ; great sword good_item | battleaxe good_item | \
                               glaive good_item | great mace good_item
SHUFFLE: ABa / EFc
NSUBST:  F = 1:112 / 1:1 / 1 : }:6 >:3 .:1
SUBST:   ABCDE = 0:19 3:1, a = +, bc = v, V : v.
: decorative_floor(_G, 'M', "bloodied mop and bucket")
MAP
....................
.vv......vv......vv.
.vv.v..v....v..v.vv.
.vv...vv3vv3vv..Mvv.
.vvv+vvvvvvvvvv+vvv.
0vvAAAvvvvvvvvEEEvv0
3vvvavvvvvvvvvvcvvv3
0vvBBBvvvvvvvvFFFvv0
.vvv+vvvvvvvvvv+vvv.
.vvM..vv3vv3vv...vv.
.vv.v..v....v..v.vv.
.vv......vv......vv.
....................
ENDMAP

###############################################################################
NAME:    nicolae_dis_hell_towers
ORIENT:  encompass
TAGS:    no_monster_gen
SHUFFLE: {}
NSUBST:  a = + / v, b = + / v, c = + / v, d = + / v, M = 1:M / *:.
SUBST:   2 = 2., 0 = 00.
KMONS:   12 = hell sentinel / iron giant
: decorative_floor(_G, 'M', "bloodied mop and bucket")
MAP
  vvvvv     vvvvv
 vv...vv   vv...vv
vvM.0..vv vv..0.Mvv
v.......vvv.......v
v.0.2.0.+.+.0.2.0.v
v.......vvv.......v
vv..0..vvvvv..0..vv
vvv...vvlllvv...vv
  vv+vvlllllvv+vv
   v.+..1}llvv{v
  vv+vvlllllvv+vv
 vv...vvlllvv...vv
vv..0..vvvvv..0..vv
v.......vvv.......v
v.0.2.0.+.+.0.2.0.v
v.......vvv.......v
vvM.0..vv vv..0.Mvv
 vv...vv   vv...vv
  vvvvvv    vvvvv
ENDMAP

NAME:   nicolae_dis_strange_trophy_room
ORIENT: centre
TAGS:   transparent extra decor
NSUBST: a = 2:+ / v, b = 2:+ / v, c = 2:+ / v, d = 2:+ / v, e = 2:+ / v
NSUBST: f = + / v
SUBST:  G = GG., V = .v
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvavvv
vG....a      vvdvvv
a.....vvvv   v..G.d
vvvv.....a   d....v
   a..G..vvdvv...vv
   vv....e.......v  vdv
    a..Vvv....vvfvvvv.v
 vvvv...e...vfv...G...d
 a....vvv.G...V.......v
 vvv..e..........V..vvv
   b..v...vvcvv..v..c
 vvv..V..Gv   c..v+vv
 v......vvv   vv.V.c
 b..vV..b      v...vv
 v..+...vvvv   c.G..c
 vvbvv..G..b   vvvvvv
     b.....v
     v.....v
     vvvbvvv
ENDMAP

NAME:    nicolae_dis_lava_storage_tank
TAGS:    transparent extra decor layout_city
SHUFFLE: ABCD/EFGH, IJK/LMN, OPQR/STUV
SUBST:   ABHIRS = g, CDKP = ., EGJLNOQT = v, FMUV = l
KPROP:   l = no_tele_into
KPROP:   l = no_cloud_gen
NSUBST:  g = 5:g / *:v
KFEAT:   g = iron_grate
MAP
...........
.....POgv..
.vggOPRlAC.
.gllQRQlBD.
.gllllllBD.
.vIJllllAC.
..KIllvgv..
...vggv....
...........
ENDMAP

NAME:    nicolae_dis_iron_filings
ORIENT:  centre
TAGS:    transparent extra decor layout_city
SUBST:   } = }}}{
SHUFFLE: abcdefghijkl, mnopqrstu
SUBST:   abcmno = v, d : .v, e : .v, f : .v, g : .v, h : .v, i : .v, j : .v, \
         k : .v, l : .v, p : .v, q : .v, r : .v, s : .v, t : .v, u : .v
MAP
         ...
       lkj.jkl
    ...ihg.ghi...
   ut...fe.ef...tu
  .tsr..dc.cd..rst.
  ..rqp..b.b..pqr..
  ...pon.a.a.nop...
 li...nm.v+v.mn...il
 khfd...+v.v+...dfhk
.jgecbavv...vvabcegj.
.......+..}..+.......
.jgecbavv...vvabcegj.
 khfd...+v.v+...dfhk
 li...nm.v+v.mn...il
  ...pon.a.a.nop...
  ..rqp..b.b..pqr..
  .tsr..dc.cd..rst.
   ut...fe.ef...tu
    ...ihg.ghi...
       lkj.jkl
         ...
ENDMAP

NAME:   lightli_tower_of_babel
TAGS:   no_monster_gen no_item_gen
ORIENT: encompass
NSUBST: > = 1:2 / *:....0>
NSUBST: 9 = 1:8 / *:9
KMONS:  2 = patrolling iron giant
KFEAT:  2 = }
TILE:   c = wall_marble
MAP
            vvvvv
       vvvvvv...vvvvv
    vvvvv...........vvvvv
 vvvv........0.0........vvvv
vv.........c.....c.........vv
v..>.cc....0..c..0....cc.>..v
v....cc.......9.......cc....v
v......v.............v......v
v.......v...vv.vv...v.......v
v........vvvv...vvvv........v
v........vvvv...vvvv........v
v.......vvvvv...vvvvv.......v
v..c0...vvvvvv.vvvvvv...0c..v
v......vvvvvvv+vvvvvvv......v
v.0....v...vv...vv...v....0.v
v...c9......+.{.+......9c...v
v.0....v...vv...vv...v....0.v
v......vvvvvvv+vvvvvvv......v
v..c0...vvvvvv.vvvvvv...0...v
v.......vvvvv...vvvvv....c..v
v........vvvv...vvvv........v
v........vvvv...vvvv........v
v.......v...vv.vv...v.......v
v......v.............v......v
v....cc.......9.......cc....v
v..>.cc....0..c..0....cc.>..v
vv.........c.....c.........vv
 vvvv........0.0........vvvv
    vvvvv...........vvvvv
        vvvvv...vvvvv
            vvvvv
ENDMAP

NAME:    hangedman_dis_decor_blocks_mantle
TAGS:    transparent
ORIENT:  centre
SHUFFLE: ABC, DEFG
NSUBST:  > = 1 = .:13 >:7 / 1 = M:6 {:4 / *:.
SUBST:   A : x:9 .:1, B : yy..., C = .
SUBST:   D : xxxx., E : y.., FG = .
SUBST:   x : v:3 G:2, y : v, - =  +v
: vault_metal_statue_setup(_G, "G", "iron statue")
: decorative_floor(_G, 'M', "bloodied mop and bucket")
MAP
        vvvvv     vvvvv
        v...v..D..v...v
        v.>.+.....+.>.v
        v...v..D..v...v
    vvvvvv+vv.....vv+vvvvvv
    v...v.............v...v
    v.>.+.A...E.E...A.+.>.v
    v...v.............v...v
vvvvvv+vv....vv-vv....vv+vvvvvv
v...v........v...v........v...v
v.>.+.B....C.+.>.+.C....B.+.>.v
v...v........v...v........v...v
vv+vv....vv+vvvvvvv+vv....vv+vv
 ......G.v...v   v...v.G......
 F.F.....+.>.v   v.>.+.....F.F
 ......G.v...v   v...v.G......
         vvvvv   vvvvv
ENDMAP

NAME:    hangedman_dis_decor_blocks_talon
TAGS:    transparent
ORIENT:  centre
SHUFFLE: ABCD, EFGHIJ
SUBST:   A : x:9 .:1, B : yyy.., C : z.., D = .
SUBST:   E : x:9 .:1, F : yy..., GHIJ = .
SHUFFLE: xyz, -_
SUBST:   x : v:3 G:2, y : v:3 G:1, z = v, - : ++v, _ : +vv
NSUBST:  > = 1 = .:13 >:7 / 1 = M:6 {:4 / *:.
: vault_metal_statue_setup(_G, "G", "iron statue")
: decorative_floor(_G, 'M', "bloodied mop and bucket")
MAP
                vvvvv
         .......v...v.E.....
         .....A.+.>.+....F.F
         .......v...v.E.....
         ...vv+vvv+vv...vv+vv
 .........H.v...v.......v...v
 ....G.G....+.>.+.B...C.+.>.v
 .........H.v...v.......v...v
 ...vv+vv...vv_vv...vv+vvv+vv
 ...v...v.I.......I.v...v...
 .D.+.>.-....J.J....-.>.+.D.
 ...v...v.I.......I.v...v...
vv+vvv+vv...vv_vv...vv+vv...
v...v.......v...v.E.........
v.>.+.C...B.+.>.+....D.D....
v...v.......v...v.E.........
vv+vv...vv+vvv+vv...
 .....E.v...v.......
 F.F....+.>.+.A.....
 .....E.v...v.......
        vvvvv
ENDMAP

NAME:    hangedman_dis_decor_blocks_crown
TAGS:    transparent
ORIENT:  centre
SHUFFLE: '-` / "_<, AB, CDEFG
SUBST:   '-` = v, " = ., _ = +, < = >, A : xxx., B: y...
SUBST:   C : xxxx.:1, D : yyy.., E : z.........., FG = .
SUBST:   x : v:3 G:2, y : v:3 G:1, z = v
NSUBST:  > = 1 = .:13 >:7 / 1 = M:6 [:4 / *:.
: vault_metal_statue_setup(_G, "G", "iron statue")
: decorative_floor(_G, 'M', "bloodied mop and bucket")
MAP
vvvvv       vvvvv
v'''v.C...D.v...v
v'`'-.......+.>.v
v'''v.C...D.v...v
vv-vv.......vv+vvvvvv
 ...............v...v
 C.C....E..E..A.+.>.v
 ...............v...v
 .......vv+vv...vv+vv
 .....E.v...v.......
 D.D....+.>.+.B..F.F
 .....E.v...v.......
vv+vv...vv+vvv+vv...
v...v.......v...v.G.
v.>.+.A...B.+.>.+...
v...v.......v...v.G.
vvvvvv+vv...vv+vv...
    v...v.F.........
    v.>.+....G.G....
    v...v.F.........
    vvvvv
ENDMAP

NAME:    hangedman_dis_decor_tower
TAGS:    extra transparent decor
SHUFFLE: AB, CD
SUBST:   A : v:4 .:1, B : v:1 .:4, C = v, D = .
MAP
    .....
 .....v.......
 ....CvC......
 .....v..Dv.....
....B.v...v.A...
..C...v.v.v.....
.vvvvvvvvvvvvv..
..C...vvvvv..D..
.....vvvvvvv.....
 ..D..vvvvv...C..
 ..vvvvvvvvvvvvv.
 .....v.v.v...C..
 ...A.v...v.B....
 .....vD..v.....
   ......CvC....
   .......v.....
        .....
ENDMAP

NAME:   hangedman_dis_chains
TAGS:   transparent extra decor
SUBST:  A : vv., B : vv., C : Gvv, D : Gvv
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
      .....vv.
   .....vvv..C
......Av...vv.
...vvv..vvv.....
.vv...vA........
D..vvv.......vv.
.vv.......vvv..D
........Bv...vv.
.....vvv..vvv...
  .vv...vB......
  C..vvv.....
  .vv.....
ENDMAP

NAME:   kennysheep_iron_temple
TAGS:   transparent no_rotate no_vmirror no_monster_gen
ORIENT: centre
MONS:   hell sentinel, iron golem
: single_cloud(_G, "F", "flame", false)
NSUBST: } = 1:} / *.
KFEAT:  B = altar_makhleb
MAP
    .....             .....
    .vvv...         ...vvv.
    .v}vvv...     ...vvv}v.
    .v...vvv.     .vvv...v.
    .v.12..v... ...v..21.v.
    .v.2..0vvv...vvv0..2.v.
    .vv.....0vv.vv0.....vv.
    ..v0......vvv......0v..
     .v......vvvvv......v.
     .vv0...vv...vv...0vv.
     ..v...v+..0..+v...v..
     ..vvvvv...F...vvvvv..
    ..vvvv....0.0....vvvv..
  ...vv.2v..0F.B.F0..v2.vv...
 ..vvv0..+....0.0....+..0vvv..
..vv0...2vv...F.F...vv2...0vv..
.vv.......v....0....v.......vv.
.+.......0v.........v0.......+.
.vvvvvvvvvvvvvv+vvvvvvvvvvvvvv.
..........v.........v..........
         .vv0.....0vv.
         ..v.......v..
          .vv0...0vv.
          ..v.....v..
           .v.2.2.v.
           .vv.1.vv.
           ..v...v..
            .vv}vv.
            ..vvv..
             .....
ENDMAP

# The rent rates are ridiculous.
NAME:    hangedman_iron_city_apartments
TAGS:    no_pool_fixup no_monster_gen
ORIENT:  encompass
MONS:    ancient champion / war gargoyle / hellion / tormentor / \
         crystal echidna w:2
MONS:    ancient lich / dread lich / hell sentinel / iron giant / juggernaut
KFEAT:   Z = trap_zot
NSUBST:  > = 1 = { / 1 = } / 2 = >:1 .:49 / *:.
# Always place at least one door per room, possibly wider or multiplied.
# Variation provided across either half of the vault and per-room.
NSUBST:  A = 1:+ / *:-, B = 1:+ / *:-, C = 1:+ / *:-, D = 1:+ / *:-
NSUBST:  E = 1:+ / *:-, F = 1:+ / *:-, G = 1:+ / *:~, H = 1:+ / *:~
NSUBST:  I = 1:+ / *:~, J = 1:+ / *:~, K = 1:+ / *:~, L = 1:+ / *:~
NSUBST:  ! = 1 : +:1 v:9 / * : +:1 v:49
SUBST:   - : -_, ~ : -_, - = vv+, _ = v++
SUBST:   V = vvGwlZ...
NSUBST:  Z = 2:Z / *:.
# No more than two bosses per room, and always have some of each extreme.
SHUFFLE: MNOPQRSTUWXY
NSUBST:  M = 2 = 1:3 2:1 .:1 / * = 1:4 .:1, N = 2 = 1:3 2:1 .:1 / * = 1:4 .:1
NSUBST:  O = 2 = 1:3 2:1 .:1 / * = 1:4 .:1, P = 2 = 1:3 2:1 .:1 / * = 1:4 .:1
NSUBST:  Q = 2 = 1:3 2:1 .:1 / * = 1:4 .:1, R = 2 = 1:3 2:1 .:1 / * = 1:4 .:1
NSUBST:  S = 2 = 1:3 2:1 .:1 / * = 1:4 .:1, T = 2 = 1:3 2:1 .:1 / * = 1:4 .:1
NSUBST:  U = 1:. / 1:1 / * = 1:4 .:1, W = 2:. / 1:1 / 1 = 1:4 .:1
NSUBST:  X = 1:2 / 1 = 1:3 2:1 .:1 / * = 1:4 .:1, Y = 2:2 / * = 1:4 .:1
KMASK:   wl = no_monster_gen
: decorative_floor(_G, 'm', "bloodied mop and bucket")
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v..................................................mv
v...................................................v
v..v..V...vvvBBBvvv...V...vvvDDDvvv...V...vvvFFFvv..v
v..v......vN.....Nv.......vP.....Pv.......vR....Rv..v
v..vvAAAvvv...V...vvvCCCvvv...V...vvvEEEvvv...V..v..v
v..vM....MvN..>..NvO.....OvP..>..PvQ.....QvR..>.Rv..v
v..v..V...vvvvvvvvv...V...vvvvvvvvv...V...vvvvvvvv..v
v..vM.>..M!T..>..T!O..>..O!W..>..W!Q..>..Q!Y..>.Yv..v
v..vvvvvvvv...V...vvvvvvvvv...V...vvvvvvvvv...V..v..v
v..vS.>..SvT.....TvU..>..UvW.....WvX..>..XvY....Yv..v
v..v..V...vvvHHHvvv...V...vvvJJJvvv...V...vvvLLLvv..v
v..vS....Sv.......vU.....Uv.......vX.....Xv......v..v
v..vvGGGvvv...V...vvvIIIvvv...V...vvvKKKvvv...V..v..v
v...................................................v
vm..................................................v
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

NAME:   nicolae_dis_array
TAGS:   transparent
DEPTH:  Dis
ORIENT: centre
NSUBST: D = + / +v / +vv / v, E = + / +v / +vv / v
MAP
vv+vvvDvvvDvvvDvvvDvvvDvvvDvv
v...v...v...v...v...v...v...v
v.0.+.0.+.9.+.8.+.9.+.0.+.0.v
v...v...v...v...v...v...v...v
vvEvvvEvvvEvvvEvvvEvvvEvvv+vv
ENDMAP

NAME:    nicolae_dis_big_boring_drill
TAGS:    transparent
DEPTH:   Dis
SHUFFLE: vbn
MAP
..................
.vv.b..b..b..b.vv.
 vvbnnbnnbnnbnnvv
 vvnnbnnbnnbnnbvv
.vv.b..b..b..b.vv.
..................
ENDMAP

NAME:   nicolae_dis_big_iron_x
TAGS:   no_monster_gen
DEPTH:  Dis:2-, !Dis:$
ORIENT: encompass
KMONS:  } = 8
KFEAT:  } = }
: local placement = crawl.random2( 4 )
: if placement == 1 then
SUBST:  D = {
NSUBST: EFHJKLM = 1:} / 1:m. / *:.
: elseif placement == 2 then
SUBST:  F = {
NSUBST: DJKLM = 1:} / 1:m. / .
: else
SUBST:  E = {
NSUBST: DHJKLM = 1:} / 1:m. / .
: end
SUBST:  0 = .00, 0 = 009, 9 = 998
: vault_metal_statue_setup(_G, "G", "iron statue")
: decorative_floor(_G, 'm', "bloodied mop and bucket")
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vG.....Gv...G...G...+...G...v
v.D..0.vvv....E....vvv.0..F.v
v.....vv.vv.......vv.vv.....v
v...0vv...vv0...0vv...vv0..Gv
v.0.v+.....vv...v+.....vv.0.v
v..vv.0.0...vv0vv...0.0.vv..v
vGvv...G.....vvv.....G...vv.v
vvv...0.9.v+vvGvvvv.9.0...v+v
v.vv.....vv.......v+.....vv.v
v..vv...vv.........vv...vv..v
v...vv..+..8.vGv.8..v..+v...v
vG..0vv.v....vvv....v.vv0..Gv
v.....vvv..vvvvvvv..vvv.....v
v.M...0vG..GvvvvvG..Gv0...H.v
v.....vvv..vvvvvvv..vvv.....v
vG..0vv.v....vvv....v.vv0..Gv
v...v+..v..8.vGv.8..+..vv...v
v..vv...vv.........vv...vv..v
v.vv.....+v.......vv.....vv.v
v+v...0.9.vvvvGvv+v.9.0...vvv
v.vv...G.....vvv.....G...vvGv
v..vv.0.0...vv0vv...0.0.vv..v
v.0.vv.....+v...vv.....+v.0.v
vG..0vv...vv0...0vv...vv0...v
v.....vv.vv.......vv.vv.....v
v.L..0.vvv....K....vvv.0..J.v
v...G...+...G...G...vG.....Gv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

NAME:   nicolae_dis_circle_tower
TAGS:   transparent
DEPTH:  Dis
ORIENT: centre
NSUBST: D = vvv+ / +, E = vvv+ / +, F = vvv+ / +, H = vvv+ / +, Q = + / vv+
: if you.depth() == 1 then
SUBST:  { = }
: elseif you.depth() ~= dgn.br_depth(you.branch()) then
SUBST:  { = {}
: end
SUBST:  0 = ...0000099, 9 = 998
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
     vvvQvvv
   vvv.....vvv
  vvG...0...Gvv
 vvvvvDvvvDvvvvv
 vGvG..0v0..GvGv
vv.v....D....v.vv
v..H..{.v....E..v
v..v0...v...0v..v
Q.0vvHvvvvvEvv0.Q
v..v0...v...0v..v
v..H....v....E..v
vv.v....F....v.vv
 vGvG..0v0..GvGv
 vvvvvFvvvFvvvvv
  vvG...0...Gvv
   vvv.....vvv
     vvvQvvv
ENDMAP

NAME:    nicolae_dis_distal_crystal
TAGS:    transparent
DEPTH:   Dis
KMONS:   1 = crystal echidna / crystal guardian
KMONS:   2 = orange crystal statue
SHUFFLE: DE
SUBST:   D : 1, E : 1b, F : 112bb
MAP
vvv     vvv
vbbb...bbbv
vb.......bv
 b.E.D.E.b
 .........
 ..D.F.D..
 .........
 b.E.D.E.b
vb.......bv
vbbb...bbbv
vvv     vvv
ENDMAP

NAME:  nicolae_dis_emergency_hatch
TAGS:  transparent
DEPTH: Dis, !Dis:$
KFEAT: ! = iron_grate
KMASK: 9>' = opaque
SUBST: G : Gvb.
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
.........
.Gv!!!vG.
.vv'''vv.
.!'9'9'!.
.!''>''!.
.!'9'9'!.
.vv'''vv.
.Gv!!!vG.
.........
ENDMAP

# In the fourth circle of the Inferno, hoarders and spendthrifts fight for
# eternity, slamming great weights into each other. Here, they are represented
# by stone giants with heavy clubs and ancient champions with heavy maces.
# Also, they will be slamming the great weights into you instead of each other.
NAME:  nicolae_dis_fourth_circle
TAGS:  transparent
DEPTH: Dis:2-
KMONS: 1 = stone giant ; large rock . giant club good_item | \
                                      giant spiked club good_item
KMONS: 2 = ancient champion ; morningstar good_item | dire flail good_item | \
                              eveningstar good_item | great mace good_item
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvvvvvvvvvvvvv
vvGvvvv11111vvv
v...vG.......Gv
v...v.........v
v.{.+.........+
v...v.........v
v...vG.......Gv
vvGvvvv22222vvv
vvvvvvvvvvvvvvv
ENDMAP

NAME:  nicolae_dis_grated_feature
TAGS:  transparent allow_dup
DEPTH: Dis
KFEAT: ! = iron_grate
KPROP: v = no_tele_into
KMASK: vbGl = opaque
SUBST: v : vbGl
: vault_metal_statue_setup(_G, "G", "iron statue")
TILE:  G = dngn_statue_iron / dngn_statue_iron_golem
MAP
.....
.!!!.
.!v!.
.!!!.
.....
ENDMAP

NAME:  nicolae_dis_having_a_grate_time
TAGS:  transparent
DEPTH: Dis, !Dis:$
KMONS: 1 = tormentor / hellion / nothing w:5
KFEAT: ' = iron_grate
SUBST: v : vvvb, 0 = .009, 9 = 998
MAP
'''.'''''''.'''
'v'....0....'v'
'''.'''.'''.'''
...0'v'.'v'0...
'.'''''.'''''.'
'.'v'..1..'v'.'
'.'''..'..'''.'
'0...1'}'1...0'
'.'''..'..'''.'
'.'v'..1..'v'.'
'.'''''.'''''.'
...0'v'.'v'0...
'''.'''.'''.'''
'v'....0....'v'
'''.'''''''.'''
ENDMAP

# Made of various alchemical symbols for iron, along with monsters who are named
# after iron. The iron giants' Harpoon Shot and Throw Ally will hopefully help
# counteract the slowness of the inhabitants.
NAME:   nicolae_dis_heavy_handed_symbolism
TAGS:   transparent no_monster_gen
DEPTH:  Dis, !Dis:$
ORIENT: encompass
KMONS:  1 = iron troll
KMONS:  2 = iron dragon
KMONS:  3 = iron golem
KMONS:  4 = iron giant
KFEAT:  ! = iron_grate
SUBST:  1 = 11., 1 = 111223 4:5, 3 = .2334
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv...v
vvvvvvvvvvvvvvvvvvvvvvvvvvvv.4..}.v
vvvvvvvvvvvvvvvvvvvvvvvvv.........v
vvvvvvvvvvvvvvvvvvvvvv...3...vv..vv
vvvvvvvvvvvvvvvvvvv........vvvv.4vv
vvvvvvvvvvvvvvvv.....3...vvvvv...vv
vvvvvvvvvvvvv..........vvvvvvv..vvv
vvvvvvvvvv..!.1..4...vvvvvvvv...vvv
vvvvvvv.....v......vvvvvvvvvv.3.vvv
vvvv...1...vvv...vvvvvvvvvvv...vvvv
v.......1.v.v.v...vvvvvvvvvv...vvvv
v.4......1..v......vvvvvvvv....vvvv
v..........vvv...3..vvvvvvv.3.vvvvv
v...vvvv..v...v....vvvvvvv....vvvvv
v.1.vvvv..v.2.v...vvv.vvvv....vvvvv
v...vvvv..v...v..vvv...vv....vvvvvv
v...vvvvv..vvv..vvv..3..v.4..vvvvvv
v1.....vvv.....vvv...........vvvvvv
v.1..1..vvv...vvv...........vvvvvvv
v..1.....vvv.vvv..vvv..v..1.vvvvvvv
v...vvv...vvvvv..v...v..v...vvvvvvv
v!!!vvv.4..vvv...v.2.vvvvv!vvvvvvvv
v...vvv...vvvvv..v...v..v..vvvvvvvv
v..1.....vvv.vvv..vvv..v...vvvvvvvv
v.1..1..vvv...vvv.....1...vvvvvvvvv
v1.....vvv..4..vvv.....1..vvvvvvvvv
v...vvvvv.......vvvvv...1.vvvvvvvvv
v.1.vvvv...vvv...vvvv....vvvvvvvvvv
v...vvvv.1.vvv.1.vvvv....vvvvvvvvvv
v...Gvvv...vvv...vvvv....vvvvvvvvvv
v.........1.!.1.........vvvvvvvvvvv
v.{...1..1..!..1...1..4.vvvvvvvvvvv
v.......1...!...1.......vvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

NAME:    nicolae_dis_heavy_security
TAGS:    transparent
DEPTH:   Dis, !Dis:$
ORIENT:  centre
KPROP:   ` = no_tele_into
KMONS:   1} = hell sentinel w:20 / hellion / tormentor
KFEAT:   ! = iron_grate
KFEAT:   } = }
KMASK:   ` = opaque
SHUFFLE: LMNO, PQRSZapqrsyz
SUBST:   MNOP = !, LQRSZapqrsyz = ., - = 1..
MAP
  `` `` `` ``..
 v!!v!!v!!v!!v.
`!..P..Q..R..L.
`!.1P.-Q-.R1.L.
 vzzv!!v!!vSSv.
`!........!..M.
`!.-......!-.M.
 vyyv..}..vZZv.
`!.-!.....!-.N.
`!..!.....!..N.
 vssv!!v!!vaav.
`!.1r.-q-.p1.O.
`!..r..q..p..O.
 v!!v!!v!!v!!v.
  `` `` `` ``..
ENDMAP

# It slices! It dices! It juliennes!
NAME:   nicolae_dis_hell_of_blades
TAGS:   no_monster_gen patrolling
DEPTH:  Dis:2-, !Dis:$
ORIENT: encompass
KMONS:  1 = executioner
KMONS:  2} = dancing weapon ; executioner's axe good_item ego:heavy | \
        bardiche good_item ego:heavy | battleaxe good_item ego:heavy | \
        great sword good_item ego:heavy | lajatang good_item ego:heavy | \
        triple sword good_item ego:heavy | glaive good_item ego:heavy
# These monsters get items from their usual gear in mon-gear.cc, but a curated
# list of the biggest slicing/chopping weapons in their given selection.
# The ones with armour get the best armour on their list.
# Balrugs and profane servitors get weapons outside their normal purview,
# because I wanted them here but they don't normally wield blades.
: local ba = "battleaxe good_item"
: local gs = "great sword good_item"
: local gl = "glaive good_item"
: kmons("3 = ancient champion ; " .. ba .. " | " .. gs .. " . plate armour / " ..
:           "hell knight ; " .. ba .. " | " .. gs .. " | " .. gl ..
:                          " . plate armour / " ..
:           "reaper ; " .. scythe() .. " good_item / " ..
:           "war gargoyle ; lajatang good_item / " ..
:           "fire giant ; " .. gs .. " ego:flaming / " ..
:           "frost giant ; " .. ba .. " ego:freezing / " ..
:           "balrug ; demon blade good_item / " ..
:           "profane servitor ; demon blade good_item")
KFEAT:  } = }
NSUBST: } = } / 1
SUBST:  S = 12233.
# The same floor tile/color as the Hall of Blades; an easter egg for the fans.
# Since this is a small encompass vault, this way seemed easier than doing it
# for each possible glyph.
LFLOORCOL:  lightgrey
LFLOORTILE: floor_vault
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v....vvvvvvv.........vvvvvvv....v
v.{...vvvvv..S..S..S..vvvvv...}.v
v......vvv.............vvv......v
v.....2.v.......v.......v.2.....v
vv...3....S..S.vvv.S..S....3...vv
vvv.2.........3.v.3.........2.vvv
vvvv.........v.2.2.v.........vvvv
vvvvv.S...S.vvv.1.vvv.S...S.vvvvv
vvvv.........v.2.2.v.........vvvv
vvv.2.........3.v.3.........2.vvv
vv...3....S..S.vvv.S..S....3...vv
v.....2.v.......v.......v.2.....v
v......vvv.............vvv......v
v.1...vvvvv..S..S..S..vvvvv...}.v
v....vvvvvvv.........vvvvvvv....v
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

NAME:   nicolae_dis_liches_on_tour
TAGS:   transparent
DEPTH:  Dis:2-
KMONS:  1 = hell sentinel
KMONS:  2 = hellion / tormentor
KMONS:  3 = ancient lich / dread lich
NSUBST: M = 1=1 / 2=3 / 13
SUBST:  N = 1223 .:5
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
     vvvvv
     N...N
     .....
   vvvv+vvvv
   vM.G.G.Mv
vN.v.......v.Nv
v..vG.....Gv..v
v..+..v{v..+..v
v..vG.....Gv..v
vN.v.......v.Nv
   vM.G.G.Mv
   vvvv+vvvv
     .....
     N...N
     vvvvv
ENDMAP

NAME:   nicolae_dis_metal_dragon_surprise
TAGS:   transparent
DEPTH:  Dis:2-
KMONS:  1 = golden dragon
KMONS:  2 = quicksilver dragon
KMONS:  3 = iron dragon
NSUBST: D = 1 / 2 / 3 / 123
SUBST:  G : GGv
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
    .......
  ....D.G....
 ...G.....D...
 .D.........G.
...............
.G...........D.
...............
.D.....{.....G.
...............
.G...........D.
...............
 .D.........G.
 ...G.....D...
  ....D.G....
    .......
ENDMAP

NAME:   nicolae_dis_metal_hellway
TAGS:   transparent
DEPTH:  Dis
ORIENT: centre
KFEAT:  G = metal_statue
SUBST:  0 = .009, 9 = 998
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvv vv vv vvvvv vv
......v v....G....v
@..0.Gv vG.......Gv
......v v.9..0....v
  v....0..9.v v......
  vG.......Gv vG.0..@
  v....G....v v......
  vv vvvvv vv vv vvvv
ENDMAP

NAME:   nicolae_dis_pentagon_1
TAGS:   transparent
DEPTH:  Dis:2-
ORIENT: centre
SUBST:  0 = 009, 9 = 998
MAP
      v+v
    vvv.vvv
   vv.....vv
 vvv...0...vvv
vv...........vv
+.............+
v..0.......0..v
vv.....{.....vv
 v...........v
 vv.........vv
  v.........v
  vv.0...0.vv
   v.......v
   +vvvvvvv+
ENDMAP


# The staircase is slightly off-center but this way lets you see the whole
# vault at once as soon as you enter.
NAME:   nicolae_dis_pentagon_2
TAGS:   transparent
DEPTH:  Dis:2-
ORIENT: centre
SUBST:  0 = 009, 9 = 998
MAP
     vvvv+v
 +vvvv....v
 v......0.vv
 v.0.......v
 v.........vv
vv..........v
v...........vv
v......{..0..+
v.0.........vv
+..........vv
vvv....0..vv
  vvv....vv
    vvv.vv
      v+v
ENDMAP

NAME:    nicolae_dis_scattering
TAGS:    transparent allow_dup luniq
DEPTH:   Dis
KFEAT:   ! = iron_grate
SHUFFLE: DEFHJKLMNO
SUBST:   DEF : v, HJ : b, K : !, L : vvvbb!, M : vvvbb!, N : vvvbb!, O : vvvbb!
MAP
    ...J...
    .M...M.
   O...H...O
  ON.L...L.NO
.......F.......
.M.L.K...K.L.M.
.......E.......
J.H.F.EDE.F.H.J
.......E.......
.M.L.K...K.L.M.
.......F.......
  ON.L...L.NO
   O...H...O
    .M...M.
    ...J...
ENDMAP

NAME:    nicolae_dis_spooky_hallway
TAGS:    transparent
DEPTH:   Dis, !Dis:$
KFEAT:   G = metal_statue
SHUFFLE: DE/FH/JK/LM/NO/PQ
SUBST:   D = @, F : @vv, JLNP = v, K = }, EHMOQ0 = .009, 9 = 998
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vDDDvvFFFvvJJJv
v...vv...vv...v
v.E.vv.H.vv.K.v
v...vv...vv...v
vv+vvvv+vvvv+vv
....0.....0....
@.............@
@.G..0.G.0..G.@
@.............@
....0.....0....
vv+vvvv+vvvv+vv
v...vv...vv...v
v.Q.vv.O.vv.M.v
v...vv...vv...v
vPPPvvNNNvvLLLv
ENDMAP

NAME:    nicolae_dis_step_into_the_octagon
TAGS:    transparent
DEPTH:   Dis:2-
KMONS:   1 = iron golem / iron giant / war gargoyle / ancient champion / \
             iron dragon / juggernaut / hell sentinel
KFEAT:   ! = iron_grate
# Monsters can still show up on the outer edge, to spectate.
KMASK:   1{' = no_monster_gen
SHUFFLE: Pp/Qq
SUBST:   P = {, Q = 1, p = +, q = v
MAP
   .......
 ...!!v!!...
 .v!!'''!!v.
..!'''1'''!..
.!!'1'''Q'!!.
.!'''''''''!.
.p'1'''''P'v.
.!'''''''''!.
.!!'1'''1'!!.
..!'''1'''!..
 .q!!'''!!v.
 ...!!v!!...
   .......
ENDMAP

# From the dcss channel on the roguelikes discord:
# Ge0ff:   FR: a bowling-themed Dis vault with iron giants and a bunch of
#          boulder beetles
# ebering: @nicolae do you take commissions
# Apparently I do.
NAME:   nicolae_dis_bowling_alley
TAGS:   transparent no_monster_gen
DEPTH:  Dis:2-
KMONS:  O = boulder beetle
KMONS:  P = iron giant
SUBST:  Q = OO.
NSUBST: G = 1:{ / *:G
: vault_metal_statue_setup(_G, "G", "iron statue")
TILE:   G = dngn_statue_iron_golem
MAP
vvvvvvvvvvvvvvvv
v.............Qv
v.G........OP.Qv
v...G.........Qv
v.G...G....OP.vv
v...G...G......@
v.G...G....OP.vv
v...G.........Qv
v.G........OP.Qv
v.............Qv
vvvvvvvvvvvvvvvv
ENDMAP

NAME:    nicolae_dis_metal_lava_thing
TAGS:    transparent
DEPTH:   Dis:2-
SHUFFLE: DEF, HJK, LMN, OPQ
SUBST:   DHLO = ., EFJKMNPQ = l, 0 = .009, 9 = 9998
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vlvlvlv...vlvlvlv
l.....D...F.....l
v.0.0.v.G.v.0.0.v
l..G..D...F..G..l
v.0.0.vEvEv.0.0.v
l...............l
vQvQv.......vHvHv
....P.......J....
..G.v...{...v.G..
....P.......J....
vOvOv.......vKvKv
l...............l
v.0.0.vMvMv.0.0.v
l..G..N...L..G..l
v.0.0.v.G.v.0.0.v
l.....N...L.....l
vlvlvlv...vlvlvlv
ENDMAP

NAME:   tekkud_dis_hexagon_chokepoint
TAGS:   no_rotate
DEPTH:  Dis:2-
ORIENT: centre
MONS:   crystal guardian, iron golem, orange crystal statue
MAP
     vvv@vvv
    vvvv.vvvv
   vvvv...vvvv
  vvv.......vvv
 vv1.........1vv
vv2832..3..2382vv
 vv1.........1vv
  vvv.......vvv
   vvvv...vvvv
    vvvv.vvvv
     vvv@vvv
ENDMAP

default-depth:
##############################################################################
# Dispater's castle - subvaulted, with three main versions
##############################################################################
NAME:     iron_city_of_dis
TAGS:     no_rotate layout_city
WEIGHT:   30
ORIENT:   north
SUBVAULT: A : dis_castle
SUBVAULT: B : dis_divider
: dis_setup(_G)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
vBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv
ENDMAP

NAME:    dis_old
MONS:    patrolling Dispater, hell sentinel, iron giant
MONS:    caustic shrike, war gargoyle, crystal echidna / iron dragon w:5
KMONS:   7 = hell sentinel
KMONS:   8 = quicksilver elemental
: serpent_of_hell_setup(_G)
SHUFFLE: 23
SUBST:   4 = 4446
: dis_castle(_G)
MAP
....................................................................
.....vvvvvvvvv........................................vvvvvvvvv.....
.....v3.....|v........................................v|.....2v.....
.....v.vv+vvvv.v.v.v.v.v.v.v.v.v..v.v.v.v.v.v.v.v.v.v.vvvv+vv.v.....
.....v.v.....vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv.....v.v.....
.....v|v.....+$$v$$+$$v||vvvvvvvvvvvvvvvvv$$$$v4.4.v$$v.....v|v.....
.....vvvv+vvvv$$+$$v$$+||v...............v$$$$+.4.4+$$v+vv+vvvv.....
.......vv.vvvvvvvvvvvvvvvv.v..v..v..v..v.v$$$$v4.4.v$$+||v.vv5......
......vvv................v7.............7vvvvvvvvvvvvvvvvv.vvv......
......5vv................+...............+.................vv.......
......vvv+vvvvvvvvvvvvvvvv8v..v..v..v..v8vvvvvvvvvvvvvvvvv.vvv......
.......vv..v.+$$$$$v.....v...............vvvvvvvvvvvvvvvvv.vv4......
......vvv.Dv.v$$$$$v.....v...............vv|$|$|vv|$|$|$vv.vvv......
......4vv7.v.vvvvvvv.....vvvvv.......vvvvvv$|$|$++$|$|$|vv.vv.......
......vvv..v...............v.vvvv+vvvvvvvvvvvvvvvvvvvvv+vv.vvv......
.......vvv+v..........vvvvv4.vvv...vvvvvvvvvvvvvvvvvvvv+vv.vv5......
......vvv..v.v..v..v....2vvv+vv5...5vvvvvvv.4.4.vv.4.4.4vv.vvv......
......5vv.................vv|vvv...vvvvv.++4.4.4++4.4.4.vv.vv.......
......vvv.................1vOvv5...5vvvv.vvvvvvvvvvvvvvvvv.vvv......
.......vv.................vv|vvv...vvvvv.vvvvvvvvvvvvvvvvv.vv4......
......vvv.v..v..v..v....3vvv+vv4...4vvvv...................vvv......
......4vv.............vvvvv4.vvv...vvvvvvvvvvvvvvvvvvvvvvv.vv.......
.....vvvv+vvvv.............v.vv4...4vvvvvvvvvvvvvvvvvvvvvv+vvvv.....
.....v|v.....vvvvvvvvvvvvvvvvvvv...vvvvvvvvvvvvvvvvvvvv.....v|v.....
.....v.v.....vvvvvvvvvvvvvvvvvvvv+vvvvvvvvvvvvvvvvvvvvv.....v.v.....
.....v.vv+vvvv5.............5.........5..............5vvvv+vv.v.....
.....v2.....|v........................................v|.....3v.....
.....vvvvvvvvv........................................vvvvvvvvv.....
....................................................................
....................................................................
ENDMAP

NAME:    dis_mu
KFEAT:   o = granite_statue
MONS:    patrolling Dispater, hell sentinel, iron giant, caustic shrike
MONS:    war gargoyle, crystal echidna / iron dragon w:5, ancient champion
KMONS:   8 = iron golem
KMONS:   9 = hell sentinel
KMONS:   0 = quicksilver elemental
: serpent_of_hell_setup(_G)
SHUFFLE: 23
SUBST:   4 = 4:20 7
SUBST:   8 = 8o
: vault_metal_statue_setup(_G, "oG", "iron statue")
TILE:    o = dngn_statue_iron_golem
# Use primary/replica setup.
MARKER:  o = lua:monster_on_death { \
            death_monster="Dispater", new_monster="generate_awake iron golem", \
            message_seen="The iron statue comes to life!", \
            message_unseen="You hear a grinding sound.", \
            monster_place_feature=dgn.fnum("metal_statue"), \
            veto_destroy="veto" \
         }
KITEM:   | = superb_item no_pickup
: dis_castle(_G)
MAP
....................................................................
...............................................v5v..v5v.............
...............................................vvvvvvvv.............
...........v5v4v...v5v4v...v5v4v...v5v4v.....vvv...4..vvv...........
...........vvvvv...vvvvv...vvvvv...vvvvv...vvv.+..88..+.vvv.........
...........v||3v...v2||v...v$$$v...v$$$v..vv...v...4..v...vv........
...........v|..v...v..|v...v$|$v...v$|$v.vv..vvvvvvvvvvvv..vv.......
...........v...vvvvv...vvvvv.6.vvvvv.6.vvv..vvvvvvvvvvvvvv..vv......
.........vvvv+vvW8Wvv+vvvvvv...+...+...vv..vvv.........vvvv..v......
........vv.v...........vvvvvvvvv...vvvvvv.vvvv$$$$vvv...vvvv.vv.....
......vvv..+.......44..vv|$|vvv.....vvvv..vvvv$$vvv...v.vvvv..v.....
.....vv....v...........vv$$$vv..vvv..vvv+vvvvv||vvo......vvvv+vvv...
...vvv.8W..vvvvvvvvvvvvvv$$$v...v9v...v...vvvv|vvo2......vvv...v5...
...5vv.WW..vv5vv5vv5vv5vvv+vv.........+...vvvv|vv...v.v...vv9..vv...
...vvv.WW..+................+..v...v..v...vvvvOv1.........+..o.v....
...vvv.WW..+................+..5.W.5..v...vvvv|v0.........+..o.v....
...5vv.WW..vv5vv5vv5vv5vvv+vv..v.W.v..v...vvvv|vv...v.v...vv9..vv...
...vvv.8W..vvvvvvvvvvvvvv$$$v..5.W.5..v..Dvvvv|vvo3......vvv...v5...
.....vv....v.......v...vv$$$v..v...v..vv+vvvvv||vvo......vvvv+vvv...
......vv...+.......+...vv|$|v.........vv..vvvv$$vvv...v.vvvv..v.....
.......vvv.v.......v...vvvvvv..vv+vv..vvv.vvvv$$$$vvv...vvvv.vv.....
.........vvvv+vvW8Wv$$$vvvvvv.0v...v0.vvv..vvv.........vvvv..v......
...........v...vvvvv$$$vvvvvvvvv...vvvvvvv..vvvvvvvvvvvvvv..vv......
...........v$2$v...v$3$v...vvvvv...vvvvv.vv..vvvvvvvvvvvv..vv.......
...........v|||v...v|||v...vvvvv...vvvvv..vv...v...4..v...vv........
...........vvvvv...vvvvv...vvv8v+++v8vvv...vvv.+..88..+.vvv.........
...........v5v4v...v5v4v...v.v.v...v.v.v.....vvv...4..vvv...........
............................7.........7........vvvvvvvv.............
...........................7...........7.......v5v..v5v.............
............................7.........7.............................
ENDMAP

NAME:    dis_grunt
MONS:    patrolling Dispater, Hell Sentinel, crystal echidna / iron dragon w:5
MONS:    caustic shrike / ancient champion w:20
MONS:    iron golem, quicksilver dragon, cacodemon
SHUFFLE: AP / BQ / CR / SY / ET
SUBST:   A = 1, BC = 2, SE = 7, Y = D
SUBST:   P = O, QRST = .
NSUBST:  D = 1:D / *:., G = 4:8 / *:G
KMONS:   8 = iron golem
KMONS:   9 = war gargoyle
ITEM:    plate armour good_item / crystal plate armour good_item w:3
ITEM:    any weapon good_item
KMONS:   K = Hell Sentinel
KITEM:   K = |
KMONS:   J = Hell Sentinel
KITEM:   J = $
: serpent_of_hell_setup(_G)
: dis_castle(_G)
: vault_metal_statue_setup(_G, "G", "iron statue")
TILE:    G = dngn_statue_iron_golem
MAP
....................................................................
....................................................................
...............vv9.vv4.vv9.vvvvvvvvvvvvvvvvvvvvvv.9v.4v.9vvvvvvvvv..
.............vvvvvvvvvvvvvvv.....+$$$v||vP......vvvvvvvvvv......Qv..
...........vvv.............v.4.5.+$$$vK|v........vvvvvvvv........v..
.........vvvvv.G.G.G.G.G.G.v..3..v$J$v$$v..A.....vvvvvvvv.....B..v..
......vvvvvvvv.............+...4.v|||v$$v........vvvvvvvv........v..
......vv.....+......3......+.....vvvvv++v........vvvvvvvv........v..
......9v.5.4.+....5...4....vvvvvvv...v45v.........vvvvvv.........v..
......vv.....+.............vvvvv.....v.3v........................v..
......vv...G.vvvvvv+++vvvvvvvvv..4.9.+.4vv......................vv..
.vv...9v.....v.............vvv.......+..vvvvvv..............vvvvv9..
.vvv++vv...3.v.G.G.....G.G.vv..G.G.G.vvvvvvvvvv....v++v....vvvvvvv..
..v...4v...G.v.............v..4.8....vvvvvvvvvv...vv..vv...vvvvvv9..
..+....+.....v..4....2...5.+.....D...+....2...+...+.dT.+...vvvvvvv..
..+....+.....v..5..9.....4.+.....2...+........+...+.Ee.+...vvvvvv9..
..v...4v...G.v.............v..4.8....vvvvvvvvvv...vv..vv...vvvvvvv..
.vvv++vv...3.v.G.G.....G.G.vv..G.G.G.vvvvvvvvvv....v++v....vvvvvv9..
.vv...9v.....v.............vvv.......+..vvvvvv..............vvvvvv..
......vv...G.vvvvvv+++vvvvvvvvv..4.9.+.4vv......................vv..
......vv.....+.............vvvvv.....v.3v........................v..
......9v.5.4.+....4...5....vvvvvvv...v54v.........vvvvvv.........v..
......vv.....+......3......+.....vvvvv++v........vvvvvvvv........v..
......vvvvvvvv.............+...4.v$$$v$$v........vvvvvvvv........v..
.........vvvvv.G.G.G.G.G.G.v..3..v$$$v$$v..Y.....vvvvvvvv.....C..v..
...........vvv.............v.4.5.+$J$vK|v........vvvvvvvv........v..
.............vvvvvvvvvvvvvvv.....+|||v||vS......vvvvvvvvvv......Rv..
...............vv9.vv4.vv9.vvvvvvvvvvvvvvvvvvvvvv.9v.4v.9vvvvvvvvv..
....................................................................
....................................................................
ENDMAP

NAME:    dis_wall_1
: dis_divider(_G, false)
MAP
....................................................................
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv++++vv++++vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv..........vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv..........vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv...1..1...vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv..........vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv..........vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv..........vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv++++vv++++vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvv..............2...2..2................2..2...2..............vvvv
ENDMAP

NAME:    dis_wall_2
: dis_divider(_G, false)
MAP
....................................................................
vvvvvvvvvvvv++vvvvvvvvvvvvvvvvvvvnnvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvv
vvvvvvvvvvv....vvvvvvvvvvvvvv..........vvvvvvvvvvvvvv....vvvvvvvvvvv
vvvvvvvvvvv....vvvvvvvvvvvvvv..........vvvvvvvvvvvvvv....vvvvvvvvvvv
vvvvvvvvvvv.1..+............+...1..1...+............+..1.vvvvvvvvvvv
vvvvvvvvvvv....vvvvvvvvvvvvvv..........vvvvvvvvvvvvvv....vvvvvvvvvvv
vvvvvvvvvvv2...vvvvvvvvvvvvvv..........vvvvvvvvvvvvvv...2vvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv..........vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvv++++vv++++vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvv.......2......2......2................2......2......2.......vvvv
ENDMAP

NAME:    dis_wall_3
: dis_divider(_G, false)
MAP
....................................................................
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv..vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvv........vvvvvvvvvvvvvvvvvvvv10vvvvvvvvvvvvvvvvvvvvvv........vvvv
vvvv.v.21.v..............................................v.12.v.vvvv
vvvv.v....v..............................................v....v.vvvv
vvvv........vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv........vvvv
vvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvv
vvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvv
vvvv.2....2..............................................2....2.vvvv
ENDMAP

NAME:    dis_wall_4
: dis_divider(_G, true)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvv1..............1vvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvwwwwwwwwwwwwwwwwwwwwww..wwwwwwwwwwww..wwwwwwwwwwwwwwwwwwwwwwvvvv
vvvvwwwwwwwwwwwwww2wwwwwww..wwwwwwwwwwww..wwwwwww2wwwwwwwwwwwwwwvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvv..vvvvvvvvvvvv..vvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvv....................................................vvvvvvvv
vvvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvv
vvvvwwww..wwwww2wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww2wwwww..wwwwvvvv
vvvvwwww..wwwww2wwwwwwwwwwwwwwwww22wwwwwwwwwwwwwwwww2wwwww..wwwwvvvv
ENDMAP

NAME:    dis_wall_5
: dis_divider(_G, true)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv....vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwww..wwwwwwwwwwwwwwwwwwwwwwwwwwwwwvvvv
vvvvwwww2www2wwwwwwwwwwwwwwwwwwww..wwwwwwwwwwwwwwwwwww2wwww2wwwwvvvv
vvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwww..wwwwwwwwwwwwwwwwwwwwwwwwwwwwwvvvv
vvvvwwww....................................................ww2wvvvv
vvvvww2w.........................11.........................wwwwvvvv
vvvvwwww..vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv..wwwwvvvv
vvvvwwww..vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv..wwwwvvvv
vvvvwwww..vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv..wwwwvvvv
ENDMAP

NAME:    dis_wall_6
: dis_divider(_G, false)
MAP
....................................................................
vvvvvvvvvvv+++vvvvvvvvvvvvvvvvvv++++vvvvvvvvvvvvvvvvvv+++vvvvvvvvvvv
vvvvvvvvvvv...vvvvvvvvvvvvvvvvvv....vvvvvvvvvvvvvvvvvv...vvvvvvvvvvv
vvvvvvvvvv.....vvvvvvvvvvvvvvvv......vvvvvvvvvvvvvvvv.....vvvvvvvvvv
vvvvvvvvvvv.1.vvvvvvvvvvvvvvvvvv..1.vvvvvvvvvvvvvvvvvv.1.vvvvvvvvvvv
vvvvvvvvvvv...vvvvvvvvvvvvvvvvvv....vvvvvvvvvvvvvvvvvv...vvvvvvvvvvv
vvvvvvvvvv2...2vvvvvvvvvvvvvvvv2....2vvvvvvvvvvvvvvvv2...2vvvvvvvvvv
vvvvvvvvvvv...vvvvvvvvvvvvvvvvvv....vvvvvvvvvvvvvvvvvv...vvvvvvvvvvv
vvvvvvvvvvv+++vvvvvvvvvvvvvvvvvv++++vvvvvvvvvvvvvvvvvv+++vvvvvvvvvvv
vvvv............................................................vvvv
ENDMAP

NAME:    dis_wall_7
: dis_divider(_G, false)
MAP
vvvvvvvvvvvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvv....vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv....vvvvvvvvvvvvvvv
vvvvvvvvvvvvvv...2..vvvvvvvvvv........vvvvvvvvvv..2...vvvvvvvvvvvvvv
vvvvvvvvvvvvvv..2...vvvvvvvvv..1....1..vvvvvvvvv...2..vvvvvvvvvvvvvv
vvvvvvvvvvvvvv......vvvvvvvv............vvvvvvvv......vvvvvvvvvvvvvv
vvvvvvvvvvvvvvv.....+......+............+......+.....vvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvv............vvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvv.2........2.vvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvv............vvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvv............................................................vvvv
ENDMAP

NAME:    dis_wall_8
: dis_divider(_G, false)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv..vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvv2..vvvv....vvvv..2vvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvv2vvv.v........v.vvv2vvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvv.vvv.....11.....vvv.vvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvv.vvv.v........v.vvv.vvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvv...vvvv2..2vvvv...vvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvv.vvvvvvvvvvvvvv.vvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvv+vvvvvvvvvvvvvv+vvvvvvvvvvvvvvvvvvvvvvvvvv
vvvv............................................................vvvv
ENDMAP

##############################################################################
# City of Dis by st
##############################################################################
NAME:    dis_st
ORIENT:  encompass
MONS:    patrolling Dispater, juggernaut, iron giant, hell sentinel
MONS:    war gargoyle, crystal echidna / caustic shrike
MONS:    ancient champion
NSUBST:  A = 1:+ / *:v, B = 1:+ / *:v
NSUBST:  S = 1:{ / *:.
# four hell sentinels in Dispater's building
NSUBST:  _ = 4:4 / *:.
NSUBST:  5 = 1:5 / 1:. / * = 5., 6 = 1:6 / 1:. / * = 6., 7 = 1:7 / 1:. / * = 7.
NSUBST:  8 = 2:4 / 1:6 / 1:7 / 4 = 4.. / 4 = 67. / *:.
SUBST:   0 = 09988...
SHUFFLE: 67
KMASK:   W = no_monster_gen
: serpent_of_hell_setup(_G)
: dis_setup(_G)
: dis_rune(_G)
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v...........................v.....v........v.0...v.............v.....v
v....8..vvvvvvvvvvvvv..8....B..0..v.7.vvvvvv.....v....G....G...v..0..v
v.......v___________v.......v.....+...v....v..0..v.6..G....G...+.....v
v....vvvv___________vvvv....v..0..v...+.0..A.....+.............vvvvvvv
v....v__+__vvvvvvv__+__v....vvvvvvv...v....vvvvvvv..............v....v
v....v__v__v$$$$$v__v__v....v.........vvvvvv....v.....G.6..G....+....v
v....v__v__v$|||$v__v__v....vvvvvv..7..v0..A..0.v.....G....G....v.0..v
v....v__v__v$|O|$v__v__v....v....v.....v...v....v..6..........vvvvvvvv
v..8.v__v__v$|||$v__v__v.8..B..0.v.....v+vvvv+vvv.............v......v
v....v__v..v$$$$$v..v__v....v....+.7.......v..........G....G..v......v
v....v__v..vvv+vvv..v__v....v.0..v...vvvvvvv..........G....G..v..0...v
v....v__v....3.2....v__v....vvvvvv...v.....vvv+v..6......6....v......v
v..8.v__v...........v__v.8..v......7.v..0..v...v..............v+vvvvvv
v....v__vvvv..1..vvvv__v....vv+vvv...+.....A0..v......G....G......+..v
v....v_____v.....v_____v....v....v...v..0..vvvvvvv....G....G......v0.v
v....v_____vvvvvvv_____v....B..0.v...v.....v.....v.......6....6.v+vvvv
v....vvvv___________vvvv....v....v.7.vvvvvvv.....v..............v....v
v.......v___________v.......vvvvvv.........v..0..v....G....G....v.0..v
v....8..vvv_______vvv..8....vvvvvvvv...vv+vv.....v.6..G....G....v....v
v.......v___________v.......v......v...v...A0....v............vvvvvvvv
v..8....v++vvvvvvv++v....8..B..0...+.7.v...v.....v.......6....v......v
v.............D.............v......v...v.0.vvvv+vv....G....G..v......v
v...........................vvvvvvvv...v...v..........G....G..+...0..v
vvvBvvvvvvvBvvvvvvvvBvvvvBvvv....v.....vvvvvvv+vv..6..........v......v
v.....v.v....v..v......v..v.v....v...vvvvvvv....v.............vvvvvvvv
v...0.v.v.0..v..v.0....v..+.v.0..+.7.v.....v0...v.....G....G.....v...v
v.....v.v....v..v...0..vvvv.v....v...v.0...v....v.....G.6..G.....+.0.v
v.0...+.vvv+vv..v......v....vvvvvv...v..0..A..0.v...............vvvvvv
v.....v.........vvvv+vvv.............+.....v....v...............v....v
vvvvvvv..............................v.....vvvvvv..6..G....G....v.0..v
v........7....7....7....7....7....7..vvvvvvv00v.......G....G....v....v
v...7..................................v...v..+.................v+vvvv
v......................................+...A..v......................v
v.vv..vv..vv..vv..vv..vv..vv..vv..vv..vv...v..vv..vv..v....v..vv..vv.v
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvv
v.vv..vv..vv..vv..vv..vv..vv..vv..vv..vv..vv..vv..vv..v....v..vv..vv.v
v....................................................................v
v..........vvvvv........vvvvvv.........vvvvv.........................v
v...vvvvv..v...v........v...Sv.vvvvvvv.vS..v.vvvvvvvv.......vvvvvv...v
v...v...v..v.S.vvv+vv..5v....v.v.....v.v...v.v.S....v..5WW..v....v...v
v...v.S.+.5v...v....v...v....v.v.....+.vv+vv.v......v...WW..+....v...v
v...v...v..v...v....v...vv+vvv.v.S...v.5....5vvvv+vvv5..WW..v....v...v
v...vvvvv5.vv+vv.S..v.5......5.vvvvvvv+v..5...5....5....WW5.v..S.v...v
v..........5...v....v5vvvv....5..5v....v5.vvvvv..vvvvvv.WW.vvvvvvvv..v
v.....vvvvv....v....v.+..vv+vvv...v.S..v..v...v5.v.S..v.WW5v.S.vS.v..v
v.....v...v..5.vvvvvv.v..v....v.5.v....v..v...+..v....v.WW.+...v..v..v
v.....v...+...5.....5.v.Sv...Sv...vvvvvv..v...v..v....+.WW.v...v..+..v
v.....vS..v...........v..vvvvvv...........vvvvv..v....v.5..v...v..v..v
v.....vvvvv...........vvvv.......................vvvvvv....vvvvvvvv..v
v....................................................................v
v.vv..vv..vv..vv..vv..vv..vv..vv..vv..vv...v..vv..vv..v....v..vv..vv.v
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv++vvvvvvvvvvvv
v.vv..vv..vv..vv..v...vv..vv..v......v....v...v.v.....v....v..vv..vv.v
v.................v.0.v.......v....0.v....v.0.v.v..0..v..............v
v.................v...v.......v.0....vv+vvv...v.v.0...v........vvvvvvv
v..vvvvvvvvvvv....vv+vv.......v......v....vv+vv.v.....v...8....v.....v
v..v%||%v....v................v......v.8........vvv+vvv........v...0.v
v..v%||%v3...v.v..8...........vvv+vvvv......................8..+..0..v
v..v%||%.....+...........................vvvvvv..8......8......v.....v
v..v%||%.....+......vv+vvvv..8.........8.v....v................vvvvvvv
v..v%||%v2...v.v..8.v.....v..8...WWW.....v....+..8.vvvv+vv.......v...v
v..v%||%v....v......v.....v.....WWWWW.v+vv.0..v....v.....v.......+...v
v..vvvvvvvvvvv..vvv+v..0..vv+vv.WWWWW.v..v....vv+vvv.0...v.vvvvvvv.0.v
v...............v...v..0..v...v.WWWWW.v.0v.0..v....v.....v.+.....v...v
v...............v.0.v.....v...v..WWW..v..v....v.0..v..0..v.v..0..v.0.v
v.vv..vv..vv..vvv...v.....v...v.......v..v....v....v.....v.v.....v...v
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

##############################################################################
# Dis Stronghold by HangedMan
##############################################################################
NAME:    dis_hangedman
TAGS:    no_monster_gen
ORIENT:  encompass
MONS:    caustic shrike / ancient champion w:40
MONS:    war gargoyle, juggernaut, iron giant, hell sentinel
MONS:    patrolling iron dragon / patrolling quicksilver elemental / \
         patrolling crystal echidna
MONS:    patrolling Dispater
KMONS:   8 = ancient champion w:8 / \
         dancing weapon w:12 ; great mace good_item | glaive good_item | \
                               battleaxe good_item | great sword w:15 good_item
NSUBST:  - = 1:+ / 1 : v:14 +:1 / *:v, = = 1:+ / 1 : v:14 +:1 / *:v
NSUBST:  0 = 2:8 / 5 = 0:29 8:1 / 2:. / * = 0:49 .:1
NSUBST:  9 = 3:8 / 3 = 9:4 8:1 / *:9
SHUFFLE: 34, %$, ab, cd, ef / ef / fe, gh / gh / hg, ij / ij / ji
SUBST:   acegi = v, bdfhj = ., k : vvv., l : vvv., m : vvv., ` : 12
: serpent_of_hell_setup(_G)
: dis_setup(_G)
: dis_rune(_G)
: vault_metal_statue_setup(_G, "G", "iron statue")
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvv...vv.....vv...vv...vv...vvvvvvv..vv..vv..vv..vvvvvvvvvvvvvvvvvv
vv..........................v....0v..............v%%%%%.....0|||vvv
vv........v.................+.....v..............v.............|vvv
vv.......vvv................v.....v.............vv.....3v......|vvv
vvv.......v1................+.....v..............v..vvvvv......8vvv
vvv......vvv................v0....v.............vv..............vvv
vv........v......v.......vv+vvv--vv........v0v...v..............vvv
vv...v.v.{v2.v1v1v.......v..0v............vvvvv..v..............vvv
vv..vvvvvvvvvvvvvvvv.....+...-..G........vvvvvv..vvvvv+vv...vv..vvv
vv...v1v.2v18v2v2v.......v0..v.G.........0vvvvl.........v...v4..vvv
vv........v8.....v...vv+vvvv-v...........vvvvvv.........+...v..$vvv
vvv......vvv.........v....0v..............vvvvv..hh.gg..v...v..$vvv
vvv......1v2.........v.....v.G.............v0v...hh.gg..v...v..$vvv
vv.......vvv.........+.....-.G..........................v......$vvv
vv.......1v2.........v.....v.....................gg.hh..v......$vvv
vv......vvvvv........v0....v.....................gg.hh..vvvvvvvvvvv
vvv.......v.......vv+vvvv-vv...............................v.v...vv
vvv.......v.......v...0v........v0v.......v.b.a..................vv
vv................+....v..G....vvvvv.....vvvv+va.....vvlvv.......vv
vv..........vvv+vvv....-.G.....vvvvvv.....v8..+.....vvvvvvv.....vvv
vv..........v....0v0...v.......kvvvv0....bv.6.vb....0vvvvv0.....vvv
vvv.........+.....vvv-vv.......vvvvvv.....+..8v.....vvvvvvv......vv
vvv.........v.....v............vvvvv.....av+vvvv.....vvvvv.......vv
vv......vv+vv.....-..G..........v0v.......a.b.v.......v0v........vv
vv......v..0v0....v.G.....ff....................................vvv
vv......+...vvv-vvv.......fve...................................vvv
vvvv+v+vv0..-..............ee........vv..........................vv
vvv....0vv-vv.GG.............ff......vv..........................vv
vvv.....v....................fve.................................vv
vvv.....-..G........vvkvv.....ee................................vvv
vvv.....-.G........vvvvvvv............v.........................vvv
vvv0....v..........0vvvvv0............v..........................vv
vvvvvvvvv..........vvvvvvv............vv.v.v.v...................vv
vv..................vvvvv............vvv...v...v.vv.v.vv.........vv
vv...................v0v............D.vv...v...v....v....v.vvv.vvvv
vvv.........................vv.....v.5vv.91v.91v.9`.v.92.v..92.vvvv
vvv.........................vv..vvvvvvvvv=vvv=vvvv=vvv=vvvvv=vvvvvv
vv................................vvvvv....5...................Gvvv
vv....................................v.............888........Gvvv
vvv.......v0v.......v.d.c.........v..9=..G.vvvvvvvvvvvvvvvvvvvvvvvv
vvv......vvvvv.....vvvv+vc...........1v..............8..........vvv
vv......vvvvvvv.....v8..+.........vvvvv5.v.......v.v6.6v.v......vvv
vv......0vvvvv0....dv.6.vd............v..v...........8..........vvv
vvv.....vvvvvvv.....+..8v.........v..9=..v...vvvvvvvvvvvvvvvvv..vvv
vvv......vvmvv.....cv+vvvv...........1v..v...vvvvvvvvvvvvvvvvv..vvv
vv..................c.d.v..........vvvv..v...vvO.v|v...v$v.$vv.Gvvv
vv...v.v..............................v..v...vv.v....v......vv..vvv
vvvvvvvvvvv..jj.ii.................v.9v..v.v.vvv.|v.|v$.$v.vvv..vvv
vvv$......v..jj.ii.................v.`=..v...vv|.v7.vvv.4$.$vv..vvv
vvv$......v...........................v..v.v.vvv.....v.....vvv..vvv
vvv$..v...v..ii.jj...v0v...........vvvv.8v.6.vv..|v.....v$..vv..vvv
vvv$..v...v..ii.jj..vvvvv.............v.8v8.8vv.vvvv...vvvv.vv.Gvvv
vvv$..v...+.........vvvvvv.........v.9=.8v.6.vv..%v.....v...vv..vvv
vvv..4v...v.........mvvvv0.........v.2v..v.v.vvv.....v.....vvv..vvv
vvv..vv...vv+vvvvv..vvvvvv............v..v...vv%.%3.vvv.....vv..vvv
vvv..............v..vvvvv...........vvv..v.v.vvv.v%.%v......++..vvv
vvv..............v...v0v..............v..v...vv......v......++..vvv
vvv..............vv.................v.v..v...vv%.v%v...v....vv..vvv
vvv0......vvvvv..v..................v9=..v...vvvvvvvvvvvv++vvv.5vvv
vvv|......v3.....vv.................v2v..v...vvvvvvvvvvvv++vvv..vvv
vvv|.............v....................v..v......................vvv
vvv|||8.....%%%%%v..................vvvGGv.....G.....G......5..Gvvv
vvvvvvvvvvvvvvvvvv...vv...vv...vv...vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP

##############################################################################
# Dis Layers by Grunt
##############################################################################
NAME:    dis_grunt_layers
ORIENT:  encompass
MONS:    patrolling Dispater, Hell Sentinel
MONS:    iron dragon / crystal echidna / quicksilver elemental w:5
MONS:    caustic shrike / ancient champion w:20, war gargoyle
MONS:    juggernaut, iron giant
SHUFFLE: {<
NSUBST:  2 = 3:6 / 3:7 / *:2
NSUBST:  P = 1:1 / *:2
NSUBST:  Q = 1:O / *:|
NSUBST:  R = 1:D / *:.
NSUBST:  G = 4:8 / *:G
NSUBST:  d = 1:+ / 1:v / *=+vvv
NSUBST:  e = 1:+ / 1:v / *=+vvv
NSUBST:  f = 1:+ / 1:v / *=+vvv
NSUBST:  . = 20:4 / 10:5 / *:.
KMONS:   8 = iron golem
KMONS:   9 = war gargoyle
: serpent_of_hell_setup(_G)
: dis_setup(_G)
: dis_rune(_G)
: vault_metal_statue_setup(_G, "G", "iron statue")
TILE:    G = dngn_statue_iron_golem
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvv........vv........vv......................vv........vv....vvvvvvvv
vvvv........vv........vv..G................G..vv........vv....v..|vvvv
vvvv........vv........vv....2....v++v....2....vv........vv....v..|vvvv
vvvv..vvvvv.vv........vv..G....vvv..vvv....G..vv........vv....v..|vvvv
vvvv..v|||v.vv........vvv.....vv......vv.....vvv........vv....+..|vvvv
vvvv..v...v.vv........vvv.G...v........v...G.vvv........vv....v..|vvvv
vvvv..vvv+v.vvvvev.....vv....vv........vv....vv........vvv....vvvvvvvv
vvvv.........v.9.v.....vv.G..v..........v..G.vv........vv.........vvvv
vvvvv........v...e.....vv....v.v$.PP.$v.v....vv........vv........vvvvv
vv.vv........+.9.v.....vvv...vv|v$$$$v|vv...vvvv.......vv........vv.vv
vv.vv........vvvev.....vvv....v|vvvvvv|v....v.3v.......vv........vv.vv
vv.vv........vv.........vv....vv||vv||vv....v3.v.......vv.vvvvv..vv.vv
vv.vv........vv.........vv.....vvvQQvvv.....f..v.......vv.v$$$v..vv.vv
vv.vv........vv.........vvv......vvvv......vvv+v.......vv.v...v..vv.vv
vv.vv........vvv.........vv....G......G....vv.........vvv.vv+vv..vv.vv
vv.vv.........vv.........vvv..2..G..G..2..vvv.........vv.........vv.vv
vv.vvv..vvvv..vv..........vv......RR......vv..........vv........vvv.vv
vv..vv..v$$v..vv.......vvvvvfv...........vvv...2......vv........vv..vv
vv..vv..v..v..vvv......v.....v.........vfvv..........vvv........vv..vv
vv..vv..v..v...vv......v.3.3.f.........v.3v....vvevv.vv.........vv..vv
vv..vv..v+vv...vv......v.....vv..G..G..f3.v....v...v.vv.........vv..vv
vv..vv.........vvv.....vv+vvvvvv......vvv+v....e.9.vvvv.........vv..vv
vv..vvv.........vv..3.........vvv....vvv.......v...vvv.........vvv..vv
vv...vv.........vv.............vvvvvvvv........v...vvv.........vv...vv
vv...vv.........vvv..............vvvv......2...e...vvv.........vv...vv
vv...vv..........vv.......2....................v...vv.vvvvv....vv...vv
vv...vvv.........vv...................vvvv.....v...vv.v%%%v...vvv...vv
vv....vv.........vvv..................v%$v.....v.9.vv.v...v...vv....vv
vv....vv..........vv..................v..v.....e...+..v...v...vv....vv
vv....vv..........vv...........vvvvv..v+vv.....vvvvv..v+vvv...vv....vv
vv....vvv..........vvvevv......v%%%v........3....vv..........vvv....vv
vv...vvvvv.........vv9..v......v$$$v............vvv..........vv.....vv
vv...v...d..vvvvv...v...e......v...v............vv...........vv.....vv
vv...v.9.v..v%%%v...+..9v......+...v....2......vvv..........vvv.....vv
vv...v...d..v...v...vvvvv......v...v..........vvv...........vv......vv
vv...+.9.v..vv+vv.....vv...3...vvvvv..........vv...vvvv.....vv....vvvv
vvv..v...vv...........vvv................vvevvvv...v.$v....vvv....vvvv
vvv..vvvvvv............vvv...............v.....v...v.$v....vv.....vvvv
vvv......vv.............vvv..............e.9.9.v...+.$v....vv.....vvvv
vvv......vvv.............vvv.......3.....v.....v...vvvv...vvv.....vvvv
vvv.......vv......2....vvvvvev...........vvvv+vv..........vv........vv
vv........vvv..........v.....vv........vvvv.......3......vvv........vv
vv.........vv..3.......v.9.9.vvvvv..vvvvvv...............vv.........vv
vv.........vvv.........+.....vvvvvvvvvvv................vvv.........vv
vv..........vv.........vvvvvvv...vvvv.............vvdvvvvvvvv.......vv
vv..........vvv................3..........2.......v.......9.v.......vv
vv...........vv...................................d..9......v.......vv
vv..vv+vvvv..vvv........3........vvvv.............v.........v.......vv
vv..v%...$v...vvvvdvv.........2..v.%v.............vdvvvvvv+vv...vvvvvv
vv..v%...$v...vvv9..d............+.%v......v+vv......vvv........v$$vvv
vv..v%...$v....vv..9v...vvdvv....vvvv......v..v.....vvv.........v..vvv
vv..vvvv+vv.....+...d...v...v..............v$$v.....vv..........v+vvvv
vv..............vvvvv...v.9.v....3.........vvvv....vvv..............vv
vv...............vvv....v...d.....................vvv...............vv
vv................vvv...d...v.....vvv+v..........vvv................vv
vv.................vvv..v...v.....v%..v.........vvv.................vv
vv....vvvvv.........vvv.v...v.....v..$v..vvdvv.vvv.......vvvv+vv....vv
vv....v%%%v..........vvvv...v..3..v+vvv..v..9vvvv........v%...$v....vv
vv....v...v...........vvv.9.v............d...vvv..vvvv...v%...$v....vv
vv....v...v............vv...v............v9..vv...v.$v...v%...$v....vv
vv....v+vvv...vvvv......v+vvv............vvv+v....+.$v...vv+vvvv....vv
vv............+..v........vvvvvv......vvvvvv......vvvv..............vv
vv.{..........v%%v..........vvvvvvvvvvvvvv........................<.vv
vv............vvvv.............vvvvvvvv.............................vv
vv....................vvvvv........................vvvvv............vv
vv....................vvvvv........................vvvvv............vv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
ENDMAP
