##############################################################################
# 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")
-- turn granite statues into iron statues
-- you still have to colour the statues, if desired
   e.set_feature_name("granite_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 slave in iter.slave_iterator("trap_statue", 1) do
        if crawl.one_chance_in(4) then
            dgn.terrain_changed(slave.x, slave.y, "floor", false)
            dgn.create_monster(slave.x, slave.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 = iron dragon / 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

function dis_statues(e)
    e.colour("G = cyan")
    e.tile("G = dngn_statue_iron")
    e.set_feature_name("granite_statue", "iron statue")
end
}}

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

NAME:   lemuel_mystery_crypt
ORIENT: float
MONS:   guardian mummy w:6 / ushabti w:4 / mummy priest / royal mummy, lich
NSUBST: 1:1=}> / 1=)> / 1=]> / *=1
# occasionally (12.5%), all downstairs are in this vault
: dis_statues(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxx
xxGxxxx1.x1x.1xxx2..+1x
xx.xxxxx.x.x.xxxx...xxx
xx.xx1.x.x.x.x.1x...+1x
xx.xxx+x+x+x+x+xx...xxx
x...+...........+...+1x
+...+.....G.....+.G.xxx
x...+...........+...+1x
xx.xxx+x+x+x+x+xx...xxx
xx.xx1.x.x.x.x.1x...+1x
xx.xxxxx.x.x.xxxx...xxx
xxGxxxx1.x1x.1xxx2..+1x
xxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# The Dragons of Dis
# There is an 8/27 chance all three downstairs will be here.
NAME:    lemuel_dis_dragons
DEPTH:   Dis:2-6
ORIENT:  float
TAGS:    no_rotate
MONS:    iron dragon, 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
TAGS: transparent patrolling
MONS: iron dragon / quicksilver dragon, reaper w:7 / tormentor w:6
MONS: iron troll
MONS: rust devil / nothing, iron imp / nothing
{{
    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(']', trap_marker)
    lua_marker(')', trap_marker)
    lua_marker('G', props_marker {trap_statue=1,
                                  veto_destroy="veto"})
    set_feature_name("granite_statue", "iron statue")
}}
SUBST: d = 3
SUBST: e = 4
SUBST: f = 5
: dis_statues(_G)
MAP
...............................
.vvvvvvvvvvvvvvvvvvvvvvvvvvvvv.
.vG.+4Gvvv:}:::]:::):vvvG4+.Gv.
.v..+4.vv::::1::::1:::vv.4+..v.
.v..v..vG::::::G::::::Gv..v..v.
.v..v55vv:::G:::::G:::vv55v..v.
.v55v..vG:2::::1::::2:Gv..v55v.
.v55v55vv:::::::::::::vv55v55v.
.v44v..vGf:G:::G:::G:fGv..v44v.
.v..v44vv::::e:::e::::vv44v..v.
.v..v..vG::::::2::::::Gv..v..v.
.v..v55vv:3:G:::::G:d:vv55v..v.
.v..v..vGf:::::G:::::fGv..v..v.
.v..v55vv:f:d::e::d:f:vv55v..v.
.v..v..vvvGvGve:evGvGvvv..v..v.
.v..v++vvvvvvv+++vvvvvvv++v..v.
.v..v..vGvGvGv...vGvGvGv..v..v.
.v55v4....4...3.3...4....4v55v.
.v55v...4...4.....4...4...v55v.
.v44vGvGvGvGvv.3.vvGvGvGvGv44v.
.v++vvvvvvvvvvvvvvvvvvvvvvv++v.
.G@.G.....................G@.G.
ENDMAP

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

NAME:    hangedman_player_shredder
TAGS:    transparent no_monster_gen no_item_gen no_pool_fixup
DEPTH:   Dis:1-6, Zot:1-4
SHUFFLE: abcdefghij / bacdegfhij / bcadeghfij / bcdaeghifj / bcdeaghijf, ghij, ^~
SUBST:   a = +, bcde = v, fgh = %, i = P, j = p
NSUBST:  } : 1:P / 1:p / *:%, p : 1:P / *:%
SHUFFLE: HI, PQRS|, 0246' / 1357", 0246', 1357", 02468ACE, 13579BDF
NSUBST:  P = 1:{ / 1:} / 1 : [:1 ]:1 %:16, Q = 1:{ / 1 : [:8 <:1 / 1 : (:1 %:8
NSUBST:  RS = 1:} / 1 : ]:8 >:1 / 1 : ):1 %:8
SUBST:   I = G, ~ : wv., ` : wv., ^ = ., % : %:9 .:1, % = %:499 |:1
: if you.in_branch("Dis") then
KMONS:   01 = tormentor
KMONS:   23 = reaper
KMONS:   45 = hellion
KMONS:   67 = quicksilver dragon
KMONS:   89 = iron golem
KMONS:   AB = dancing weapon ; great sword good_item | battleaxe good_item | \
                               glaive good_item | great mace good_item
KMONS:   CD = war gargoyle
KMONS:   E = lich
KMONS:   F = executioner
KMONS:   ! = rust devil / skeletal warrior / hell knight / skeleton w:15
KMONS:   ? = patrolling iron imp
: dgn.delayed_decay(_G, '%', 'human corpse / human skeleton, \
:                             human corpse / human skeleton')
: else
KMONS:   01 = ghost moth
KMONS:   23 = golden dragon
KMONS:   4567 = nonbase draconian
KMONS:   89 = killer klown
KMONS:   AB = curse toe
KMONS:   CD = electric golem
KMONS:   E = orb of fire
KMONS:   F = ancient lich / dread lich
KMONS:   ! = base draconian w:30 ; cloak . great sword good_item | \
             battleaxe good_item | bardiche good_item | great mace good_item / \
             fire dragon / ice dragon / storm dragon / bone dragon w:5
KMONS:   ? = moth of wrath / death cob w:2 / guardian mummy w:2
KITEM:   % = % / * w:2
: end
KMONS:   H = iron dragon
: if you.in_branch("Dis") then
: dis_statues(_G)
: end
MAP
.........................
.vv...vv+vv...vv+vv...vv.
.vvv+vv.!.vv+vv.!.vv+vvv.
.vv.!.vvbvv.!.vvdvv.!.vv.
.vvvavv%g%vvcvv%i%vvevvv.
.vv%f%vv+vv%h%vv+vv%j%vv.
.vvv+vv.2.vv+vv.6.vv+vvv.
.vv.0.v...v.4.v...v.'.vv.
.vv...vv+vv...vv+vv...vv.
.vvv+vv...vv+vv...vv+vvv.
.vv...................vv.
?vv..~`^I~`^.~`^.~`^H.vv?
.vv.H^`~.^`~.^`~I^`~..vv.
.vv...................vv.
.vvv+vv...vv+vv...vv+vvv.
.vv...vv+vv...vv+vv...vv.
.vv.1.v...v.5.v...v.".vv.
.vvv+vv.3.vv+vv.7.vv+vvv.
.vv%}%vv+vv%}%vv+vv%}%vv.
.vvvvvv%}%vvvvv%}%vvvvvv.
.vv.G.vvvvv.G.vvvvv.G.vv.
............?............
ENDMAP

###############################################################################
# Looks really weird and silly in box-packing, so limited to the city layouts.
NAME:    hangedman_dis_monolith
TAGS:    transparent layout_city
ORIENT:  float
MONS:    patrolling quicksilver dragon / patrolling iron dragon / \
         patrolling executioner
MONS:    patrolling hell sentinel
MONS:    rust devil w:15 / skeletal warrior / iron dragon skeleton w:5 / \
         iron dragon zombie w:5 / iron troll skeleton w:5 / \
         iron troll zombie w:5 / hell knight w:15
MONS:    hellion / tormentor / reaper / ancient champion / \
         dancing weapon w:20 ; great sword good_item | battleaxe good_item | \
                               glaive good_item | great mace good_item
SHUFFLE: ABa / CDb / EFc
NSUBST:  F = 1:112 / 1:1 / 1 : }:6 >:3 .:1
SUBST:   ABCDE = 3:19 4:1, a = +, bc = v, V : v.
MAP
.....................................................
.vv.......vvv.....vvv.....V.....vvv.....vvv.......vv.
.vv.v..v.......v.......v.....v.......v.......v..v.vv.
.vv...vv3vv4vv3v3vv4vv3vv...vv3vv4vv3v3vv4vv3vv...vv.
.vvv+vvvvvvvvvvvvvvvvvvvvv+vvvvvvvvvvvvvvvvvvvvv+vvv.
3vvAAAvvvvvvvvvvvvvvvvvvvCCCvvvvvvvvvvvvvvvvvvvEEEvv3
4vvvavvvvvvvvvvvvvvvvvvvvvbvvvvvvvvvvvvvvvvvvvvvcvvv4
3vvBBBvvvvvvvvvvvvvvvvvvvDDDvvvvvvvvvvvvvvvvvvvFFFvv3
.vvv+vvvvvvvvvvvvvvvvvvvvv+vvvvvvvvvvvvvvvvvvvvv+vvv.
.vv...vv3vv4vv3v3vv4vv3vv...vv3vv4vv3v3vv4vv3vv...vv.
.vv.v..v.......v.......v.....v.......v.......v..v.vv.
.vv.......vvv.....vvv.....V.....vvv.....vvv.......vv.
.....................................................
ENDMAP

###############################################################################
NAME:    nicolae_dis_hell_towers
DEPTH:   Dis, !Dis:$
TAGS:    transparent
SHUFFLE: }])
NSUBST:  a = + / v, b = + / v, c = + / v, d = + / v
SUBST:   2 = 2., 0 = 0.
KMONS:   12 = hell sentinel / executioner
MAP
  v v v v   v v v v
  vvvavvv   vvvdvvv
vvvv...vv v vv...vvvv
 vv..0..vvvvv..0..vv
vv.......vvv.......vv
 a.0.2.0.+.+.0.2.0.d
vv.......vvv.......vv
 vv..0..vvvvv..0..vv
vvvv...vvlllvv...vvvv
   vv+vvlllllvv+vv
  vvv.+..1}llvv.vvv
   vv+vvlllllvv+vv
vvvv...vvlllvv...vvvv
 vv..0..vvvvv..0..vv
vv.......vvv.......vv
 b.0.2.0.+.+.0.2.0.c
vv.......vvv.......vv
 vv..0..vvvvv..0..vv
vvvv...vv v vv...vvvv
  vvvbvvv   vvvcvvv
  v v v v   v v v v
ENDMAP

NAME:   nicolae_dis_strange_trophy_room
DEPTH:  Dis
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
: dis_statues(_G)
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
DEPTH:   Dis
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
DEPTH:   Dis, !Dis:$
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
DEPTH:  Dis, !Dis:$
ORIENT: float
MONS:   flying skull
KMONS:  2 = patrolling iron giant
KFEAT:  2 = )
TILE:   c = wall_marble
MAP
            vvvvv
       vvvvvv...vvvvv
    vvvvv...........vvvvv
 vvvv........1.1........vvvv
vv.........c.....c.........vv
v..2.cc....1..c..1....cc....v
v....cc.......1.......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..c1...vvvvvv.vvvvvv...1c..v
v......vvvvvvv+vvvvvvv......v
v.1....v...vv...vv...v....1.v
v...c1......+.(.+......1c...v
v.1....v...vv...vv...v....1.v
v......vvvvvvv+vvvvvvv......v
v..c1...vvvvvv.vvvvvv...1...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.......1.......cc....v
v....cc....1..c..1....cc....v
vv.........c.....c.........vv
 vvvv........1.1........vvvv
    vvvvv...........vvvvv
        vvvvv...vvvvv
            vvvvv
ENDMAP

NAME:    hangedman_dis_decor_blocks_mantle
TAGS:    extra transparent decor
SHUFFLE: ABC, DEFG
NSUBST:  > = 1 = .:13 >:7 / 1 = .: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
: dis_statues(_G)
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:    extra transparent decor
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 = .:6 {:4 / *:.
: dis_statues(_G)
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:    extra transparent decor
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 = .:6 [:4 / *:.
: dis_statues(_G)
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
DEPTH:  Dis
SUBST:  A : vv., B : vv., C : Gvv, D : Gvv
NSUBST: . = 1 = (:1 ):1 .:98 / *:.
: if you.depth() == dgn.br_depth(you.branch()) then
SUBST:  ) = {
: end
: dis_statues(_G)
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
ORIENT: centre
TAGS:   transparent no_rotate no_vmirror no_monster_gen
MONS:   hell sentinel, iron golem
MARKER: F = lua:fog_machine { cloud_type = "flame", pow_min = 100, \
                              pow_max = 100, delay = 10, size = 1, \
                              delay = 10, size = 1, walk_dist = 0, \
                              excl_rad = 0 }
SUBST:  } = }., ) = )., ] = ].
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:    transparent no_pool_fixup layout_type_city layout_type_passages
DEPTH:   Dis, !Dis:$
ORIENT:  float
MONS:    skeletal warrior / vampire w:6 / wight w:2          / \
         zombie / skeleton / hell hound / rust devil w:14    / \
         red devil / ice devil w:16 / sun demon w:6          / \
         hellwing / soul eater w:6
MONS:    reaper / hellion / tormentor / executioner w:2      / \
         bone dragon / lich / ancient champion               / \
         balrug w:2 / blizzard demon w:2 / shadow demon w:2  / \
         iron dragon w:2 / quicksilver dragon w:2
KFEAT:   Z = zot trap
# Standard floor spawn equipment drops, not real loot.
KITEM:   d = battleaxe no_pickup / great mace no_pickup      / \
             great sword no_pickup / glaive no_pickup        / \
             scythe good_item no_pickup w:5
NSUBST:  > = 1 = ((<d / 1 = ))>e / 2 = >:1 .:49 / * = ...de
# 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
: dgn.delayed_decay(_G, 'e', 'human skeleton')
# : dis_statues(_G)
MAP
 ...............................................
 v..V...vvvBBBvvv...V...vvvDDDvvv...V...vvvFFFvv
.v......vN.....Nv.......vP.....Pv.......vR....Rv.
.vvAAAvvv...V...vvvCCCvvv...V...vvvEEEvvv...V..v.
.vM....MvN..>..NvO.....OvP..>..PvQ.....QvR..>.Rv.
.v..V...vvvvvvvvv...V...vvvvvvvvv...V...vvvvvvvv.
.vM.>..M!T..>..T!O..>..O!W..>..W!Q..>..Q!Y..>.Yv.
.vvvvvvvv...V...vvvvvvvvv...V...vvvvvvvvv...V..v.
.vS.>..SvT.....TvU..>..UvW.....WvX..>..XvY....Yv.
.v..V...vvvHHHvvv...V...vvvJJJvvv...V...vvvLLLvv.
.vS....Sv.......vU.....Uv.......vX.....Xv......v.
 vvGGGvvv...V...vvvIIIvvv...V...vvvKKKvvv...V..v
 ...............................................
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, brimstone fiend, Ice Fiend
MONS:    rust devil, war gargoyle, iron dragon / iron giant w:5
KMONS:   7 = hell sentinel
KMONS:   8 = quicksilver dragon
: 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, brimstone fiend, ice fiend, rust devil
MONS:    war gargoyle, iron dragon / iron giant w:5, iron troll
KMONS:   8 = iron golem
KMONS:   9 = hell sentinel
KMONS:   0 = quicksilver dragon
: serpent_of_hell_setup(_G)
SHUFFLE: 23
SUBST:   4 = 4:20 7
SUBST:   8 = 8o
COLOUR:  o : cyan
TILE:    o = dngn_statue_iron_golem
# Use master/slave 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("granite_statue"), \
            veto_destroy="veto" \
         }
KITEM:   | = superb_item no_pickup
: dis_castle(_G)
: dis_statues(_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, iron dragon / iron giant w:5
MONS:    rust devil / iron imp w:20
MONS:    iron troll, quicksilver dragon, cacodemon
SHUFFLE: AP / BQ / CR / DS / ET
SUBST:   A = 1, BC = 2, DE = 7
SUBST:   P = O, QRST = .
NSUBST:  G = 4:8 / *:G
TILE:    G = dngn_statue_iron_golem
COLOUR:  G = cyan
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)
: dis_statues(_G)
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..D.....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, brimstone fiend, ice fiend, hell sentinel
MONS:    iron troll, iron dragon / iron giant w:2
MONS:    cacodemon / ancient champion w:8
NSUBST:  A = 1:+ / *:v, B = 1:+ / *:v
NSUBST:  S = 1:( / 1:[ / 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)
: dis_statues(_G)
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:    rust devil w:40 / skeletal warrior
MONS:    war gargoyle, brimstone fiend, ice fiend, hell sentinel
MONS:    patrolling iron dragon / patrolling quicksilver dragon / \
         patrolling iron giant w:5
MONS:    patrolling Dispater
KMONS:   8 = vampire knight w:8 / hell knight band w:8 / ancient champion w:18 / \
         reaper w:6 / cacodemon w:2 / executioner w:6 / balrug w:4 / \
         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)
: dis_statues(_G)
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 / iron giant w:5 / quicksilver dragon w:5
MONS:    rust devil / iron imp w:20, iron troll
MONS:    brimstone fiend, ice fiend
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 / *:.
TILE:    G = dngn_statue_iron_golem
COLOUR:  G = cyan
KMONS:   8 = iron golem
KMONS:   9 = war gargoyle
: serpent_of_hell_setup(_G)
: dis_setup(_G)
: dis_rune(_G)
: dis_statues(_G)
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
