: crawl_require("dlua/sprint.lua")

{{
function sprint_mu_zot_mons_gen(data, triggerable, triggerer, marker, ev)
    function spawn_zombie (x, y, spec)
        local mons = dgn.create_monster(x, y, spec)
        crawl.mpr("You hear a whooshing noise from somewhere close by.")
        return mons
    end

    if data.awoke == true then
        return
    end
    local graves = dgn.find_marker_positions_by_prop("spawn_spot", 1)
    for _, pos in ipairs(graves) do
        local niceguy = spawn_zombie(pos.x, pos.y, "generate_awake pandemonium lord")
    end

    data.awoke = true
end

function sprint_mu_set_zot_mon_list()
    dgn.set_random_mon_list("orb guardian w:30 / moth of wrath")
end
}}

##############################################################################
# Main sprint map, making use of subvaults (by Mu.)
#
NAME:   dungeon_sprint_mu
DESC:   Sprint III: "The Ten Rune Challenge"
ORDER:  3
TAGS:   sprint no_item_gen no_trap_gen no_pool_fixup no_rotate no_hmirror no_vmirror
ORIENT: encompass
SHUFFLE:  hnw
SHUFFLE:  NI
SHUFFLE:  CR
SUBVAULT: E : sprint_mu_entry
SUBVAULT: T : sprint_mu_temple
SUBVAULT: 1 : sprint_mu_d1
SUBVAULT: 2 : sprint_mu_d2
SUBVAULT: 3 : sprint_mu_d3
SUBVAULT: O : sprint_mu_orc
SUBVAULT: F : sprint_mu_elf
SUBVAULT: H : sprint_mu_hive
SUBVAULT: L : sprint_mu_lair
SUBVAULT: V : sprint_mu_vaults
SUBVAULT: M : sprint_mu_slime
SUBVAULT: w : sprint_mu_swamp
SUBVAULT: h : sprint_mu_shoals
SUBVAULT: n : sprint_mu_snake
SUBVAULT: B : sprint_mu_blade
SUBVAULT: Y : sprint_mu_crypt
SUBVAULT: U : sprint_mu_tomb
SUBVAULT: G : sprint_mu_vestibule
SUBVAULT: N : sprint_mu_gehenna
SUBVAULT: I : sprint_mu_dis
SUBVAULT: R : sprint_mu_tartarus
SUBVAULT: C : sprint_mu_cocytus
SUBVAULT: Z : sprint_mu_zot
SUBST:    hnw = x
SUBST:    123 = x
SUBST:    ETOF = x
SUBST:    HLVM = x
SUBST:    BYUG = x
SUBST:    NIRCZ = x
{{
  hook("post_place", function()
    crawl.set_max_runes(10)
  end)
}}

MAP
[encoded data, 5670 characters]
ENDMAP

##############################################################################
#
# SUBVAULTS
# NOTE: All subvaults supply their own TOP and LEFT walls, and assume they have
# their RIGHT and BOTTOM walls, except in the instances where they don't do this.
#
# If you aren't sure which walls to supply, your best bet is to just keep things
# consistent with the original subvaults. In places where the original subvaults
# are themselves inconsistent, do whatever feels right at the time.
#
# If we all wish real hard maybe the dungeon wont fall apart on us.
#
##############################################################################
# Entries
#
# Entry 1, Forest
NAME: sprint_mu_entry_forest
TAGS: sprint_mu_entry no_rotate no_hmirror no_vmirror
MONS: patrolling endoplasm / patrolling rat
MONS: patrolling rat w:20 / patrolling jessica
MONS: patrolling crimson imp ; wand of flame charges:1 / \
      patrolling hound / patrolling scorpion / patrolling crazy yiuf
MONS: patrolling human hd:2 hp:35 exp:26
KITEM: * = potion of enlightenment pre_id q:2 / potion of enlightenment q:1 / any potion, \
 potion of mutation pre_id q:2 / potion of mutation q:1 / any potion, \
 scroll of identify pre_id q:2/ scroll of identify q:1 / any scroll, \
 scroll of torment / scroll of poison / scroll of immolation, \
 potion of mutation
SUBST: T = t.

MAP
{.x*$+...TTttttt.
..x*$x..3.TTtttt.
x+xxxx....TTtttT.
.....x....WTtttT.
1...1x...WWTTTTT.
....%x..WWWWTTTT.
xxxx+x..WwwWWWTT.
%....x.WWwWWW....
.2.2.x.WwWWW.....
.....x.WWW....4..
+xxxxx...........
.................
ENDMAP

##############################################################################
# Entry 2, Cave
NAME: sprint_mu_entry_cave
TAGS: sprint_mu_entry no_rotate no_hmirror no_vmirror
MONS: patrolling endoplasm / patrolling rat
MONS: patrolling rat w:20 / patrolling jessica
MONS: patrolling crimson imp ; wand of flame charges:1 / \
      patrolling hound / patrolling scorpion / patrolling crazy yiuf
MONS: patrolling human hd:2 hp:35 exp:26
KITEM: * = potion of enlightenment pre_id q:2 / potion of enlightenment q:1 / any potion, \
 potion of mutation pre_id q:2 / potion of mutation q:1 / any potion, \
 scroll of identify pre_id q:2 / scroll of identify q:1 / any scroll, \
 scroll of torment / scroll of poison / scroll of immolation, \
 potion of mutation

MAP
{..x%..xxxxxxxxx.
...x......xxxxx..
..xx.......x**x..
xx.xx.xx..2x$$x..
xx.xx.xxx..xx+x..
x.xxxx.xx..xxx.4.
.xxx1.xx..xxxx...
x.....xx..xxx....
xxx..xx2..xx.....
xx1.xx....x......
x..xxx..xx.x..3..
x%.xxx..xxxxx....
ENDMAP

##############################################################################
# Temples
#
# Temple 1, Rooms
NAME: sprint_mu_temple_rooms
TAGS: sprint_mu_temple no_rotate no_hmirror no_vmirror
# No Ashenzari.
KFEAT: E = altar_elyvilon
KFEAT: 1 = altar_the_shining_one
KFEAT: Z = altar_zin
KMONS: e = patrolling deep elf pyromancer ; long sword ego:holy_wrath
KITEM: e = potion of curing / potion of heal wounds
KFEAT: B = altar_beogh
KFEAT: O = altar_okawaru
KFEAT: T = altar_trog
KFEAT: U = altar_uskayaw
KFEAT: o = altar_wu_jian
KMONS: o = patrolling human perm_ench:might
KITEM: o = any armour
KMONS: t = patrolling human perm_ench:berserk
KITEM: t = any weapon
KFEAT: D = altar_dithmenos
KFEAT: R = altar_ru
KFEAT: Y = altar_yredelemnul
KMONS: y = patrolling weeping skull
KMONS: Y = patrolling wight
KITEM: y = any wand / gold
NSUBST: f = 1:f / *:W
KFEAT: f = fountain_blue
KFEAT: W = fountain_blue
KMONS: W = water elemental hd:4 exp:83
KFEAT: V = altar_vehumet
KFEAT: S = altar_sif_muna
KFEAT: K = altar_kikubaaqudgha
KMONS: s = patrolling burial acolyte
KITEM: s = any book
KMONS: 5 = patrolling kobold demonologist hd:2 exp:25
KITEM: 5 = any book / gold
KFEAT: N = altar_nemelex_xobeh
KITEM: N = any misc
KFEAT: X = altar_xom
KFEAT: M = altar_makhleb
KFEAT: C = altar_cheibriados
KFEAT: F = altar_fedhas
KFEAT: G = altar_gozag
KFEAT: Q = altar_qazlal
KFEAT: H = altar_hepliaklqana
KMONS: l = patrolling spatial vortex
KFEAT: l = altar_lugonu
KFEAT: J = altar_jiyva
KMONS: m = shadowghast
KMONS: j = patrolling jelly
COLOUR: # = yellow
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Ecumenical Temple",
:           })
SUBST: x = c

MAP
xxxxxxxxxxx
xE1ZxOToxDR
xe..xUBtxyY
xxx+x+xxx+x
x..........
#.f........
x...xxxxxx+
x.f.xJlxm..
x...xNGx...
x+xxxXHx...
x.s5xMCx...
xVSKxQF+..j
ENDMAP

##############################################################################
# D1's
#
# D1_1, horror grid
NAME: sprint_mu_d1_horrors
TAGS: sprint_mu_d1 no_rotate no_hmirror no_vmirror
MONS: Erica / Harold / Maurice
MONS: centaur, centaur warrior, small abomination, unseen horror
SUBST: ? = 5...
KFEAT:  &# = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Orcish Mines",
:           })
: lua_marker('&', props_marker {
:           door_description_suffix=" to the Lair of Beasts",
:           })
MARKER:  ! = lua:fog_machine { \
                 pow_max = 10, delay_min = 10, delay_max = 40, \
                 size = 2, size_buildup_amnt = 5, \
                 size_buildup_time = 25, cloud_type = "black smoke" \
             }

MAP
x#xxxxxxxxxxxxcccccccc
x..WWW+.c.+...+.x.x.x.
x.cWWWc.c.c...cx.x.x.x
+.c.!.c.c.c2..c.x.x.x.
x.c.1.c.4.c32.cx.x.x?x
              c.x.x.x.
              cx.x.x.x
              &.x4x.x.
              cx.x.x.x
ENDMAP

##############################################################################
# D1_2, spiderweb
NAME: sprint_mu_d1_spiders
TAGS: sprint_mu_d1 no_rotate no_hmirror no_vmirror
MONS: ogre, two-headed ogre
MONS: Erolcha
MONS: redback
KFEAT: ~ = net trap
NSUBST: ^ = 2:4 / 10:~ / *:.
KFEAT: &# = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Orcish Mines",
:           })
: lua_marker('&', props_marker {
:           door_description_suffix=" to the Lair of Beasts",
:           })
MAP
x#xxxxxxxxxxxxxxxxxxxx
x....x1x1x2....x^^^^^^
xx.x.1x.xx.xxx.x^^^^^^
+xx.x.x.xx.x2.xx^^^^^^
x...x..x..xx.3+^^^^^^^
              x^^^^^^^
              x^^^^^^^
              &^^^^^^^
              x^^^^^^^
ENDMAP

##############################################################################
# Orcs
#
# Orc 1, the legion
NAME: sprint_mu_orc_legion
TAGS: sprint_mu_orc no_rotate no_hmirror no_vmirror
MONS: orc, orc wizard, orc priest, orc warrior
MONS: orc knight, orc sorcerer, orc high priest, orc warlord
NSUBST: r = 1:B / 2:! / 1:s / *:r
KFEAT: s = any shop
SUBST: B = Brrrrrrrrr
KFEAT: B = altar_beogh
SUBST: R = xxxx$$
SUBST: r = xxx$$
SUBST: $ = $$$$$$$$$$$$$$!
KITEM: ! = acquire gold
SUBST: . = $.
SUBST: 1 = 111234
SUBST: 2 = 2226
SUBST: 3 = 3337
SUBST: 4 = 4445
SUBST: 5 = 5558
MAP
xRRRRRRRRRR
xrrrrrrrr..
x..111111.R
x..111111rR
x..111111rR
x.rrrrrrrrR
x.RRRRRRRRR
ENDMAP

##############################################################################
# Elfs
#
# Elf 1, gauntlet
NAME: sprint_mu_elf_gauntlet
TAGS: sprint_mu_elf no_rotate no_hmirror no_vmirror
MONS: deep elf knight / deep elf pyromancer w:15 / deep elf zephyrmancer w:15
MONS: deep elf annihilator ; robe ego:poison_resistance | robe ego:resistance | robe /\
      deep elf demonologist ; robe ego:poison_resistance | robe ego:cold_resistance | robe /\
      w:2 deep elf pyromancer ; robe ego:poison_resistance | robe ego:cold_resistance | robe /\
      w:2 deep elf zephyrmancer ; robe ego:poison_resistance | robe ego:cold_resistance | robe
MONS: deep elf death mage ; robe ego:poison_resistance | robe ego:cold_resistance | robe /\
      deep elf high priest ; robe ego:poison_resistance | robe ego:cold_resistance | robe
MONS: deep elf blademaster ; chain mail ego:cold_resistance /\
      deep elf master archer ; chain mail ego:poison_resistance . longbow
NSUBST: $ = 1:b / 1:s / *:|
: acq_on_sight(_G, 'b', {"book","book","wand"})
: acq_on_sight(_G, 's', {"magical staff","jewellery","jewellery"})
KITEM: | = superb_item, superb_item, superb_item, gold, scroll of amnesia / w:5 scroll of silence
KFEAT: b = floor
KFEAT: # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Elven Halls",
:           })
MAP
cccccccccccccccccccc
#.m...cc22..+3...$$c
c.m.11ccwwwwcc..cc$c
c.m1..www.......4c$c
c.m.11ccwwwwcc..cc$c
c.+...cc22..+3...$$c
cccccccccccccccccccc
ENDMAP

##############################################################################
# Hives
#
# Hive 1, Nellie
NAME:   sprint_mu_hive_nellie
TAGS:   sprint_mu_hive no_rotate no_hmirror no_vmirror
KMONS:  1 = killer bee
KMONS:  2 = queen bee
KMONS:  3 = generate_awake Nellie
KITEM:  3 = demonic rune of zot
: acq_on_sight(_G, '3', {"misc","wand"})
NSUBST: 1 = 1:2 / *:1
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Hive",
:           })
COLOUR: a = yellow
TILE:   a = wall_wax
SUBST:  a = x
MAP
aaaaaaaaa
#111Wwa3a
a111Wwaaa
a111Wwwwa
a111WWWWa
a1111111a
a1111111a
a1111111a
aaaaaaaaa
ENDMAP

##############################################################################
# Lairs
#
# Lair 1, fedhas
NAME: sprint_mu_lair_fedhas
TAGS: sprint_mu_lair no_rotate no_hmirror no_vmirror
KMONS: P = plant / w:1 ballistomycete spore
KMONS: p = plant
KMONS: 1 = patrolling wandering mushroom
KMONS: 2 = komodo dragon
KMONS: 3 = cane toad
KMONS: 4 = rime drake
KMONS: 5 = swamp drake
KMONS: v = blink frog
KFEAT: v = shallow_water
NSUBST: ! = 5:v
SUBST: ! = WWwwww.
SUBST: " = WWWWWW.
KFEAT: ? = shallow_water / deep_water w:20 / floor w:5
KMONS: 7 = elephant
KMONS: 6 = dire elephant
KMONS: 8 = gastronok
KITEM: 8 = any potion, any potion, any potion, gold, any, any
KMONS: a = patrolling rupert
KMONS: b = death yak
KMONS: f = blink frog
KMONS: d = black mamba
KMONS: e = azure jelly
KMONS: g = tyrant leech
KMONS: A = lindwurm
KMONS: h = redback
KMONS: i = hydra
KMONS: j = patrolling spriggan ; q:5 dart ego:atropa | q:5 dart ego:datura
KMONS: k = patrolling spriggan druid
KMONS: q = electric eel
KFEAT: q = shallow_water
KMONS: r = hydra simulacrum / fire dragon simulacrum / polar bear simulacrum /\
           wolf simulacrum / black mamba simulacrum
KITEM: r = any, any, any, any, any, superb_item / w:1 any beam wand /\
           w:1 wand of mindburst
KFEAT: _ = altar_fedhas
KMONS: s = patrolling Urug
KMONS: u = death drake
KFEAT: = = closed_door
MARKER: = = lua:restrict_door()
MARKER:  ? = lua:fog_machine { \
                 pow_max = 10, delay_min = 10, delay_max = 40, \
                 size = 2, size_buildup_amnt = 5, \
                 size_buildup_time = 25, cloud_type = "thin mist" \
             }
MARKER:  * = lua:fog_machine { \
                 pow_max = 10, delay_min = 10, delay_max = 40, \
                 size = 2, size_buildup_amnt = 5, \
                 size_buildup_time = 25, cloud_type = "freezing vapour" \
             }
MAP
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X.7.+!!!!!!!"!tt.....ttttWWW.1.1...1WWW...
X.7px"!!!!!"!"tt.wwww+tt+twwwwwwwwwwwwttP.
X.ppx!"!!?"!!!"+...54x3Wttttttttttttttttpp
X.6px!!"!"!!!!tttttttx23tttttttttttttttttt
X.68x!!!"!!!!!tttttttxxx+ttttttttttttttttt
Xxx+xxxx+xxxxxxxtttttttthxx..xxWWWWWw.icrr
X...........a...tttttg..xxhxx.xWWWWw..icrr
Xx=mxxxxxxxxxxxx+ttttt.xxAxxhxx+WWWwwxxcc+
X...xWp.b........ttttt..x.xx...xWq......*.
X...=WW.fbxxxxxxxxttttt.xx.xx.sxw..=xxxccc
Xee.mWWW..bf....dpptttt.xx.xxxxx...x....jk
Xee.xWWWWpfbpp...dptttg....xxu.....xttt._j
ENDMAP

##############################################################################
# Slimes
#
# Slime 1, circle
NAME: sprint_mu_slime_circle
TAGS: sprint_mu_slime no_rotate no_hmirror no_vmirror
MONS: Royal Jelly, shining eye, glass eye, acid blob, azure jelly
SHUFFLE: 234
SUBST: 4 = 45
KFEAT: M = slimy_wall
KFEAT: _ = altar_jiyva
KITEM: _ = wand of digging pre_id
KITEM: ! = slimy rune of zot
SUBST: $ = ||*
KFEAT: # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Pits of Slime",
:           })
MAP
x#xxxxxxxxxxxx
xx.MMMMMMMMMMx
MMM.M...MMMMMx
MMM.......MMMx
MM.........MMx
M3...mmm...3Mx
M4..mm$mm..4Mx
MM..m$!$m..MMx
M2..mm$mm..2Mx
M2...mmm...2Mx
MM.........MMx
MMM.......MMMx
MMMMM._1MMMMMx
MMMMMMMMMMMMMx
xxxxxxxxxxxxxx
xxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Snakes
#
# Snake 1, twists
NAME:   sprint_mu_snake_twists
TAGS:   sprint_mu_snake no_rotate no_hmirror no_vmirror
MONS:   guardian serpent, naga warrior, nagaraja, naga
MONS:   adder, water moccasin, black mamba
KMONS:  8 = anaconda
SUBST:  5 = 5..
SUBST:  5 = 5678
KFEAT:  A = antique armour shop / antique weapon shop
KFEAT:  B = book shop / jewellery shop
KFEAT:  C = distillery shop / scroll shop
NSUBST:  * = 1:A / 1:B / 1:C
KITEM:  $ = serpentine rune of zot
COLOUR: c = yellow
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Snake Pit",
:           })
MAP
x#xxxxxxxxxxxx
c..55555555.cc
c..55555555..c
ccccccccccc..c
cc.55555555..c
c..55555555.cc
c..ccccccccccc
c..55555555.cc
cc.55555555..c
ccccccccccc..c
cc.24........c
c*.34.......cc
c*.ccccccccccc
c*..........$c
cc..........1c
cccccccccccccc
ENDMAP

##############################################################################
# Shoals
#
# Shoals 1, archipelago
NAME: sprint_mu_shoals_archi
TAGS: sprint_mu_shoals no_rotate no_hmirror no_vmirror
MONS: Polyphemus, dream sheep, sea snake, Ilsuiw, merfolk javelineer
KITEM: $ = barnacled rune of zot
KFEAT: A = antique armour shop / antique weapon shop
KFEAT: B = book shop / jewellery shop
KFEAT: C = distillery shop / scroll shop
NSUBST: * = 1:A / 1:B / 1:C
MARKER: X = lua:portal_desc { desc="open sea?" }
COLOUR: X = blue
TILE:   X = dngn_open_sea
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Shoals",
:           })
MAP
x#xxxxxxxxxxxx
XWWwwwwwwwwwwX
XwwWwwwwwwwwwX
Xwww.2wwwww..X
Xww.21.WWW..3X
Xwww.2wwwww..X
Xwwwwwwwwww..X
XwWWWWWwwWwW.X
X..WwwwWWwWwwX
X...wwwwwwwwwX
X.4..WWwWWww.X
X...wwwWwwW.*X
X.wwwwwwwww.*X
Xwwwwwwwwww.*X
X$WWWWWWWW..5X
XXXXXXXXXXXXXX
ENDMAP

##############################################################################
# Shoals 2, Kraken!
NAME: sprint_mu_shoals_kraken
TAGS: sprint_mu_shoals no_rotate no_hmirror no_vmirror
MONS: snapping turtle, alligator snapping turtle
MONS: plant, fungus
KMONS: ! = kraken
KFEAT: ! = deep_water
KMONS: ? = snapping turtle
KFEAT: ? = deep_water
SUBST: 1 = 12
SUBST: p = 34.
NSUBST: w = 2:? / *:w
KITEM: $ = barnacled rune of zot
KFEAT: A = antique armour shop / antique weapon shop
KFEAT: B = book shop / jewellery shop
KFEAT: C = distillery shop / scroll shop
NSUBST: * = 1:A / 1:B / 1:C
MARKER: X = lua:portal_desc { desc="open sea?" }
COLOUR: X = blue
TILE:   X = dngn_open_sea
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Shoals",
:           })
MAP
x#xxxxxxxxxxxx
X..........ppX
Xwwp......pwwX
Xwwwpp..ppwwwX
Xwwwww..wwwwwX
XwwwwWwwWwwwwX
XwwwWwwwwWwwwX
XwwWwwwwwwWwwX
XwWwwww!wwwWwX
XWwwwwwwwwwwWX
XwWwwwwwwwwWwX
XwwWwwwwwwWwwX
XwwwWwwwwWwwwX
Xwww.1..1.wwwX
Xww.1**$*1.wwX
XXXXXXXXXXXXXX
ENDMAP

##############################################################################
# Swamps
#
# Swamp 1, forest cave
NAME: sprint_mu_swamp_cave
TAGS: sprint_mu_swamp no_rotate no_hmirror no_vmirror

: local swamprnd = crawl.random2(4)
: if swamprnd == 0 then
MONS: swamp drake, swamp dragon, hydra, Lernaean hydra
MARKER:  ! = lua:fog_machine { \
                 pow_max = 3, delay_min = 5, delay_max = 5, \
                 size = 2, size_buildup_amnt = 3, \
                 size_buildup_time = 5, cloud_type = "thin mist" \
             }
: elseif swamprnd == 1 then
MONS: death drake, swamp dragon draugr, hydra, spectral hydra
MARKER:  ! = lua:fog_machine { \
                 pow_max = 3, delay_min = 5, delay_max = 5, \
                 size = 2, size_buildup_amnt = 3, \
                 size_buildup_time = 5, cloud_type = "foul pestilence" \
             }
: elseif swamprnd == 2 then
MONS: swamp drake simulacrum, ice dragon, hydra, hydra simulacrum
MARKER:  ! = lua:fog_machine { \
                 pow_max = 3, delay_min = 5, delay_max = 5, \
                 size = 2, size_buildup_amnt = 3, \
                 size_buildup_time = 5, cloud_type = "freezing vapour" \
             }
: else
MONS: hell hound, fire dragon, hydra, Xtahua
MARKER:  ! = lua:fog_machine { \
                 pow_max = 3, delay_min = 5, delay_max = 5, \
                 size = 2, size_buildup_amnt = 3, \
                 size_buildup_time = 5, cloud_type = "flame" \
             }
: end
KFEAT: t = mangrove
KMONS: p = plant
SUBST: . = ...W
SUBST: W = WWWW......p2
KFEAT: ! = deep_water
KFEAT: A = antique armour shop / antique weapon shop
KFEAT: B = book shop / jewellery shop
KFEAT: C = distillery shop / scroll shop
NSUBST: * = 1:A / 1:B / 1:C
KITEM: $ = decaying rune of zot
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Swamp",
:           })
MAP
x#xxxxxxxxxxxx
x.tttttttttttt
xt.ttttttttttt
xt.tttcccccctt
xtt.ttc...$ctt
xt.tttc3..4ctt
xt.tttc....ctt
xt.1ttc...cctt
xtt.ttWccccttt
xttt.ttWWWWWtt
xtt.WttttttWtt
xt.WWWWWWWWWtt
xt.WWWWW!WWWtt
xt1tWWWWWWWWtt
xtttttttt***tt
xttttttttttttt
ENDMAP

##############################################################################
# D2's
#
# D2_1, wish-granting genie
NAME: sprint_mu_d2_genie
TAGS: sprint_mu_d2 no_rotate no_hmirror no_vmirror
MONS: yaktaur / yaktaur captain, glass eye, orc priest / \
      orc high priest hd:5 hp:70 exp:274
# ??????????
MONS: spriggan defender hd:5 hp:55 exp:301 ; dagger
MONS: obsidian statue / orange crystal statue
MONS: thermic dynamo, skeletal warrior
KMONS: 2 = glass eye
KITEM: 2 = q:10 scroll of identify pre_id
KMONS: P = plant
SUBST: P = PPPPPPPPP.
: local uniq = util.random_subset({ "Donald", "Frances", "Louise",
:                                   "Urug", "Wiglaf", }, 2)
: local eq = "dart ego:curare q:4 . scale mail"
: kmons("a = patrolling " .. uniq[1] .. " ; great mace ego:holy_wrath . " .. eq)
: kmons("b = patrolling " .. uniq[2] .. " ; great sword ego:freezing . " .. eq)
KITEM: & = scroll of acquirement q:1 pre_id, \
 scroll of acquirement q:1 pre_id / w:15 scroll of torment pre_id, \
 scroll of acquirement q:1 pre_id / w:25 scroll of torment pre_id
NSUBST: L = 1:& / *:l
KMONS: A = patrolling Azrael
KITEM: " = any weapon, any armour, any wand, gold

MARKER:  ! = lua:fog_machine { \
                pow_max = 15, delay_min = 100, delay_max = 150, \
                size = 2, size_buildup_amnt = 29, \
                size_buildup_time = 1000, cloud_type = "foul pestilence" }

MARKER:  ? = lua:fog_machine { \
                pow_max = 25, delay_min = 100, delay_max = 150, \
                size = 2, size_buildup_amnt = 29, \
                size_buildup_time = 1000, cloud_type = "grey smoke" }
SUBST: G : GtTUVY
SUBST: Y : TUY
KFEAT: i = antique weapon shop
KFEAT: d = antique armour shop
KFEAT: f = book shop
KFEAT: h = jewellery shop
KFEAT: j = distillery shop
KFEAT: k = scroll shop
KFEAT: * = any shop
KFEAT:  # = runed_door
KFEAT:  Z = runed_clear_door
NSUBST: * = 1:i / 1:d / 1:f / 1:g / 1:h / 1:j / 1:k / *:*
COLOUR: Z = shimmer_blue
MARKER: Z = lua:props_marker({ \
            door_description_prefix="flickering ", \
            door_description_suffix=" to a bazaar", \
            door_description_noun="gateway", \
         })
MAP
xx#xxxxxxxxxxxxxx
x...+.llllccL.lll
x...x.llllcLAlcll
xa.bx.clllccLccll
xxxxx.c1lllccclll
x3PPP.cccllllllll
x.3PPPc2m1lllllll
x..3PPc+cccllllll
x...3Pc...c1lllll
x+ccccc.!.cccllcc
x.....+...+7c1cc.
x.xxxxxxxxxxccc..
x.x"PP........+..
x.xPP.44..xxxxxxx
x.xP..44xxx$*YY*$
x.x...xxx5x$*YY*$
x.x.xxx...x$****$
x.x+x...?.x$****$
x.x.......x$....$
x.x.......xxxZZxx
x.........x.G..G.
ccccccccc.x......
c6c6c6c6c........
c................
c................
ENDMAP

##############################################################################
# Vaults
#
# Vaults 1, butterflies
NAME: sprint_mu_vaults_butterflies
TAGS: sprint_mu_vaults no_rotate no_hmirror no_vmirror
MONS: centaur warrior, lich, shadow dragon, ogre mage
MONS: vault guard ; short sword ego:electrocution | long sword ego:flaming |\
      dire flail ego:vampirism | war axe ego:freezing | spear ego:heavy |\
      great mace ego:pain | great sword ego:venom .\
      chain mail ego:poison_resistance | chain mail ego:cold_resistance |\
      scale mail ego:poison_resistance | scale mail ego:cold_resistance |\
      plate armour ego:fire_resistance . tower shield ego:reflection |\
      kite shield ego:protection | tower shield ego:positive_energy
MONS: stone giant / shadow dragon / quicksilver dragon / golden dragon /\
      titan / fire giant / frost giant
MONS: skeletal warrior
KMONS: 8 = obsidian statue
KMONS: f = butterfly
KMONS: U = Sojobo ; morningstar ego:heavy . tower shield ego:reflection / \
           Frederick ; trident ego:freezing . tower shield ego:reflection
KMONS: C = generate_awake Chuck
KMONS: k = yaktaur captain ; arbalest ego:chaos
KMONS: b = bush
KMONS: D = fire dragon
NSUBST: $ = 1:1 / *:|
NSUBST: D = 1:D / *:*
NSUBST: a = 1:+ / *:v
MARKER:  ! = lua:fog_machine { \
                pow_max = 25, delay_min = 100, delay_max = 150, \
                size = 2, size_buildup_amnt = 29, \
                size_buildup_time = 1000, cloud_type = "grey smoke" }
SUBST: x = cn.
NSUBST: A = 1:+ / *:v
SUBST: $ = $*
SUBST: * = *|
SUBST: | = |||$
SUBST: f = f..
NSUBST: . = 15:M / *:.
KMONS: M = ugly thing / slime creature / glowing shapeshifter
KITEM: % = silver rune of zot
KITEM: " = ring of flight pre_id, potion of enlightenment pre_id q:3, \
 scroll of acquirement q:1 pre_id, wand of digging / \
 any blast wand, acquire gold, ring of protection from fire pre_id
KFEAT: #~^ = closed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Vaults",
:           })
: lua_marker('~', props_marker {
:           door_description_suffix=" to the Hall of Blades",
:           })
: lua_marker('^', props_marker {
:           door_description_suffix=" to the Crypt",
:           })
MAP
vvvvvvvvvvvvvvvvvvv
v|*%..655fff+.WwWWv
v|*$..655fffvWWWWWv
v|*$..655fffv.wwwwv
v|*$.7655fffv.Www8v
v|*$.7655fffvWwwwWv
v|*$..655fffv.W...v
v|*$..655fffv.....v
v|"$..655fffv.....v
vvvvvvvvvvvvvvvvv+v
v...2...+.........v
v.vvvvvvv.......!.v
v.......v.......3.v
vvvvvvv.v.!.....4.v
v.......v.......3.v
vAvAvAvAvvvvvvvvvvv
v.x.x.x.v*******lCv
vx.x.x.xvlllllllllv
v.x.x.x.v.........v
vx.x.x.xv...!.....v
vUx.x.x.+.........v
vvvvvvvvvvvvvvvv+vv
v$..v$..vD.v......v
v...v...v..v..bbb.v
vv+vvv+vv..v..bkb.v
v.......+..a..bbb.v
v.vvvvv.vvvv......v
#.v1..+.vD.a......v
vvvvvvv.+..v......v
      v.vvvv......v
      v.v..v......v
      v.+..v......v
      v.v..v......v
      v.v..a......v
      ~.v..v......v
      v.vD.v......v
      vvvvvvvvvvv^v
ENDMAP

##############################################################################
# Blades
#
# Blade 1, basic
NAME: sprint_mu_blade_basic
TAGS: sprint_mu_blade no_rotate no_hmirror no_vmirror
MONS: dancing weapon
: acq_on_sight(_G, '$', {"weapon","weapon"});
MAP
c.....
c..c..
c.c1c.
c....1
c1....
c.c1c.
c..c..
c$....
ENDMAP

##############################################################################
# Crypts
#
# Crypt 1, chambers
NAME: sprint_mu_crypt_chambers
TAGS: sprint_mu_crypt no_rotate no_hmirror no_vmirror
KMONS: 1 = patrolling vampire knight
KMONS: 2 = patrolling skeletal warrior
KMONS: 3 = patrolling bone dragon
KMONS: 4 = patrolling vampire bloodprince
KMONS: 5 = patrolling guardian mummy
KMONS: 6 = patrolling place:Depths:$ zombie
KMONS: 7 = patrolling place:Depths:$ simulacrum
SUBST: 1 = 1122334455667
KITEM: 1234567 = star_item / nothing
KFEAT: ^ = zot trap
KFEAT: - = net trap
NSUBST: ~ = 2:^ / 2:- / *:.
SUBST:  ! = +
MAP
ccccccccccccccccc.c
c1c1c1c1c1c1c1c1c.c
c+c+c+c+c+c+c+c+c!c
c~~~~~~~~~~~~~~~~~c
c~~~~~~~~~~~~~~~~~c
c+c+c+c+c+c+c+c+c+c
c1c1c1c1c1c1c1c1c1c
ENDMAP

##############################################################################
# Crypt 2, fortress
NAME: sprint_mu_crypt_fortress
TAGS: sprint_mu_crypt no_rotate no_hmirror no_vmirror
MONS: patrolling iron golem, patrolling necromancer
MONS: patrolling hell knight, patrolling skeletal warrior
KMONS: 5 = lich
KITEM: 5 = star_item, star_item, star_item, star_item, star_item, star_item
MAP
vvvvvvvvvvvvvvvvv.v
v.....+...2v41vww.v
v.vvvvvv...v..vww.v
v33.+..vv..v..+...v
v33.v...vv.+..vww.v
vvvvv....vvv..vww.v
v.........5v..vww.v
ENDMAP

##############################################################################
# Crypt 3, Revenge of the Return of the Lich Under Glass 2: Revenge Harder
NAME:  sprint_mu_crypt_lich
TAGS:  sprint_mu_crypt no_rotate no_hmirror no_vmirror
MONS:  dread lich, laughing skull
KFEAT: m = iron_grate
MAP
ccccccccccccccccc.c
c||.m1m........c..c
c**.mmm.....22.+..c
c**.........22.+..c
c||............c..c
cccccccccccccccc..c
c.................c
ENDMAP

##############################################################################
# Tombs
#
# Tomb 1, spiral
NAME: sprint_mu_tomb_spiral
TAGS: sprint_mu_tomb no_rotate no_hmirror no_vmirror
MONS: patrolling royal mummy, patrolling mummy priest
MONS: patrolling guardian mummy, patrolling guardian sphinx
KFEAT: - = net trap / zot trap / floor w:40
SUBST: . = -----.................332
KITEM: $ = golden rune of zot
KITEM: ? = scroll of acquirement pre_id q:5
COLOUR: X = lightgrey
KFEAT:  # = runed_door
: lua_marker('#', props_marker {
:           door_description_suffix=" to the Tomb of the Ancients",
:           })
MAP
X#XXXXXXXXXXXXXXXXX
X..c..............c
X..c..............c
X..c..cccccccccc..c
X..c..c.332.||?c..c
X..c..c.3321|||c..c
X..c..c.3321|||c..c
X44c..c.332.$||c..c
X..c..c+cccccccc..c
X..c..c...........c
X..+..c...........c
Xcccccccccccccccccc
ENDMAP

##############################################################################
# D3's
#
# D3_1, branching
NAME:  sprint_mu_d3_branching
TAGS:  sprint_mu_d3 no_rotate no_hmirror no_vmirror
KMONS: a = col:red generate_awake statue name:fire_elementalist name_adjective hp:50 \
 exp:436 spells:summon_fire_elementals.29.magical;cantrip.29.magical \
 tile:mons_fire_elementalist_statue
KMONS: H = col:blue generate_awake statue name:water_elementalist name_adjective hp:50 \
 exp:436 spells:summon_water_elementals.29.magical;cantrip.29.magical \
 tile:mons_water_elementalist_statue
KMONS: O = col:brown generate_awake statue name:earth_elementalist name_adjective hp:70 \
 exp:561 spells:summon_earth_elementals.29.magical;cantrip.29.magical \
 tile:mons_earth_elementalist_statue
KMONS: d = col:lightgrey generate_awake statue name:air_elementalist name_adjective hp:25 \
 exp:280 spells:summon_air_elementals.29.magical;cantrip.29.magical \
 tile:mons_air_elementalist_statue
KMONS: e = ancient champion exp:1516 \
       spells:venom_bolt.21.wizard;haste.21.wizard;haunt.21.wizard \
       ; plate armour ego:fire_resistance | plate armour ego:cold_resistance . \
       battleaxe ego:heavy | battleaxe ego:pain | \
       w:3 executioner's axe ego:heavy
KITEM: e = superb_item, superb_item
KMONS: p = plant
KMONS: 1 = patrolling vampire knight
KMONS: 2 = patrolling mara
KMONS: 3 = molten gargoyle
KMONS: 4 = patrolling titanic slime creature
KMONS: 5 = mummy priest
KMONS: f = skeletal warrior ; longbow ego:flaming
KMONS: 6 = shadow wraith
KMONS: g = ball lightning / ballistomycete spore
KMONS: 7 = patrolling storm dragon
KMONS: 8 = patrolling nikola
KMONS: A = col:magenta plant / w:2 deep elf blademaster
KMONS: B = col:lightmagenta plant
SUBST: A = AAB
KFEAT: AB = zot trap w:2 / floor
KMONS: i = patrolling glass eye
KMONS: j = patrolling golden eye
KMONS: k = patrolling shining eye
KMONS: m = patrolling glowing orange brain
KMONS: o = patrolling yellow draconian
KMONS: q = generate_awake spark wasp
KMONS: r = hydra simulacrum / golden dragon zombie / spectral iron dragon / \
           iron troll simulacrum / anaconda zombie / anaconda simulacrum / \
           stone giant draugr / titan zombie
KMONS: s = boris
KMONS: t = col:white generate_awake statue name:pristine name_adjective \
           hp:100 exp:748 tile:mons_statue_crossbow ; javelin ego:silver
KMONS: u = Mennas
KMONS: y = generate_awake roxanne
KMONS: z = oklob plant
KFEAT: ! = armour shop / distillery shop
KITEM: $ = wand of mindburst w:2 / potion of curing / star_item
KMONS: C = patrolling ice devil
KMONS: D = patrolling sin beast
KMONS: E = patrolling sun demon
KMONS: F = patrolling soul eater
KMONS: G = iron troll simulacrum hd:20 exp:445
KMONS: I = patrolling vault guard / patrolling orc knight / patrolling draconian knight /\
 patrolling deep elf knight
KITEM: % = quad damage
KFEAT: % = zot trap
KFEAT: J = deep_water
SUBST: J = Jh
KFEAT: h = deep_water
KMONS: h = electric eel
KMONS: K = executioner
KMONS: M = patrolling yaktaur ; wand of warping charges:2
KMONS: N = patrolling nessos
KFEAT: ^ = net trap
KFEAT: " = floor
COLOUR: " = yellow
MARKER: L = lua:fog_machine { \
                 pow_max = 10, delay_min = 10, delay_max = 40, \
                 size = 2, size_buildup_amnt = 2, \
                 size_buildup_time = 25, cloud_type = "freezing vapour" \
             }
KFEAT:  # = runed_door
MARKER: # = lua:props_marker({ \
            door_description_suffix=" to Hell", \
            door_description_noun="gateway", \
         })
MAP
vvvvvvvvvvvvvvvvv+vvvvvvvvvvvvv
vtW....Wtvrrsvvv...vvevllllllvv
vW..""..Wvrrrvv.....vv+v3llpln1
v..".."..v+vvv..a.H..vvv...pln.
v.."u."..+...+.......+.......2.
v..".."..v+vvv..O.d..vvvvv.pln.
vW..""..WvWWWvv.....vv^^.vvpln1
vtW....Wtv+v+vvv...vvv^v..vv+vv
vvvv++vvvvrvrvvvv+vvvv4vv.vv...
v$$+.....v+vvvvv.www+v^vv.vvvv.
vvvvvvvv.v$$+!!v.ww.v^^vv......
vC.Fvvvv.vvvv!!v.ww.vvvcccc+ccc
vD.Evvv...vvvzzv.6w.vgg+WT...J8
#...+...y...+..+..WW+ggcWW.J.J7
vE.Dvvv...vvv..vwww.vggc.J.J.J.
vF.Cvvvv.vv!v..vffp5vggc...J...
vvvvvvvv.v.Gv..vvvv+vvvcccc+ccc
v......v+v+nv..v.v.v.v.v.v.v.v.
v.I.I..v.+..+..+v.vqv.vqv.vqv.v
v..I...v.vvvv..v.v.v.v.v.v.v.v.
v.I.I..+.vKvvvvvvvvXXXXXXXXXXXX
v......vvv.v.L.....X...o+AAAAX.
v.bnb..v...v.......X....XAAAAX.
v.b%n..+...+.......+....XAAAAX.
v.bbb..v...v.....MMX....XAAAAX.
v......vvv+v.L...MNX....XAAAAX.
vvvvvvvv$..vvvvvvvvXijkmXAAAA+.
ENDMAP

##############################################################################
# Vestibules
#
# Vestibule 1, ranged semi-nostalgia
NAME: sprint_mu_vestibule_basic
TAGS: sprint_mu_vestibule no_rotate no_hmirror no_vmirror
MONS: patrolling Geryon, oni incarcerator, stone giant
MONS: demonspawn warmonger ; plate armour . hand cannon good_item . \
                             battleaxe good_item . kite shield
MAP
..........3.................
.........2.3..4.............
.............1..............
.........2.3..4.............
..........3.................
ENDMAP

##############################################################################
# Dis
#
# Dis 1, the iron giant
NAME: sprint_mu_dis_giant
TAGS: sprint_mu_dis no_rotate no_hmirror no_vmirror
MONS: patrolling iron elemental
MONS: patrolling iron giant ; skullcrusher
MONS: iron dragon, rust devil, patrolling hell sentinel, war gargoyle, iron golem
KMONS: & = dispater
KITEM: * = superb_item, superb_item, superb_item
KITEM: ? = star_item, star_item, scroll of enchant armour pre_id q:4
: acq_on_sight(_G, '$', {"armour","armour"})
KITEM:  O = iron rune of zot
KFEAT:  # = runed_door
MARKER: # = lua:props_marker({ \
            door_description_suffix=" to the Iron City of Dis", \
            door_description_noun="gateway", \
         })
TILE:   v = dngn_metal_iron
MAP
vvvvvvvvvvvvvv
v.+34v.......v
v.v44+..vvvv+v
v.vvvv..v....v
v.v5?vv+v5...v
v.v1$v7.v5..*v
v.+..v..v&**Ov
vvvvvv++vvvvvv
vv6v6v12v6v6vv
v............v
vvvvvv#vvvvvvv
ENDMAP

##############################################################################
# Gehenna
#
# Gehenna 1, hellfire
NAME: sprint_mu_gehenna_hellfire
TAGS: sprint_mu_gehenna no_rotate no_hmirror no_vmirror
KMONS: 1 = patrolling serpent of hell
KFEAT: 1 = lava
KMONS: 2 = hellion
KMONS: 3 = brimstone fiend
NSUBST: l = 1:1 / *:l
KITEM: O = obsidian rune of zot
KITEM: $ = superb_item, any, any
KITEM: ? = superb_item, superb_item, scroll of enchant weapon pre_id q:6
: acq_on_sight(_G, '!', {"weapon","weapon"})
MARKER:  G = lua:fog_machine { \
                pow_max = 25, delay_min = 100, delay_max = 150, \
                size = 2, size_buildup_amnt = 10, \
                size_buildup_time = 1000, cloud_type = "flame" }
COLOUR: #vG = red
KFEAT:  # = runed_door
TILE:   c = stone_wall_pyre
MARKER: # = lua:props_marker({ \
            door_description_suffix=" to the ashen valley of Gehenna", \
            door_description_noun="gateway", \
         })
MAP
cccccccccccccc
cl.$$2$$2$!?Oc
cll..322.cccoc
cllll.22.llllc
c.llllllllll.c
c.llllllllll.c
c...llllll...c
c.....ll.....c
c............c
cG..........Gc
cccccc#ccccccc
ENDMAP



##############################################################################
# Cocytus
#
# Cocytus 1, islands
NAME: sprint_mu_cocytus_islands
TAGS: sprint_mu_cocytus no_rotate no_hmirror no_vmirror
KMONS: 1 = patrolling Antaeus ; tower shield ego:reflection
KMONS: 2 = patrolling ice fiend
KMONS: 3 = shard shrike / elemental wellspring
KFEAT: 3 = deep_water
NSUBST: w = 3:3 / *:w
NSUBST: 2 = 1:1 / 1:! /*:2
NSUBST: a = 1:+ / *:c
NSUBST: b = 1:+ / *:c
NSUBST: d = 1:+ / *:c
NSUBST: e = 1:+ / *:c
NSUBST: f = 1:+ / *:c
NSUBST: g = 1:+ / *:c
KITEM: 1 = icy rune of zot
KITEM: 2 = superb_item, star_item
KMONS: ! = patrolling ice fiend
KITEM: ! = potion of resistance pre_id q:3, \
           potion of attraction pre_id q:3, potion of haste pre_id q:5
COLOUR: #c = lightcyan
KFEAT:  # = runed_door
TILE:   c = wall_icy_stone
MARKER: # = lua:props_marker({ \
            door_description_suffix=" to the freezing wastes of Cocytus", \
            door_description_noun="gateway", \
         })
MAP
ccccccc#cccccc
ccccwwwwwwwwwc
cc2awcdcwwcgcc
ccacwd2dwwg2cc
cwwwwcdcwwcgcc
cwwwwwwwwwwwwc
cwwwwcecwwwwwc
ccbcwe2ewwcfcc
cc2bwcecwwf2cc
ccccwwwwwwcccc
cccccccccccccc
ENDMAP


##############################################################################
# Tartarus
#
# Tartarus 1, statrot
NAME: sprint_mu_tartarus_statrot
TAGS: sprint_mu_tartarus no_rotate no_hmirror no_vmirror
KMONS: 1 = patrolling Khufu / patrolling Murray / patrolling Ereshkigal
KMONS: 2 = patrolling guardian mummy
KMONS: 3 = patrolling shadow imp
KMONS: 4 = patrolling shadowghast
KMONS: 5 = patrolling royal mummy
KMONS: 6 = orange crystal statue
KMONS: 7 = ghost moth
KMONS: & = gloorx vloq
NSUBST: & = 1:& / 1:.
KITEM: 1 = bone rune of zot
KMONS: % = patrolling royal mummy
KITEM: % = superb_item, superb_item, star_item, star_item, any, any
KMONS: ? = patrolling royal mummy
KITEM: ? = potion of curing pre_id q:2, potion of heal wounds pre_id q:8
COLOUR: # = darkgrey
COLOUR: c = lightgrey
KFEAT:  # = runed_door
TILE:   c = wall_cobalt_stone
MARKER: # = lua:props_marker({ \
        door_description_suffix=" to the decaying netherworld of Tartarus", \
        door_description_noun="gateway", \
        })
SUBST: . = ..........2233445
MARKER: ! = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 2, size_buildup_amnt = 3, \
                size_buildup_time = 25, cloud_type = "purple smoke" }
MAP
ccccccc#cccccc
c!..c....c..!c
c.&.+..!.+.&.c
c...c....c...c
cc+cccccccc+cc
cc.....!....cc
cc+ccccccccccc
c...c7443322%c
c.!.+74!33!21c
c6..c7443322?c
cccccccccccccc
ENDMAP

##############################################################################
# Zot. 'MurrayDrop' code shamelessly stolen from sprint2. Thanks Chapayev!
#
# Zot
NAME: sprint_mu_zot1
TAGS: sprint_mu_zot no_rotate no_hmirror no_vmirror
KMONS: T = col:magenta statue name:zot n_adj exp:748 \
        spells:summon_eyeballs.27.magical;malmutate.13.magical;\
               haste.13.magical;shadow_creatures.27.magical \
        tile:mons_zot_statue
MARKER: T = lua:fog_machine { \
        pow_max = 15, delay_min = 100, delay_max = 150, \
        size = 2, size_buildup_amnt = 29, \
        size_buildup_time = 1000, cloud_type = "mutagenic fog" }
KFEAT: T = zot trap
KMONS: * = orb of fire
MONS: Tiamat, yellow draconian stormcaller / yellow draconian shifter
MONS: white draconian scorcher
MARKER: i = lua:fog_machine { \
        pow_max = 10, delay_min = 100, delay_max = 150, \
        size = 2, size_buildup_amnt = 7, \
        size_buildup_time = 1000, cloud_type = "freezing vapour" }
MONS: patrolling storm dragon / patrolling electric golem
MONS: red draconian stormcaller
KMONS: 7 = patrolling fire giant
KMONS: 8 = patrolling frost giant
KMONS: L = patrolling ancient lich
KMONS: g = patrolling orb guardian
KMONS: y = patrolling moth of wrath
KITEM: % = wand of digging pre_id
{{
lua_marker("A", portal_desc { spawn_spot = 1 })

local mons_gen_marker = TriggerableFunction:new {
    data = {
        awoke = 0
    },
    func = "sprint_mu_zot_mons_gen",
    repeated = true,
    props = {listen_to_replicas = true, only_at_replica = true }
    }
mons_gen_marker:add_triggerer(DgnTriggerer:new {
    type = "player_move" })
lua_marker("e", mons_gen_marker)

local mon_list_marker = TriggerableFunction:new {
    func = "sprint_mu_set_zot_mon_list",
    repeated = false}
mon_list_marker:add_triggerer(DgnTriggerer:new {
    type="player_los"})
lua_marker('q', mon_list_marker)
}}
SUBST: A = ^
NSUBST: a = 1:+ / *:X
KFEAT: - = zot trap
NSUBST: ^ = 3:- / *:.
KMONS: k = killer klown
KMONS: A = plant col:magenta
KMONS: B = plant col:lightmagenta
SUBST: p = AAB
SUBST: q = AAB
COLOUR: X = lightmagenta
KITEM:  O = orb of zot
KFEAT: # = runed_door
KFEAT: ~ = closed_door
COLOUR: # = magenta
MARKER: # = lua:props_marker({ \
        door_description_suffix=" to the Realm of Zot", \
        door_description_noun="gate", \
        veto_reason="You need three runes to open the Realm of Zot!", \
        veto_destroy="veto" \
        })
MARKER: # = lua:lock_door {}
MARKER: # = lua:restrict_door {}
MARKER: ~ = lua:props_marker({ \
        door_description_prefix="magically reinforced ", \
        veto_destroy="veto", door_restrict="veto" \
        })
KPROP: X#kpq+^ag78yL45il%3x21*To$. = no_tele_into
MAP
XXXXXXXXXXXXXXXXXXX
X.+^^^AX..+...X...X
X.X^^^^X.XX.i.X.T.X
XkX^^^^X55XlllX...X
XpXaaaaXX4XlllX.X.X
XpX....X..X...X*X.X
#qX.gg.X.XX3%3X.X.X
XXX.78.X..XXxXX.X.X
X.+..y.XX.X...X.XeX
X.XXXXXX..X212X.X~X
X.....L+.XX...+.oOX
XXXXXXXXXXXXXXXXXXX
ENDMAP
