###############################################################################
# swamp.des: All maps and branch endings relating to the Swamp.
#
# <<1>>      Entries
# <<2>>      Decorative vaults
# <<3>>      Monster-placing vaults
# <<4>>      Swamp end vaults
#
###############################################################################
###############################################################################

: crawl_require("dlua/dungeon.lua")

# Functionality for one of Grunt's vaults.
{{
function callback.grunt_lady_of_the_lake_trigger(data, triggerable, triggerer,
                                                 marker, ev)
  if data.triggered then
    return
  end

  local b = dgn.find_marker_positions_by_prop("merfolk_avatar_spawn", 1)[1]

  if dgn.create_monster(b.x, b.y, "generate_awake merfolk avatar") then

    data.triggered = true
    if you.see_cell(b.x, b.y) then
      crawl.mpr("A figure emerges from the depths of the water!", "warning");
    else
      crawl.mpr("The water ripples visibly.", "visual");
    end
  else
    crawl.mpr("The water ripples visibly.", "visual");
  end
end
}}

{{
function swamp_ruins(e)
    e.tags('serial_swamp_ruin extra transparent unrand')
    e.depth('Swamp')
    e.weight('6')
    e.tile('x = wall_brick_vines')
    e.ftile('- = floor_sandstone')
    e.subst('- = .')
end
}}

###############################################################################
#
# <<1>> Swamp entries.
#       All must have the swamp_entry tag and place an enter_swamp feature.
#
###############################################################################

# This is basically the dummy balancer.
NAME:   swamp_mist
TAGS:   swamp_entry transparent
KFEAT:  O = enter_swamp
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
O
ENDMAP

# Scenery, no threat.
NAME:   swamp_mist_pool
TAGS:   swamp_entry no_pool_fixup transparent
KFEAT:  O = enter_swamp
SHUFFLE: XYZ
SUBST: Y : YX, Z : ZX, X = W, Y = w, Z = w
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
SUBST:  '= t.., "= tw, t=ttw, A=Ww
MAP
       @
   't"Ywt@
  't"wYwXt'
 't"wAYXw"t'
 t"wwAOAZw"t
 't"wAAZw"t'
  't"wwZ"t'
   't"wt@
ENDMAP

NAME:   minmay_swamp_entry_swarm
TAGS:   swamp_entry
WEIGHT: 5
SUBST:  W = 1WWWWW, t = ttt., T = tttW, W = WWWwww., ' = W
NSUBST: 1 = 2:1 / 1WWWWW
KMONS:  1 = vampire mosquito
KFEAT:  1 = w / W
KFEAT:  O = enter_swamp
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
   ttttt
  tTTTTTt
 tTT111TTt
tTT11111TTt
tT1111111Tt
tTWWWOWWWTt
tTWWW'WWWTt
tTTWW'WWTTt
 tTTW'WTTt
  tTT'TTt
ENDMAP

NAME:   minmay_swamp_entry_wisps
TAGS:   swamp_entry transparent
WEIGHT: 2
KMONS:  O = will-o-the-wisp
KFEAT:  O = enter_swamp
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
W.W
.O.
W.W
ENDMAP

NAME:   minmay_swamp_entry_reptiles
TAGS:   swamp_entry transparent
WEIGHT: 5
MONS:   swamp drake / komodo dragon / hydra / swamp dragon
MONS:   water moccasin / iguana
KFEAT:  O = enter_swamp
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
2.1
.O.
2.2
ENDMAP

NAME:   minmay_swamp_entry_worms
TAGS:   swamp_entry
SUBST:  T = tww
KMONS:  w = swamp worm / tyrant leech / nothing w:89
KFEAT:  w = w / W
KFEAT:  O = enter_swamp
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
 ttttt
ttTTTtt
tTwwwTt
tTwOWW@
tTwwwTt
ttTTTtt
 ttttt
ENDMAP

NAME:   minmay_swamp_entry_eels
TAGS:   swamp_entry transparent
WEIGHT: 2
KMONS:  w = electric eel / nothing w:40
KFEAT:  w = w / W
KFEAT:  O = enter_swamp
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
  .....
 .......
...www...
..wwwww..
..wwOww..
..wwwWw..
...www...
 .......
  .....
ENDMAP

NAME:   nicolae_swamp_entry_splash_gauntlet
TAGS:   swamp_entry patrolling transparent
KMONS:  1 = swamp worm / bog body
KMONS:  2 = electric eel
KFEAT:  12 = w
KFEAT:  O = enter_swamp
SUBST:  D = twww
NSUBST: E = 1:tt. / *:., F = 1:tt. / *:., H = 1:tt. / *:.
NSUBST: J = 1:tt. / *:., K = 1:tt. / *:., L = 1:tt. / *:.
NSUBST: 1 = 1:1 / 2 = 1122w / *:.
MARKER: O = lua:fog_machine { pow_min = 8, pow_max = 12, delay = 25, \
                              size = 2, walk_dist = 1, spread_rate = 33 }
MAP
    ......tttttttt
  ...ttttttttttttttttt
 ..tttw1wDDDw1wDDDw1wtt
@.T...E.F.H.J.K.L...2tt
@.T...E.F.H.J.K.L..Owtt
 ..tttw1wDDDww1DDDw1wtt
  ...ttttttttttttttttt
    ......tttttttt
ENDMAP

NAME:    skrybe_swamp_entry_bodies
TAGS:    swamp_entry no_pool_fixup transparent
KMONS:   1 = patrolling bog body
KFEAT:   1 = W
KFEAT:   O = enter_swamp
NSUBST:  n = 1:1 / 1=W1 / *:W
NSUBST:  W = 4:t / *:W
MARKER:  O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
 .....
..WWW..
.WWnWW.
.WnOnW.
.WWnWW.
..WWW..
 .....
ENDMAP

NAME:   palyth_hydra_swamp_entry
TAGS:   swamp_entry no_monster_gen no_pool_fixup
MONS:   hydra, komodo dragon / tyrant leech, iguana / cane toad
KMONS:  s = swamp worm
KFEAT:  s = w / W
NSUBST: 1 = 1:1 / 1:1123 / *:., - = 1:2 / 1:233. / *:.
NSUBST: s = 1:s / 1 = sWww / * = wW, S = 1:s / *:.
KFEAT:  O = enter_swamp
KFEAT:  T = .
MARKER: T = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
 ttttttt@@tt
 twwWWWW...tt
 twwSSWSWstt
ttwSSSWSWtt
 ttwSWS---tt
  tttt---tt
 ttT....ttttt
ttt..ttttWsOt
 tt..tttWsWtt
tt--ttt-11ttt
 t--ssww-11t
 tWWWWsww.Ttt
 ttWWssw..tt
  t..Ttt...t
  tt.-111..tt
   ttt...ttt
     ttttt
ENDMAP

NAME:   nicolae_swamp_entry_spooky
TAGS:   swamp_entry patrolling transparent
WEIGHT: 5
KMONS:  s = spectral thing
KMONS:  OP = ghost crab
KFEAT:  O = enter_swamp
KFEAT:  t = mangrove
NSUBST: O = O / P...
SUBST:  - = t., s = s.., . = ....W
MARKER: O = lua:fog_machine { pow_min = 8, pow_max = 12, delay = 25, \
                              size = 2, walk_dist = 1, spread_rate= 33 }
MAP
      xxxxxx
    xxxttttxx
  xxxttt--tttt
xxxttt-s..s-ttt
xttt-.s.--.s..@
xtO..s.-tt-.s.@
xtO..s.-tt-.s.@
xttt-.s.--.s..@
xxxttt-s..s-ttt
  xxxttt--tttt
    xxxttttxx
      xxxxxx
ENDMAP

NAME:   alex1729_swamp_entry_worm_eleionoma
TAGS:   swamp_entry patrolling transparent
KMONS:  O = eleionoma
KFEAT:  O = enter_swamp
NSUBST: 1 = 1:1 / 1=1t / .
SUBST:  t = tt., . = .....WW
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
  t.t
 t.t.t
ttttt.t
.t.O.t.
t.t.ttt
 ttt.t
  t.t
ENDMAP

NAME:   mainiacjoe_swamp_entry_lozenge_pond
TAGS:   swamp_entry transparent no_monster_gen
KMONS:  M = swamp dragon / alligator / goliath frog
KMONS:  N = hornet / cane toad / swamp drake
KMONS:  P = plant
KFEAT:  MNP = shallow_water
KFEAT:  O = enter_swamp
NSUBST: Q = 5:P / *:W
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
  @....t
  .....ttt
  .ttttWWt
  tttPPPWtt
 tttQQQPt..
tttQQQQPt..
tttWWQQtt..
ttMWWWttt..
ttONtttt..@
ttttttt
tttttt
ENDMAP

NAME:   mainiacjoe_swamp_entry_angry_trees
TAGS:   swamp_entry transparent patrolling
MONS:   spriggan druid, bullfrog w:5 / hornet / cane toad
KFEAT:  O = enter_swamp
NSUBST: S = 1:1 / *:T, T = 1:1 / 2:2 / 1:2tt / 16:t / *:.
MARKER: O = lua:fog_machine { \
             pow_min = 8, pow_max = 12, delay = 25, \
             size = 2, walk_dist = 1, spread_rate= 33 }
MAP
tttttttttt@
ttTTTTttT.t
tTT..TTTT.t
tT.TT.TT.Tt
t.TTTT..TTt
t.TTTTTTTtt
tS..T..TTtt
tSSS.SS.SSt
tttSSSSS.St
ttttSO...St
ttttttttttt
ENDMAP

###############################################################################
#
# <<2>> Decorative vaults.
#
###############################################################################

default-depth: Swamp

###############################################################################
# A series of pools by Jude.
NAME:   swamp_pool_1_2
TAGS:   no_pool_fixup allow_dup extra luniq_pool opaque
WEIGHT: 1500
: if crawl.x_chance_in_y (2, 3) then
{{ smear_map({iterations=5, smear='w', onto='wwt"', boxy=false}) }}
: end
NSUBST: " = 1:@ / * = ttttw
MAP
   ""
 "www"
"wwwww"
wwwwwww"
"wwwww"
 "www"
  "w"
ENDMAP

NAME:   swamp_pool_3
TAGS:   no_pool_fixup allow_dup extra luniq_pool no_exits opaque
WEIGHT: 500
NSUBST: ' = 1:@ / * = Wt
SUBST:  " = wwt
MAP
"'ttt'
'""w"tt
twwww"t
'""wwtt
 ttw"t'
  'tt'
ENDMAP

NAME:   swamp_pool_4
TAGS:   no_pool_fixup allow_dup extra luniq_pool opaque
WEIGHT: 500
NSUBST: ' = 1:@ / *:"
SUBST:  " = ttttw
MAP
  t''tt
 ''www't
'twwwwwtt
 wwwww"tt
'twww"tt'
 ttwww"tt
  ttw'tt
ENDMAP

NAME:   swamp_pool_5
TAGS:   no_pool_fixup allow_dup extra luniq_pool no_exits opaque
WEIGHT: 500
KMONS:  1 = patrolling swamp drake
KFEAT:  1 = deep_water
SUBST:  " = ttttw
NSUBST: ' = 1:@ / * = ttW
MAP
 't't'
tt"""t'
t"w1w"tt
ww1ww"tt
t"w1t"t
tt"wwttt
 tt"t'
ENDMAP

###############################################################################
# Other Swamp decorative vaults

# Swamp's layout is chaotic and samey; fill it with decorative vaults.
NAME:   swamp_ruins_default
TAGS:   luniq_extradecor chance_extradecor allow_dup extra no_dump
PLACE:  Swamp, !Swamp:$
{{
  local n = 1
  hook("post_place", function()
    dgn.place_maps{tag="serial_swamp_ruin", count=n}
  end)
}}

NAME:   serial_swamp_ruin
TAGS:   luniq_serial luniq_extradecor chance_extradecor extra
PLACE:  Swamp, !Swamp:$
WEIGHT: 2
{{
  local n = 2 + crawl.random2(2)
  hook("post_place", function()
    dgn.place_maps{tag="serial_swamp_ruin", count=n}
  end)
}}

NAME:   swamp_other_decor
TAGS:   luniq_extradecor chance_extradecor allow_dup extra no_dump
PLACE:  Swamp, !Swamp:$
WEIGHT: 8
{{
  local n = 1
  hook("post_place", function()
    dgn.place_maps{tag="decor", count=n}
  end)
}}

#####
NAME: nicolae_swamp_fairy_circle
TAGS: transparent extra decor
SUBST: W = .W, w = wwwW, q = w
MONS: fungus / nothing w:7
MAP
    ...
  ..111..
 .11WWW11.
 .1WWwWW1.
.1WWwwwWW1.
.1WwwqwwW1.
.1WWwwwWW1.
 .1WWwWW1.
 .11WWW11.
  ..111..
    ...
ENDMAP

NAME: nicolae_swamp_treefoil
TAGS: transparent extra decor
SUBST: T = t.
KFEAT: . = . w:30 / W
MAP
tt       @     tt
 ttt....T.T...Tttt
  TtttT.TT..TtttT
  ..TttT...tttT.
   T..ttttttT..
    T..TTtT..T.
     @..TtT.T..
      T.TtT.TT.@
      ..TtT.TT
       .TtT.
        Tt.
        ttT
         t
ENDMAP

NAME: nicolae_swamp_feature_on_the_river_bank
TAGS: transparent no_pool_fixup decor
SUBST: T = t., W = .Ww t:5, Q = tw, f = .GTV U:5 C:5
MAP
     tttQ..@..Qttt
    ttQQQ.....QQQtt
tttttQQwW.....WwQQttttt
  ttQQwwW.....WwwQQtt
  ttQwwwW..f..WwwwQtt
   ttwwwW.....Wwwwtt
   @TwwwWW...WWwwwT@
   ..WwwwWWWWWwwwW..
   T..WwwwwwwwwwW..T
   tT..WwwwwwwwW..Tt
   ttT..WWWwWWW..Ttt
    ttT...WWW...Ttt
     ttT.......Ttt
      ttTTTTTTTtt
ENDMAP

NAME: nicolae_swamp_stair_fork
TAGS: extra decor
DEPTH: Swamp:2-, !Swamp:$
SHUFFLE: {}[]()
SUBST: W = w., T = t.
MAP
tttttt
t...TTtt
t.{...TTtt
t.......TTtt
tT..WWW...Ttt
tT..WwwW...Ttt
 tT.WwwwWW..Tt
 tT..WwwwwW..@
  tT..WwwwwW.
  tT..Wwwwww
   tT..Wwwww
   ttT..Www
    ttT..
     tt@
ENDMAP

NAME: nicolae_swamp_round_clearing
TAGS: transparent luniq_swclearing extra decor
SUBST: T = ttt.., E = .e, e = W.., t = ttttt.
MAP
    eeeee
   eEEEEEee
  eE.....EEe
 eE........Ee
eE..........Ee
eE...TTT.....Ee
eE...TtTT....Ee
eE...TTtT....Ee
eE....TTT...Ee
 eE........Ee
 eE........Ee
 eE.......Ee
  eE.....Ee
   eEEEEEe
    eeeee
ENDMAP

NAME: nicolae_swamp_rocky_clearing
TAGS: transparent luniq_swclearing extra decor
WEIGHT: 3
SUBST: X = xxxtt.., E = .e, e = W..
MAP
       eeeee
  eeeeeEEEEEeeeee
 eEEEEE....XEEEEEe
 eE.......XXX....Ee
eE...XXX...X......Ee
eE..XxxxX.....XX...Ee
eE..XxxxX....XxxX..Ee
eE...XXX......XX...Ee
 eE..............EEe
  eEEE...XX..EEEEee
   eeeEEEEEEEeeee
      eeeeeee
ENDMAP

NAME: nicolae_swamp_trees_clearing
TAGS: transparent luniq_swclearing extra decor
SUBST: w = Te, T = ttt.., E = .e, e = W..
MAP
      tttweeee
    wtttTwEEEEeee
  eeTtttT.....EEEe
eeEE.TttT........Ee
eE....TtT....T...Ee
eE....TtT...TtT...Ee
eE.....T....TtT...Ee
 eE........TttTT.Ee
  eE........TtttTEe
  eeEEE.....Ttttww
    eeeEEEEEwtttt
       eeeeewttt
ENDMAP

NAME:    hangedman_swamp_blocks
TAGS:    transparent extra no_pool_fixup decor
SHUFFLE: BC, DEF
SUBST:   A : ttw, B : tttww, D : w., E : w..., C = t, F = .
KMASK:   wW = no_monster_gen
MAP
  ...   ..    ..
 .WWW....WW....w.
.Wtttt..ttt.D.tAw
.WttttW.ttt.D.tt.
.WttttW.tBt......
 .ttttW.....ttt..
 ..WWW..FE..CttW.
 ......FE...tttW.
.Wttt.FE.WWW....
.WttB.E.Wtttt..
 .ttt...WttttW.
 .......WttttW.
 .DD.tCt.ttttW.
 ....ttt..WWW..
..tt.ttt......
.WAt..WW.
 .W.....
ENDMAP

NAME:    hangedman_swamp_diagram
TAGS:    transparent extra no_pool_fixup decor
MONS:    bush
SHUFFLE: AB, CD, EF, GH, IJ / IJ / JI
SUBST:   A : tww.., C : tww.., E : t., G = t.
SUBST:   I = wt1GT., BDF = t, H = .
KMASK:   wW = no_monster_gen
MAP
   tt.tt@tt@tt.tt
   tt.tt.tt.tt.tt
   tttWWttttWWttt
ttttttWWttttWWttt
tttttttA.tt.Btttt
..ttttttCWWDttttt
ttWWtttttWWtttttt
ttWWAttG.ttEtt
@.tt.Ct.I.Fttt
tttttWWt.JWttt
tttttWWtFWWttt
@.tt.DtEtttHtt
ttWWBttttttttt
ttWWtttttttttt
..ttttt
ttttttt
ttttttt
ENDMAP

NAME:   wheals_swamp_sinkhole
TAGS:   extra no_monster_gen decor
DEPTH:  Swamp:1-2
WEIGHT: 5
KFEAT: ^ = shaft trap
SUBST: u = Ww
KPROP: wW^ = no_tele_into
MAP
ttttttttt
twwwwwwwt
twuuuuuwt
twuWWWuwt
twuW^Wuwt
twuWWWuwt
twuuuuuwt
@wwwwwwwt
ttttttttt
ENDMAP

NAME: nicolae_swamp_triple_paths
TAGS: transparent extra decor
SUBST: T = t_
CLEAR: _
MAP
         Tt@tT
         Tt.tT
     @TTTTt.tTTTT@
    T..tttt.tttt..T
    TT....t.t....TT
     Tttt.t.t.tttT
    TTttt.t.t.tttTT
TTTTTtttt.t.t.ttttTTTTT
ttttttttt.t.t.ttttttttt
TTTTTtttt.t.t.ttttTTTTT
    TTttt.t.t.tttTT
     Tttt.t.t.tttT
    TT....t.t....TT
    T..tttt.tttt..T
     @TTTtt.ttTTT@
        TTt.tTT
         Tt@tT
ENDMAP

NAME: nicolae_swamp_godswood
TAGS: transparent extra decor
MAP
ttt     ttt
..ttttttt..
@...ttt...@
.tt..t..tt.
tttt...tttt
 tt..t..tt
 t.......t
 tt..w..tt
  t.www.t
 tt..w..tt
 t...C...t
 tt..t..tt
  tt...tt
   ttttt
ENDMAP

NAME: nicolae_swamp_orc_logging_accident
TAGS: decor extra no_monster_gen no_trap_gen
SUBST: F = 't, T = _t
NSUBST: p = 4:p / *:., ' = o / '
SUBST: . = ...b
KPROP: bp = bloody
SUBST: b = .
{{
dgn.delayed_decay_extra(_G, 'o', 'orc corpse', 'hand axe / broad axe, ' ..
   'leather armour / pair of gloves, mundane quarterstaff')
dgn.delayed_decay_extra(_G, 'p', 'orc corpse', 'hand axe / broad axe, ' ..
   'leather armour / pair of gloves')
}}
KITEM: w = mundane quarterstaff
KITEM: s = gold
KFEAT: 'o = W
CLEAR:  _
MAP
       TTTTT
     TTtttttTTT
    TttttFFttttTT
   TttttFF'FtttttT
  TtttttF'''FtttttT
 TtttttttF''FttttttT
 Ttt.p........p.ttttT
TTt..xxxx........tptT
Tttp.xwwx...xxmx...tT
Tt...xww+...xpsx...tT
Tt.p.xwwxp..+.sm.p.tT
Tt...xxxx...x.sx..ttT
Tt..p.......xxmx..tTT
Ttt.....p......p.ttT
TTtttt..........ttTT
 TTTTtttt@@ttttttTT
    TTTT     TTTTT
ENDMAP

NAME:    hangedman_swamp_cone
TAGS:    transparent extra no_pool_fixup decor
SHUFFLE: ABCDEF
SUBST:   AB : w, C : ww., D : w.., EF = ., G : ttw., H : wtt``, I : wtt``
CLEAR:   `
KMASK:   wW = no_monster_gen
MAP
t@......
t.ttttG.H
t.A.........
t....BttttG.H
t.tttttC.........
t.A.......DttttG.H
t....BttttttE.........
t.tttttC.......FttttG@
t.A.......Dtttttt.....
t....Btttttt......I
t.ttttt......I
t@......I
ENDMAP

NAME:    hangedman_swamp_lotus
TAGS:    transparent extra no_pool_fixup decor
MONS:    plant
SHUFFLE: ABCDE
SUBST:   AB : w, C : wwW1, D : wWW1, E : W1
KMASK:   wW = no_monster_gen
MAP
        ... ...
     .............
    ..ttttAAAtttt..
  .......ttttt.......
 ..ttttB.......Btttt..
@.....tttt.t.tttt.....@
.tttC....t...t....Cttt.
 ..ttttD.......Dtttt..
   ...tttttEttttt...
      ....ttt....
         .ttt.
         .ttt.
         .ttt.
          .t.
          .t.
           @
ENDMAP

NAME:    hangedman_swamp_pad
TAGS:    transparent extra no_pool_fixup decor
KMONS:   P = plant
KFEAT:   P = shallow_water
SHUFFLE: AB / AB / BA, CD / CD / DC, EF / EF / FE
SUBST:   A = t, B = ., C : Pt~.., D = ., E = t, F = P
KMASK:   ~ = no_monster_gen
SUBST:   ~ = w
MAP
   .www.www.
  .w...w...w.
 .w.B.t.t.B.w.
.w.A.ttttt.A.w.
w.B.t..C..t.B.w
w..t...D...t..w
w.tt..EFE..tt.w
.w.tCDFtFDCt.w.
w.tt..EFE..tt.w
w..t...D.wwt..w
w.B.t..C.wPw..w
.w.A.tttttwPw.w
 .w.B.t.t..wPw.
  .w...w....w.
   .www.wwww.
ENDMAP

#####
# The ruins of a town... all that is left are a few buildings
# and skeletons. These vaults are just to give swamp some variety...
# There are no monsters or loot placed here.
NAME:   evilmike_swamp_ruin_house_1
NSUBST: x = 1:+ / *:x
SUBST:  yx = xxxxx-, - = ----.
NSUBST: - = 1:d / *:-
: dgn.delayed_decay(_G, 'd', 'human skeleton')
: swamp_ruins(_G)
MAP
  ........
 ..........
..yxxyxxxy..
..x--y---x..
..x------x..
..yy-y---x..
..x--yy-yy..
..x--y---x..
..x--y---x..
..yxxyxxxy..
 ..........
  ........
ENDMAP

NAME:   evilmike_swamp_ruin_house_2
SUBST:  x = xxxxx-, - = ----.
: swamp_ruins(_G)
MAP
 ..
 .xxx
 .x----
..x-----
..x---
..x--- ---x
 .x-------x
 .xxxxxxxxx.
 ...........
     ...
ENDMAP

NAME:   evilmike_swamp_ruin_house_3
NSUBST: x = 1:+ / *:x
SUBST:  y = x, x = xxxxx-, - = ----.
NSUBST: - = 1:d / *:-
: dgn.delayed_decay(_G, 'd', 'human skeleton')
: swamp_ruins(_G)
MAP
    .....
   .......
  ..yxxxy..
 ..yy---yy..
..yy-----yy..
..x---y---x..
..x--yyy--x..
..x---y---x..
..yy-----yy..
 ..yy---yy..
  ..yxxxy..
   .......
    .....
ENDMAP

NAME:   evilmike_swamp_ruin_house_4
SUBST:  x = xxxxx-, - = ----.
: swamp_ruins(_G)
MAP
  .......
 ..xxxxx..
..xx---xx..
.xx-----x
.x--   --
.x---
.xx----
..xx--
 ..xx
  ...
ENDMAP

NAME:   evilmike_swamp_ruin_house_5
NSUBST: x = 1:+ / *:x
SUBST:  yx = xxxxx-, - = ----.
NSUBST: - = 2:d / *:-
: dgn.delayed_decay(_G, 'd', 'human skeleton')
: swamp_ruins(_G)
MAP
  ............
 ..............
..yxxxxxyxxxxy..
..x-----y----x..
..x-----y----x..
..x-----y----x..
..yyyy-yy---
..x---y----
..x---yxxxxx
..x---x...
..x---x...
..yxxxy..
 .......
  .....
ENDMAP

NAME:   evilmike_swamp_ruin_house_6
SUBST:  x = xxxxx-, - = ----.
: swamp_ruins(_G)
MAP
.....
.xxxxxxx x
.x-----
.x----   -     x
 x----
 xxxx  x      -x
  ...        --x
          x----x.
         .x----x.
         .x----x.
         .xxxxxx
         ...
ENDMAP

NAME:   evilmike_swamp_ruin_rubble_1
SUBST:  x = xxxx-, - = -----.
: swamp_ruins(_G)
MAP
   .......
  ......x..
 ..xx.......
...xx...xxx..
........x--..
...xx...xxx..
.............
.x-x..xx.....
.x-x..xx...x.
.xxx.........
 .....xxxx..
  ....xxxx.
   .......
ENDMAP

NAME:   evilmike_swamp_ruin_rubble_2
SUBST:  x = xxxx-, - = -----.
: swamp_ruins(_G)
MAP
   .........
  ..xx..xxx..
 ...xx..x--...
..x.....xxx....
.....x......
.........
.xxx...
.--x..
.x-x...
.xxx.....
.....xx.....
..x..xx..xxx...
 ....xx..--x..
  .......xxx.
   .........
ENDMAP

NAME:   evilmike_swamp_ruin_wall
SUBST:  x = xxxx-, - = -----.
: swamp_ruins(_G)
WEIGHT: 4
MAP
        x
       xx
       xx
      .xx.
     .-xx-.
    .--xx--.
   .---xx---.
xxxxxxxxxxxxxxx
 xxxxxxxxxxxxxxx
   .---xx---.
    .--xx--.
     .-xx-.
      .xx.
       xx
       xx
       x
ENDMAP

NAME:   hangedman_swamp_ruin_wall
SUBST:  x = xxxx-, - = -----.
: swamp_ruins(_G)
WEIGHT: 4
MAP
  x
.-xx-....
.-xx-----.
 -xxxxxx-.
.-xxxxxx-.
.-----xx-....
 ....-xx-----.
    .-xxxxxx-.
    .-xxxxxx-
    .-----xx-.
     ....-xx-.
           x
ENDMAP

NAME:    hangedman_swamp_ruin_hall
SHUFFLE: yYzZ / yYzZ / zZyY
NSUBST:  - = 2:d- / *:-, z = 1:+ / *:X, Z = 1:. / *:X
SUBST:   XyY = xxxx-, - = -----.
: swamp_ruins(_G)
WEIGHT:  2
MAP
  ....  ....
 ..XZZZZZZX..
 ..y------Y..
  .y-x--x-Y.
 ..y------Y..
 ..XzzzzzzX..
  ..........
  XXXX--XXXX
.XxxxX--XxxxX.
.XxxxX--XxxxX.
.XxxxX--XxxxX.
  XXXX--XXXX
  ..........
ENDMAP

NAME:    nicolae_swamp_ascending_descending
TAGS:    transparent decor no_pool_fixup no_descent
ORIENT:  float
: if you.depth() == 1 then
SUBST:   P = p, Q = q, R = r, S = s, Z = z
: elseif you.depth_fraction() < 1 then
SHUFFLE: PQRSZ/pqrsz
: end
SUBST:   Ps = t, Qr = ., Rq = W, Sp = w, Z = [{(, z = ]})
MAP
SSSSSSSSS
SRRRRRRRS
SRQQQQQRS
SRQPPPQRS
SRQQZPQRR
SRQPPPQRS
SRQQQQQRS
SRRRRRRRS
SSSSSSSSS
ENDMAP

NAME:    nicolae_swamp_ascending_descending_big
TAGS:    transparent decor no_pool_fixup no_descent
ORIENT:  float
SUBST:   D = PQ, E = QR, F = RS, _ = S_
: if you.depth() == 1 then
SUBST:   P = p, Q = q, R = r, S = s, Z = z
: elseif you.depth_fraction() < 1 then
SHUFFLE: PQRSZ/pqrsz
: end
SUBST:   Ps = t, Qr = ., Rq = W, Sp = w, Z = [{(, z = ]})
CLEAR:   _
MAP
___________________
_SSSSSSSSSSSSSSSSS_
_SFFFFFFFFFFFFFFFS_
_SFRRRRRRRRRRRRRFS_
_SFREEEEEEEEEEERFS_
_SFREQQQQQQQQQERFS_
_SFREQDDDDDDDQERFS_
_SFREQDPPPPPDQERFS_
_SFREQDPDDDPDQERFS_
_SFREQQQQZDPDQERRRR
_SFREQDPDDDPDQERFS_
_SFREQDPPPPPDQERFS_
_SFREQDDDDDDDQERFS_
_SFREQQQQQQQQQERFS_
_SFREEEEEEEEEEERFS_
_SFRRRRRRRRRRRRRFS_
_SFFFFFFFFFFFFFFFS_
_SSSSSSSSSSSSSSSSS_
___________________
ENDMAP

NAME:   nicolae_swamp_bean_lake
TAGS:   transparent extra decor
NSUBST: Q = 2=@ / _
SUBST:  D = tt., L : w., R : w., E = w., . = ...W
CLEAR:  _
MAP
Q..  ....Q
..........
.....EwwE...
 ..EwwwwwwE..Q
 ..wwwwwwwwR..
..EwwwwwwwwR..
..wwwwwwwwE..
..wwwwwwE...Dt
..EwwwwE...Dttt
Q..wwww....DDtt
  .EwwE.....Dt
  ..LL..DD...
   ....DtDD.Q
   Q.. tttt
        tt
ENDMAP

NAME:  nicolae_swamp_big_swirl
TAGS:  extra decor
SUBST: M = ..wt, D = t..
MAP
   tttttt   .@.ttt
 tttDDDDtttD...DDttt
 tDD....DDtD.....DDt
ttD......MwM......Dtt
tD...DD.MwwwM.DD...Dt
tD..DDDDMwwwMDDDD..Dt
tD..DDDDMwwwMDDDD..Dt
tD...DD.MwwwM.DD...Dt
ttD......MwM......Dtt
 tDD.....DtDD....DDt
 tttDD...DtttDDDDttt
   ttt.@.   tttttt
ENDMAP

NAME:   nicolae_swamp_oxbows
TAGS:   extra decor
NSUBST: D = w / ', E = w / ', F = w / ', H = w / ', J = w / ', K = w / '
NSUBST: L = w / ', M = w / ', N = w / ', O = w / ', P = w / ', Q = w / '
NSUBST: R = w / ', S = w / ', Z = w / ', a = w / ', p = w / ', q = w / '
NSUBST: r = w / ', s = w / ', y = w / ', z = w / ', - = w / ', " = w / '
NSUBST: ` = w / '
SUBST:  ' = W.
MAP
 ''  .@.   '''''
'ww'.....''awwwp''
'www'...'Zwwa'pwwq'
 'wwD'.'SwZ''.''qwr
  'Dw'.'wS'.....'rw
   'w'.'w'.......'w
  'Ew'.'wR'.....'sw
 'FwE'.'RwQ'...'-ws
 HwF'...'QwP'.'"w-'
 wH'.....'Pw'.'w"'
 w'.......'w'.'w'
 wJ'.....'Ow'.'w`'
 JwK''.''NwO'.'`ww'
 'KwwL'MwwN'...'www'
  ''LwwwM''.....'ww'
    '''''   .@.  ''
ENDMAP

NAME:    nicolae_swamp_small_spring
TAGS:    transparent extra decor
SHUFFLE: DEFHJKLMNOPRS / QQQ___QQ_____/ QQQ___Q___QQQ / __QQQQQ______ \
         / _____QQQ_____ / _____QQ___QQQ / __QQQ_Q_QQQ__ / ______QQQQQ__ \
         / ________QQQQQ / QQQQ___Q_____ / _QQQQQ_______ / _______QQQQQ_ \
         / _____Q___QQQQ / _QQQ_QQQ_QQQ_
SUBST:   DEFHJQ = w, KLMNOPRS = _, a = Ww, ' = .W
CLEAR:   _
MAP
    .'''''......
tttt.     ..wwa..
txxx.DEFHJ.wwwwa.
txwwwwKLMwwwwwwa.
txxx.NOPRS.wwwwa.
tttt.     ..wwa..
    .'''''......
ENDMAP

NAME:    nicolae_swamp_some_circles
TAGS:    transparent extra decor
# Shuffle guide:
# PQR - sides (Q) guaranteed traversible, center (P)/corners (R) whatever
# DER - sides/center guaranteed blocked, corners whatever
# PFH - corners guaranteed traversible, sides/center whatever
SHUFFLE: PQR/DER/PFH
SUBST:   P : twWpM., Q : WpM., D : tE, E : wt, R : twWM, F : twWpM., H : WM
KMONS:   pM = plant
KFEAT:   M = W
MAP
............
..RR....RR..
.RRRRQQRRRR.
.RRRRQQRRRR.
..RRPPPPRR..
..QQPPPPQQ..
..QQPPPPQQ..
..RRPPPPRR..
.RRRRQQRRRR.
.RRRRQQRRRR.
..RR....RR..
............
ENDMAP

NAME:    nicolae_swamp_tree_designs
TAGS:    transparent extra decor
SHUFFLE: JKLMNO / ------ / -----q / ----q- / ----qq / ---q-- / ---q-q / \
         ---qqq / --q--- / --q--q / --q-q- / --q-qq / --qq-- / --qq-q / \
         --qqqq / -q---- / -q---q / -q--q- / -q--qq / -q-q-- / -q-q-q / \
         -q-qqq / -qq--- / -qq--q / -qq-q- / -qq-qq / -qqqqq / q----- / \
         q----q / q---qq / q--q-- / q--q-q / q--qqq / q-q--- / q-q--q / \
         q-q-q- / q-q-qq / q-qq-- / q-qq-q / q-qqqq / qq---- / qq---q / \
         qq--q- / qq--qq / qq-q-- / qq-q-q / qq-qqq
SUBST:   JKLMNOq = t, - = ., D = t_, p : t., P : t.
CLEAR:   _
MAP
   DDDDDDDDD
 DDtttttttttDD
Dttt.......tttD
tt...JKLKJ...tt
...p.KMNMK.p...
@..P.LNONL.P..@
...p.KMNMK.p...
tt...JKLKJ...tt
Dttt.......tttD
 DDtttttttttDD
   DDDDDDDDD
ENDMAP

NAME:   nicolae_swamp_tree_isthmus
TAGS:   transparent extra decor
ORIENT: float
SUBST:  E = .Wtw
MAP
       wwwwwww
     wwwwwwwwwww
   wwwwEEEEEEwwwww
ttwwwEEE....EEwwwwwwwtt
.ttwEE..EEEE.Ewwwwwwtt.
..ttE.EEEwwE.EwwwEEtt..
@....EEwwwE.EwwwEE....@
..ttEEwwwE.EwwEEE.Ett..
.ttwwwwwwE.EEEE..EEwtt.
ttwwwwwwwEE....EEEwwwtt
     wwwwwEEEEEEwwww
       wwwwwwwwwww
         wwwwwww
ENDMAP

NAME:   nicolae_swamp_well_well_well
TAGS:   transparent extra decor
NSUBST: x = . / xxxx.
SUBST:  p = p..., x : xxxxt, . = ...W
KMONS:  p = plant
KFEAT:  p = . w:30 / W
MAP
 ........
..pppppp..
.ppxxxxpp.
.pxxwwxxp.
.pxwwwwxp.
.pxwwwwxp.
.pxxwwxxp.
.ppxxxxpp.
..pppppp..
 ........
ENDMAP

NAME:   nicolae_swamp_decorative_isthmus
TAGS:   no_pool_fixup transparent extra decor
ORIENT: float
SUBST:  _ = t_, ' = w:50 ., D = t:50 w, Q = W:50 w
CLEAR:  _
MAP
________________
tttttttttttttttt
tDD''QtDw..'Dttt
t'ww.wtQQWwww'Qt
wQQWwwwW.WwwwwW@
wW.WQQWQQQWQQWQ.
WQQQW.WwwQ...WQQ
.QwQ..QwwQQQQQww
@QwQQWQWwwwwwwDw
QQDt'wWt...'tDtt
tttttttttttttttt
________________
ENDMAP

# Just a simple gag vault: A few people got their boots stuck in the mud here
# and just left them behind. Sometimes generates bardings. I guess those get
# stuck in the mud too.
NAME:    nicolae_swamp_stuck_in_the_mud
TAGS:    transparent extra decor
SHUFFLE: Ss, Rr
SUBST:   D = W., E = t..., SR = @, sr = t, M = tttW
NSUBST:  W = 3=p / 3=pWW
KITEM:   p = pair of boots
KFEAT:   p = W
MAP
tttt    tttt
S.EttttttE.R
S..EtMMtE..R
tE.DDWWDD.Et
ttEDDWWDDEtt
tE.DDWWDD.Et
s..EtMMtE..r
s.EttttttE.r
tttt    tttt
ENDMAP

NAME:  nicolae_swamp_little_swirl
TAGS:  extra decor
SUBST: M = ..wt, D = t..
MAP
  ttttt
 ttDDDttD.@.Dt
ttD...MwM...Dtt
tD...MwwwM...Dt
tD...MwwwM...Dt
tD...MwwwM...Dt
ttD...MwM...Dtt
 tD.@.DttDDDtt
        ttttt
ENDMAP

NAME:    nicolae_swamp_long_stream
TAGS:    extra decor
ORIENT:  float
SHUFFLE: Pp/Qq/Rr
SUBST:   p = w, P = w_, QqRr = _
CLEAR:   _
MAP
tttt
t...@        RrrrrrR
t.wwww  RrrrrrrRRRrrrrR       ttt
t.wwwwRrrrR qqqqQ   RrrrrrR  ...t
t..wwwwwqqqQq Qqqqq   qqqrrRwww..t
tt... PppPqqq    QqqQQqQqqwwwwww.t
 ttt   PpppP  PppppqqqqppppPwww..t
         PppppppPPppppppP    @..tt
           PPPP    PPPP       ttt
ENDMAP

# http://i.imgur.com/H7nvQFo.jpg
NAME:   nicolae_swamp_little_tower
TAGS:   transparent extra no_pool_fixup decor
KMONS:  P = plant
NSUBST: X = - / x
SUBST:  T = t-, - = ....P, z = WWw, _ = __w
CLEAR: _
MAP
   ttt___
  ttTwwww___
  tTWwwwwwww___
  tTWwwwwwwwwww___
 tt.Wwwwzzzzzwwwzz
 t.Tzwwzx---xzwwz.
 .tzwwzx-xXx-xzzz.
.Ttwwwz-xx-xx-zz-.
@Ttwwwz-X---X-WW-@
.Ttwwwz-xx-xx-zz-.
 .tzwwzx-xXx-xzzz.
 t.Tzwwzx---xzwwz.
 tt.Wwwwzzzzzwwwzz
  tTWwwwwwwwwww___
  tTWwwwwwww___
  ttTwwww___
   ttt___
ENDMAP

NAME:  nicolae_swamp_dense_foliage
TAGS:  transparent extra decor
SUBST: _ = ._, - = t_, t = tttttt., . = ......W
CLEAR: _
MAP
         -_-
      -_-.t.---
   -_-.t.ttt.t.-
  -.t.ttt.t.t.t.-
 -.ttt.t.t.t.ttt_
 -t.t.t.t.ttt.t.-
 -.t.t.ttt.t.t.t.-
-.t.ttt.t.t.t.ttt_
_ttt.t.t.t.ttt.t.-
-.t.t.t.ttt.t.t.t.-
 -.t.ttt.t.t.t.ttt_
 _ttt.t.t.t.ttt.t.-
 -.t.t.t.ttt.t.t.-
  -.t.ttt.t.t.t.t-
  _ttt.t.t.t.ttt.-
  -.t.t.t.ttt.t.-
   -.t.ttt.t.-_-
    ---.t.-_-
       -_-
ENDMAP

NAME:  nicolae_swamp_very_dense_foliage
TAGS:  transparent extra decor
SUBST: _ = ._, - = t_, t = tttttt., . = ......W
CLEAR: _
MAP
       -_-
      tt.----_
   --tttt.--.-_-
   -.ttttt..tt.-----
   --.tt..ttttt.--.-
   --.t.tt.ttttt..tt
  --.t.tttt.tt..ttttt
  _.tt.tttt.t.tt.tttt-
 _-tttt.tt.t.tttt.tt._
 -.ttttt..tt.tttt.t.--
 --.tt..ttttt.tt.t.--
 --.t.tt.ttttt..tt.--
--.t.tttt.tt..ttttt.-
_.tt.tttt.t.tt.ttttt_
-tttt.tt.t.tttt.tt._
 ttttt..tt.tttt.t.--
  tt..ttttt.tt.t.--
  -.--.ttttt..tt.--
  -----.tt..ttttt.-
      -_-.--.ttttt-
        _----.tt
            -_-
ENDMAP

NAME:   nicolae_swamp_reclaimed_castle
TAGS:   transparent decor extra
DEPTH:  Swamp
NSUBST: D = + / x, E = + / x, F = + / x, H = + / x, J = + / x
NSUBST: K = + / x, L = + / x, M = + / x, N = + / x, O = + / x
SUBST:  ` = .:20 _, ' = .:50 _, + = +:20 ., x = x:110 _, . = .:70 W
CLEAR:  _
MAP
      ``xxxx    xxxx``
xxxx  `.+.'xxxxxx'.+.`  xxxx
x''xxxxxx'.J....L.'xxxxxx''x
x'.D....xxJx.``.xLxx....F.'x
xxDx.``..N...``...O..``.xFxx
 x'.````.x.``````.x.````.'x
 x'.````.x.``````.x.````.'x
xxEx.``..N...``...O..``.xHxx
x'.E....xxKx.``.xMxx....H.'x
x''xxxxxx'.K....M.'xxxxxx''x
xxxx  `.+.'xxxxxx'.+.`  xxxx
      ``xxxx    xxxx``
ENDMAP

###############################################################################
#
# <<3>> Monster-placing vaults.
#
###############################################################################

NAME:    hangedman_swamp_phenomena
TAGS:    no_pool_fixup no_monster_gen patrolling transparent
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = will-o-the-wisp
KMONS:   2 = bloated husk
KMONS:   3 = lightning spire
KFEAT:   12 = deep_water
KFEAT:   3 = shallow_water
KMASK:   3 = opaque
KPROP:   3 = no_tele_into
SHUFFLE: })
SUBST:   T = w:3 t, M = ~:4 t, W = W:3 w
SUBST:   . = .:3 W, } = }:20 >, ) = ):25 <>
CLEAR:   ~
MAP
  Mtttttt  @tt
 Mttttttttt..ttM
Mttt3t3wwtWT.wtt
Mtt2w1w}wwt.wwwtt
tttwww.w.w.wwwttt
ttwww.tWw)w1w2ttM
Mttw.TWt.w3t3tttM
 Mtt..tttttttttM
   tt@  ttttttt
ENDMAP

NAME:    hangedman_swamp_wriggling
TAGS:    no_pool_fixup no_monster_gen patrolling transparent
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = swamp worm / tyrant leech w:5 / nothing w:5
KMONS:   2 = tyrant leech
KFEAT:   12 = shallow_water
SHUFFLE: })
SUBST:   } = }>, ) = <)>, } = }:20 >, ) = ):25 <>, 4 = 23
MAP
      @tttttt
     WttwWwwtt
 ...tttW2..w1tt
 tw1tt.wWt.Wwtt
ttW.tt}.)tW.1tt
t1.WtW.wtt.Wtt
tww..2Wwtt1Wt
tt1wWwwtt....
 ttttttt@
ENDMAP

NAME:    hangedman_swamp_ravenous
TAGS:    no_pool_fixup no_monster_gen patrolling transparent
DEPTH:   Swamp, !Swamp:$
MONS:    bog body, necrophage, ghoul
KFEAT:   % = shallow_water / .
SUBST:   jl = t
SHUFFLE: jJ / lL, })
SUBST:   JLT = w:4 t, M = ~:4 t, } = }:20 >, ) = ):25 <>
CLEAR:   ~
: dgn.delayed_decay(_G, '%', 'any corpse')
MAP
 MMtttttt
MtttWTWttt
tt1W2w2W1tt
t1WlTWt.W1t
@%wlL}jJ.%t
 ..lL3jJw.
t%.lL)jJw%@
t1W.tWTt.1t
tt1W2w2W1tt
MtttWTWtttM
 MMtttttMM
ENDMAP

NAME:    hangedman_swamp_grove
TAGS:    no_pool_fixup no_monster_gen patrolling transparent
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = eleionoma
KMONS:   2 = spriggan druid
KMONS:   3 = bunyip / alligator
KFEAT:   12 = shallow_water
SHUFFLE: })
SUBST:   T = w:4 t, M = ~:4 t, } = }:20 >, ) = ):25 <>
CLEAR:   ~
MAP
 MtttttttttM
MttW3}2)3wttM
Mtw.ttWtt.WtM
Mtt..wtt..ttM
Mttt.1tW.tttt
Mtw.WwtwW.WTt
MtWtttwtttWtt
MtW.tT.Tt.1tM
Ttt..twW..ttM
 Ttt.www.ttM
 @WWwtTtwW@
ENDMAP

NAME:    hangedman_swamp_dais
TAGS:    no_pool_fixup no_monster_gen no_item_gen patrolling
DEPTH:   Swamp, Zot, !Zot:$
: if you.in_branch("Swamp") then
MONS:    swamp drake, hydra, swamp dragon
KMONS:   A = swamp dragon
KMONS:   B = green draconian
SUBST:   x = t
NSUBST:  1 = 1:2 / 1:3 / * = 1:80 23
: else
KMONS:   1 = green draconian
KMONS:   a = death drake
KMONS:   A = protean progenitor / green death
KMONS:   B = green draconian stormcaller
KMONS:   % = ghoul / bog body w:2
KMONS:   *d = golden dragon w:8 / seven-headed hydra w:5 / \
              eight-headed hydra w:5
KMONS:   | = large abomination / tentacled monstrosity w:5
SHUFFLE: A%| / ad*
: end
KITEM:   *| = % no_pickup w:2 / * no_pickup / | no_pickup
KFEAT:   aA = stone_arch
KFEAT:   B = shallow_water
KFEAT:   Z = zot trap
NSUBST:  < = 1:{ / 1:}
SHUFFLE: {} / {[ / {[ / }] / }]
MARKER:  A = lua:fog_machine { cloud_type = "translocational energy", \
                               pow_max = 2, delay_min = 100, delay_max = 150, \
                               size = 1, walk_dist = 1 }
MAP
         xxxxx
        @xWxWxxxx
       @@......<xx
    xxxxxxxxx...Zxx
   xxxxxcxxx..x1.<x
  xxxWWW.WWW.xGx..x
 xxxW1..W...W.x...xx
xxxW...twt...W..x.Wx
xxW1.t..t..t..Wxx.xx
xxW...t.w.t...Wxx.Wx
xxW.t..w|w..t.Wxx.xx
xc.Wwtw|A|wtwW.cx@@
xxW.t.%w|w..t.Wxx@
xxW...t%w.t...Wxx
xxW..t..t..t.1Wxx
xxxB...twt...Wxxx
 xxxB...W..1Wxxx
  xxxWWW.WWWxxx
   xxxxxcxxxxx
    xxxxxxxxx
ENDMAP

NAME:    st_shrine_of_shade
DEPTH:   Swamp, !Swamp:$
MONS:    bog body w:20 / necrophage w:5 / ghoul w:5 / nothing w:25, ghost crab
KMONS:   P = withered plant
SUBST:   p = Pp, p = PP., o = P..
MAP
   oo.oooo
  pppp.pppp
 ppccc.cccpp
opccppo.occpo
opcp2c1c.ocpo
 pc.c111cocp
....11c11...@
 pcoc111cocp
opco.c1c2ocpo
opccoo.ppccpo
 ppccc.cccpp
  ppppo.ppp
   ooo.ooo
ENDMAP

NAME:    st_swamp_mini
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = hydra
KMONS:   2 = swamp dragon
KFEAT:   12 = shallow_water
SUBST:   . = wW., 0:34, 3=112..., 4=122...
MAP
.......
.cc.cc.
.c000c.
..000..
.c000c.
.cc.cc.
.......
ENDMAP

NAME:    st_swamp_ruins_1
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = hydra
KMONS:   2 = swamp dragon
KMONS:   3 = swamp drake
KFEAT:   123 = shallow_water
SUBST:   . = wwwWWW...t, c = c:17 .:1 t:1 w:1 W:1, C:GC., G=GG., C=cc.
SUBST:   0:45, 4=1112...., 5=1222...., 6=3.
MAP
...C.C.C.C...
.cc...6...cc.
.ccccc.ccccc.
C.cc.....cc.C
..c.0...0.c..
C.c...0...c.C
.6...000...6.
C.c...0...c.C
..c.0...0.c..
C.cc.....cc.C
.ccccc.ccccc.
.cc...6...cc.
...C.C.C.C...
ENDMAP

NAME:    st_swamp_ruins_2
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = hydra
KMONS:   2 = swamp dragon
KMONS:   3 = swamp drake
KFEAT:   123 = shallow_water
SUBST:   . = wwwWWW...t, c = c:15 .:1 t:1 w:1 W:1, C=c.
SUBST:   0:45, 4=11123....., 5=12223.....
MAP
    ......
  ..........
 ...ccCCcc...
 ..cc....cc..
..cc..00..cc..
..c..0cc0..c..
0.C..cccc0.C.0
..C.0cccc..C..
..c..0cc0..c..
..cc..00..cc..
 ..cc....cc..
 ...ccCCcc...
  ..........
    ......
ENDMAP

NAME:    st_swamp_ruins_3
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = hydra
KMONS:   2 = swamp dragon
KMONS:   3 = swamp drake
KFEAT:   123 = shallow_water
SHUFFLE: cC
SUBST:   . = wwwWWW...t, c = c:12 .:1 t:1 w:1 W:1, C:GC., G=GG., C=cc.
SUBST:   0:45, 4=1112...., 5=1222...., 6=3., y = wW.tt
MAP
    yyyyyyyyyyyyy
 ...................
..ccccccccccccccccc..
...C.C.C.C0C.C.C.C...
.0..0.0.0...0.0.0..0.
...C.C.C.C0C.C.C.C...
..ccccccccccccccccc..
 ...................
    yyyyyyyyyyyyy
ENDMAP

NAME:    st_swamp_ruins_4
DEPTH:   Swamp, !Swamp:$
KMONS:   1 = hydra
KMONS:   2 = swamp dragon
KMONS:   3 = swamp drake
KFEAT:   123 = shallow_water
SHUFFLE: cC
SUBST:   . = wwwWWW...t, c = c:12 .:1 t:1 w:1 W:1, C=c., *=**%
SUBST:   0:45, 4=112...., 5=122...., 6=3., y = wwWWW.tt
MAP
         yyyyy
    yyyyy.....yyyyy
  ...................
  .ccCCcccccccccCCcc.
 y.c......000......c.y
 y.C.6....'''....6.C.y
 y.C...............C.y
 y.c...cccCCCccc...c.y
 y.c...c*.....*c...c.y
y..c...c...0...c...c..y
y..c0'.C..0.0..C.'0c..y
y..c0'.C.0.3.0.C.'0c..y
y..c0'.C..0.0..C.'0c..y
y..c...c...0...c...c..y
 y.c...c*.....*c...c.y
 y.c...cccCCCccc...c.y
 y.C...............C.y
 y.C.6....'''....6.C.y
 y.c......000......c.y
  .ccCCcccccccccCCcc.
  ...................
    yyyyy.....yyyyy
         yyyyy
ENDMAP

NAME:    grunt_hermit_hut
MONS:    orc high priest / orc sorcerer / arcanist w:5 / \
         occultist w:5 / necromancer band
SHUFFLE: +d / +d / d+
SUBST:   w = w t:10, d = c, c = ccx
KPROP:   w = no_tele_into
MAP
    wwww
  wwwwwwww
 wwwwwwwwww
 www....www
www.cdcc.www
www.c1%c.www
www.c%.c.www
www.cc+c.www
 www....www
 wwww.wwwww
  www.wwww
    w.@w
ENDMAP

NAME:   grunt_witch_cave
MONS:   fenstrider witch
MONS:   hydra
KITEM:  K = potion of degeneration ident:type w:20 / \
            potion of mutation ident:type
KFEAT:  K = shallow_water
NSUBST: : = 5:W / *:.
SUBST:  w = w:10 t:10
KPROP:  w = no_tele_into
MARKER: K = lua:fog_machine { cloud_type="black smoke", \
                              pow_min = 10, pow_max = 30, delay = 50, \
                              size = 1, walk_dist = 2, spread_rate = 25 }
MARKER: L = lua:fog_machine { cloud_type="flame", \
                              pow_min = 100, pow_max = 100, delay = 100, \
                              size = 1, excl_rad = 0, walk_dist = 0 }
{{
  dgn.delayed_decay(_G, 'd',
                    'human skeleton / elf skeleton / dwarf skeleton' ..
                    ' / orc skeleton')
}}
MAP
     wwwwww
    wwxxxxww
  wwxxx**xxxw
 wwxxd%%%%Wxww
wwxx::::vvvxxw
wwx:d::1:KvLxw
wxx::2::vvvdxw
wxW:::::::2:xww
wxx::::2::::dxw
wxW::::::::xxxw
wxxd:::::xxxww
wwxxx:.:xxww
 wwwxx.xxw
   wwx.xww
    wd.dww
   ww.@.www
ENDMAP

NAME:  grunt_lady_of_the_lake
KITEM: O = great sword good_item w:20 / \
           double sword good_item w:2 / \
           triple sword good_item w:1
KFEAT: K = deep_water
SUBST: w = w:50 t:10, W = w
KPROP: wK = no_tele_into
{{
  local cf = TriggerableFunction:new{
      func="callback.grunt_lady_of_the_lake_trigger",
      repeated=true,
      data={triggered = false} }
  cf:add_triggerer(DgnTriggerer:new{type="player_move"})
  lua_marker("O", cf)
  lua_marker(":", cf)
  lua_marker("K", props_marker { merfolk_avatar_spawn = 1 })
}}
MAP
    wwwww
  wwwwwwwww
 wwwwwKwwwww
 wwwwwWwwwww
wwwwwwWwwwwww
wwwwWW:WWwwww
wwwwW:O:Wwwww
wwwwwW:Wwwwww
wwwww.wwwwwww
 wwwww.wwwww
 wwwww.wwwww
  wwwww.www
    ww@ww
ENDMAP

NAME:   grunt_ruined_hall
MONS:   swamp dragon, hydra, patrolling bog body
NSUBST: : = 1:1 / 2:2 / 3:3 / 6:0 / *:-
SUBST:  - = .W
SUBST:  C = c:20 . W
SUBST:  + = +.
SUBST:  G = Gg
KITEM:  g = stone w:40 / large rock q:1
KFEAT:  g = floor
KFEAT:  _ = altar_yredelemnul / altar_kikubaaqudgha
MAP
  --------------------
 -CCCCCCCCCCcccCCCcCCc-
 -C%%C::::::::::::C%%c-
 -C%:C::::::::::::C:%c-
 -CC+C::G:::G:::G:C+cc-
-.+::::::::::::::::::c-
@.+:::::::::_::::::1:c-
-.+::::::::::::::::::c-
 -cC+c::G:::G:::G:c+cc-
 -c%:c::::::::::::c:*c-
 -c%%c::::::::::::c**c-
 -cccccccccccccccccccc-
  --------------------
ENDMAP

NAME:  nicolae_swamp_necromancer_hut
MONS:  necromancer
KMONS: z = alligator zombie / swamp dragon zombie / hydra zombie / \
           bunyip zombie / bog body w:5 / bloated husk w:5 / \
           alligator simulacrum w:5 / swamp dragon simulacrum w:5 / \
           hydra simulacrum w:5 / bunyip simulacrum w:5
KFEAT: z = W
SUBST: m = xm, D = t_, q = tW., r = W., W = zW
CLEAR: _
MAP
  DDDDDDDDD
 DDtttttttDD
DDttxxxxxttDD
Dtqqx...xqqtD
Dtqrm.1.mrqtD
Dqqrx...xrqqD
 qrrxx+xxrrq
  rr.z.z.rr
    .....
     @@@
ENDMAP

NAME:   nicolae_swamp_alligator_family
TAGS:   layout_swamp
KMONS:  1 = alligator
KFEAT:  1@ = W
SUBST:  1 = 11W
NSUBST: D = 2=W / t
MAP
   tttt
  tt11tt
 tt1WW1tt
tDWWWWWWDt
tWDDWWDDWt
 WWWDDWWW
   @@@@
ENDMAP

NAME:  nicolae_swamp_snake_nest
TAGS:  transparent no_monster_gen
KMONS: 1 = anaconda
KMONS: 2 = water moccasin / black mamba / nothing w:20
SUBST: D = ..ttw
SUBST: . = .:20 2:3
KFEAT: .12 = . / W w:2
MAP
       t.@.tttt
tttt   tt....Dt
tDDt    tDD...Dt
@.DttttttD....Dt
.....DDD.....Dtt
tt........DDDtt
tttt.DwD..Dtt
ttD...wwD..Dt
tD.........Dtt
tD.1...tD...Dtt
tDD...ttDD...Dt
ttDDDDtttDD...t
 tttttt tttD...
          ttt.@
ENDMAP

NAME:    nicolae_swamp_baby_hydras
SHUFFLE: abcd
SUBST:   a:@, bcd:t, D = .Wt, . = ...W
KMONS:   1 = 1-headed hydra
KMONS:   2 = 2-headed hydra / 3-headed hydra / 4-headed hydra
KFEAT:   12 = . / W
MAP
             taat
            tt..b
  tttt     ttD..b
 ttDDtttttttD.1.t
ttD..DtDDttD...Dt
tD....1..DDD..DDt
tD2...DD...1..DDt
ttD..DttDDDDD..Dt
 ttDDtttttttD...t
  tttt    ttD1.tt
         tt....d
         t...t.d
         tccttt
ENDMAP

NAME: lightli_tree_ring
KPROP: * = no_tele_into
MAP
tttttttttt
tttttttttt
ttwwwwwwtt
ttwwwwwwtt
ttww**wwtt
ttwwwwwwtt
ttwwwwwwtt
ttt.tt.ttt
tttt..tttt
tttt@@tttt
ENDMAP

NAME: nicolae_swamp_dragon_and_kin
TAGS: patrolling transparent
SUBST: T = t., B = tt_
NSUBST: d = D / d
KMONS: D = swamp dragon
KMONS: d = swamp drake w:12 / nothing w:3
MAP
        BBBBBB
      .TtttttBB
   ....T..T.tttt
  BTT....T.T.TTt
 BBtttttT.TT....
BBtttTTTT.TttT..
BttTTT.T.TTTttT.
BtTT.T..TT.TTtTT
BtT.TdT..T..TttB
BtTd.T..T.TTTTtB
BtTT.T.T.Td.dTtB
BttT..T.T.T.TTtB
BttTTdT..dTTTttB
BBttTTTTTTTtttBB
 BBtttttttttBBB
  BBBBBBBBBBB
ENDMAP

NAME: nicolae_swamp_hydra_murder_den
TAGS: no_monster_gen
: local heads = crawl.roll_dice(2, 3) + 7
KPROP: ' = no_tele_into
SUBST: Z = T_
NSUBST: ' = 1:h / 1:g / 2:c / 1:c' / 2:% / 2:%' / 5:p / 4:p' / *:'
SUBST: ' = ....b
KPROP: bc = bloody
SUBST: b = ., . = ..W
KFEAT: T = t
KMONS: p = plant
: kmons( "h = " .. heads .. "-headed hydra patrolling" )
KITEM: g = any weapon good_item / any armour good_item / any jewellery good_item
: dgn.delayed_decay(_G, 'c', 'human corpse')
CLEAR: _
MAP
   ZZZZZZ
  ZZttttZZ
 ZZtt''tt.Z
ZZtt''''tt.
Ztt''''''t.
Zt'''''''p..
Zt'''''''t.@
Zt'''''''t..
Zt''''''tt.
Ztt'''''t..
ZZttt''ttZ
 ZZZttttZZ
   ZZZZZZ
ENDMAP

NAME:    hangedman_swamp_double_dragon
TAGS:    no_monster_gen patrolling
DEPTH:   Swamp:2-, !Swamp:$
MONS:    fire dragon, will-o-the-wisp
MONS:    ice dragon, bog body / hydra simulacrum w:8
MONS:    swamp dragon, alligator / hydra w:8
ITEM:    any good_item
SUBST:   $ = $%%*, * = **d, T = tww
SHUFFLE: 12 / 12 / 34 / 34 / 56 / 56 / 56
NSUBST:  2 = 1 : 2:9 .:1 / *:2, 4 = 1 : 4:9 .:1 / *:4, 6 = 1 : 6:9 .:1 / *:6
NSUBST:  1 = 1 : 1:9 2:1 / *:1, 3 = 1 : 3:9 4:1 / *:3, 5 = 1 : 5:9 6:1 / *:5
MAP
   ttttt             ttttt
  tttt.tt           tt.tttt
 ttt$t..tt         tt.*t3ttt
ttt1*%..ttt       ttt..%.tttt
tt$*1.w..tt       tt.W..$.3tt
ttt%..w..tt       tt..T..%ttt
t...wwT..2t       t4...T..*.t
tt.......tt       ttW...W..tt
tttt....t.Wt     t.WtW...tttt
 ttttt2t.t.W     ..tWt4ttttt
    ttttW2@       @.4tttt
        tW         .t
ENDMAP

NAME:    cheibrodos_swamp_mausoleum
TAGS:    no_monster_gen no_pool_fixup
DEPTH:   Swamp:2-, !Swamp:$
ORIENT:  south
WEIGHT:  5
MONS:    spectral hydra / spectral swamp dragon, death drake, necromancer
MONS:    bog body w:8 / w:5 wraith / w:3 phantasmal warrior / w:1 freezing wraith
KMONS:   5 = bog body / spriggan zombie w:4 / troll zombie w:4
KMONS:   6 = large abomination w:2 / swamp worm zombie / goliath frog zombie / \
             tyrant leech zombie w:6 / alligator zombie w:6
KMONS:   q = withered plant
KFEAT:   56 = W
KPROP:   ~ = no_tele_into
SUBST:   " = 6:15 W
SHUFFLE: DE
SUBST:   D = W, E = t, W = W:299 .:1, + = ++W, - = +, ~ = W
MARKER:  V = lua:fog_machine { cloud_type = "thin mist", pow_min = 1, \
             pow_max = 3, delay = 20, start_clouds = 1, size_min = 2, \
             size_max = 4, spread_rate = -1 }
SUBST:   u = V
MAP
 tttttt   tttttttttt
 ttt..tt t~tt.tt.t.tttt
txxx.Wtttttt.4..u.WWWttt  xxxxxx
xxx.WWW..t..4.W..WW6tttttxxx%%xxx
x"+.W-W...u..W6WW6WWWWuttx5+..+5x
xxxWWxW6W...tttWWW6WWWWWDDxx..xxx
x"+WWW6WtWttWxxxxEEEWWW6WDW+..+5x
xxxWWxWxtWWtxxtWtWWEEW..Wxxx..xxx
x"WWW+WxWWWxxDWWWWt.Ex..Wx"+.W+"x
xxxWWxxxWttx.DDDW..6tx.WWxxxWWxxxtt
xxx.WWxxxxxx..WDDW6.txWWWxxxWWxxxWtW
x....WWWW..+...WDDW.xxtWtt6.WWWWtWW@
x......W...+...WuDWWxxxttWW6.WWWWW..
xxx..xxxxxxx..WW.tDWWxxxxxxxWWxxWtW@
xxx..xxxWWxxWWWt..DDEEtttxxxWWxxxtt
x5+..+5xWWWxxxW....xxEEWW.4-WW-"xt~
xxx..xxxq..qxx.....xxtW4..xxWWxxxt
x5+..-.q..|..xx...xxttW.4WWWWWW"x
xxx..xxx$..qq2x+++xttttWWWWWWWxxx
x5+..+5xq$$xxxx...xxxxttWxW..W+"x
xxx%%xxxxxxxx%.....%xxxxxxxx..xxx
 xxxxxxt~xx%..1.1.1..%xxt~xxxxxx
   ttttt~xV....131....Vx~tt~ttt
      tttxx%....1....%xx~ttt
       tttxxx*.....*xxx~~tt
        tttxxxx|W|xxxx~ttt
         ttt~xxxxxxx~~tt
          tttt~~t~~tttt
            ttttttttt
ENDMAP

NAME:   cheibrodos_swamp_witchery
TAGS:   no_monster_gen
ITEM:   book of hexes / fen folio
MONS:   fenstrider witch
SUBST:  ' = %:20 d:1
NSUBST: 1 = 1 / .
MAP
        WWW
       WxxxW
      Wxx'xxW
      Wx.1'xW
    WWWx+.xxW
  WWWW..xmxW
 Wxxx..WWWWW
Wxx.+xW..WW
Wx'1.mWWW@
Wxx'xxWWW
 WxxxWW
  WWW
ENDMAP

NAME:  cheibrodos_swamp_pet_leeches
TAGS:  no_monster_gen
MONS:  vampire mage, tyrant leech
KPROP: .21 = bloody / w:30 nothing
KPROP: e = bloody
: dgn.delayed_decay(_G, 'e', 'human corpse')
MAP
 ttttt
tt''ett
txx+xxt
tx.1.xt
tx2.2xt
tx...xt
txx+xxt
 tt@tt
ENDMAP

NAME:  cheibrodos_swamp_minitomb
TAGS:  no_monster_gen
KITEM: - = w:5 gold / w:2 any jewellery / w:20 nothing
KMONS: - = bog body w:20 / troll zombie / troll skeleton / bloated husk w:5
SUBST: ' = .W
MAP
WWxxxxxxxxx
txx-x-x-x-xx
Wtt+x+x+x+xx
WWWWWW'...xx
@WWWWWW'..xx
WWWWx+x+x+xx
 Wttx-x-x-xx
 txxxxxxxxx
ENDMAP

####
NAME:    nicolae_swamp_spriggan_camp
KMONS:   D = patrolling spriggan rider
KMONS:   SGHI = spriggan / nothing
KMONS:   F = spriggan druid
SHUFFLE: Ff/Gg/Hh/Ii
SUBST:   ghi = .
MAP
       ttttt
  ttttttgggt
 @.ttt.t.G.t
@......tt.tt
t...D..S...t
tttt.......tt
 ttt.S..S...t
 tt......tt.t
tttt.tt.tt..t
ti...t...tH.t
tiI..t.F.thht
ti...t...tttt
tttttttttt
ENDMAP

NAME:    nicolae_swamp_oklob_treasure_island
TAGS:    no_pool_fixup
DEPTH:   Swamp, !Swamp:$
KMONS:   o = oklob plant
KFEAT:   ^ = permanent teleport trap
SHUFFLE: Aa/Bb/Cc/Dd/Ee/Ff/Gg/Hh/Ii, %*$
NSUBST:  ' = ^ / o / '
SUBST:   abcde = w, fghi = t, ABCDE = .wW, FGHI = .t, ' = ':100 $$$%%
SUBST:   _ = .._, . = ......W
CLEAR:   _
MAP
       _____
     __.....__
    _........._
   _...GGFFF..._
  _...GggfffF..._
 _...GggGFFffF..._
 _..GggG'''FeeE.._
_..AaaA'''''EeeE.._
_..AaA'''''''EeE.._
_..AaA'''''''EeE.._
_..AaA'''''''DdD.._
_..BbbB'''''DddD.._
 _..BbbB'''DddD.._
 _...BbbCCCcdD..._
  _...BbccccC..._
   _...BCCCC..._
    _........._
     __.....__
       _____
ENDMAP

NAME:   cheibrodos_swamp_heart_of_darkness
DEPTH:  Swamp:2-, !Swamp:$
TAGS:   no_monster_gen
ORIENT: northeast
MONS:   goliath frog / vampire mosquito band / hydra / tyrant leech
MONS:   spriggan rider, spriggan berserker, deep elf knight, spriggan druid
KMONS:  P = plant
NSUBST: 25 = 1:.
KFEAT:  P = W
MAP
                              ttttttttt
                              ttttttttt
                          ttttttttttttt
                        ttttttwwttttttt
                      tttttwwWWWWwttttt
          ttt     tttttttwwWWW222WWWttt
   ttttttttttt  tttttttwWWW.........5tt
  ttttttttWWWttttttttwwWW.tt......c+ctt
 ttt.wwWPWwwWWttWwwwwWW1ttttt.....c*ctt
ttt.wWWttt.WwWWWwWWWWWttttttcccc..ccctt
tttwWttttttt1www.tttttttt  tc3.+.cccttt
 ttwWttt  tttttttttttt     tc|4c.c%cttt
  .Wtt       tttt          tcccc5+%ctt
  @.                         ttttccct
                                 ttt
ENDMAP

NAME:   cheibrodos_swamp_tower_of_moss
TAGS:   ruin
DEPTH:  Swamp, !Swamp:$
ORIENT: float
MONS:   toadstool
KMONS:  2 = thorn hunter
KFEAT:  2 = W
KFEAT:  - = .
SUBST:  " = ---Wtt1, t = ttt-, - = -:50 .
TILE:   x = wall_brick_vines
FTILE:  -Wt1 = floor_sandstone
MAP
   .........
  ..xxxxxxx..
 ..xx"-"--xx..
..xx"-"""-"xx..
.xx""-t"t-""xx.
.x"--W"W"W--"x.
.x-"t"WWW"t"--@
.x"""WW2WW"""x.
.x-"t"WWW"t"-x.
.x"--W"W"W--"x.
.xx""-t"t-""xx.
..xx"-"""-"xx..
 ..xx"-"-"xx..
  ..xxxxxxx..
   .........
ENDMAP

#### An ancient temple to kiku revived by a powerful spellcaster.
NAME:  beargit_kiku_chapel
TAGS:  no_monster_gen
DEPTH: Swamp:2-
MONS:  bog body w:20 / bunyip zombie / bunyip skeleton / death scarab w:1
MONS:  patrolling spriggan berserker simulacrum w:20 / \
       patrolling spriggan defender simulacrum / \
       patrolling spriggan air mage simulacrum / \
       juggernaut zombie w:5 / caustic shrike zombie w:1
MONS:  patrolling necromancer / \
       patrolling fenstrider_witch ; quick blade ego:pain
MONS:  ghost crab / death drake w:1
KMONS: 5 = bunyip zombie / bunyip skeleton / swamp dragon skeleton / \
           hornet zombie / death scarab w:1
ITEM:  randbook disc:necromancy slevels:10 / \
       randbook disc:necromancy slevels:12 / randbook disc:necromancy slevels:16
KFEAT: J = altar_kikubaaqudgha
KFEAT: 5 = W
SUBST: z = cccccccccccc...WWWwwt
SUBST: F : VVVVY
FTILE: . = floor_sandstone
{{
dgn.delayed_decay_extra(_G, 'K', 'frost giant corpse / ' ..
                                  'frost giant skeleton / ' ..
                                  'shadow dragon corpse / ' ..
                                  'shadow dragon skeleton')
}}
MAP
.zzzzzcccccc
.zWz5wc111dcc
.zWWWW+WW.KFc
@A.W45+2WW3Jc
.z.WW5+..WKFc
.zzzz.c111$cc
....zzcccccc
ENDMAP

NAME:   nicolae_swamp_phyte_club
TAGS:   transparent no_monster_gen no_item_gen
DEPTH:  Swamp:2-, !Swamp:$
ORIENT: float
KMONS:  Hh = thorn hunter
KMONS:  Mm = shambling mangrove
KMONS:  Oo = oklob plant / oklob sapling w:2
KMONS:  F = fungus
KMONS:  . = plant w:5 / fungus w:5 / nothing w:100
KMONS:  - = plant / fungus / nothing w:80
KITEM:  h^m = % / * w:5
KITEM:  o = * / | w:5
KITEM:  b = Fen Folio ident:type
NSUBST: M = M / H / 2=hmm / 2=A / ., O = O / o / Hh / h^ / 1=b
SUBST:  T = t., Z = ttW, _ = t_, v = t--
KFEAT:  ^, = .
CLEAR:  _
MAP
              @
              ,
     _______tT,Tt_______
    __tttttttT,Tttttttt__
    _ttO--tttT,Tttt--Ott_
    _t----v.ttFtt.v----t_
    _t--v.....t.....v--t_
    _t--.M..ZZZZZ..M.--t_
    _tv...ZZ.....ZZ...vt_
   ttt...Z.........Z...ttt
@ TTTtt.Z....WWW....Z.ttTTT @
 ,,,,,t.Z..WW...WW..Z.t,,,,,
  TTTtFZ...W..M..W...ZFtTTT
  _ttt.Z..W.MtttM.W..Z.ttt_
 __t...Z..W..ttt..W..Z...t__
 _ttv..Z..W..ttt..W..Z..vtt_
__t--..Z...W.M.M.W...Z..--t__
_tt--.M.Z..WW...WW..Z.M.--tt_
_tO-v...Z....WWW....Z...v-Ot_
_tt---...Z.........Z...---tt_
__ttt-v...ZZ.....ZZ...v-ttt__
 ___tttttF..ZZZZZ..Fttttt___
   __ttT,t....M....t,Ttt__
     tT,Ttt.......ttT,Tt
     T,Tttt.v...v.tttT,T
     ,Tt__tt--v--tt__tT,
    @    __t-----t__    @
          _tttOttt_
          ___ttt___
            _____
ENDMAP

NAME:   cheibrodos_swamp_monstrosity
TAGS:   no_monster_gen no_pool_fixup
ORIENT: float
MONS:   tentacled monstrosity
NSUBST: " = 1=*| / 3=%$, - = ..twW
SUBST:  ' = t:20 W
MAP
   ''''''''
  'tttttttt'
 'ttttW--ttt'
 'tttWWWWW-tt
'tttcc+cc-W-t'
'ttcc...ccW-t'
'ttc"..."c-Wt'
tttc".1."c-Wt'
tttcc"""ccW-t'
@.W-ccncc-W-t'
@..WWWWW-W-tt'
tttt----WWtt'
 tttttttttt'
  '''''''''
ENDMAP

NAME:   nzn_swamp_weyward_sisters
TAGS:   no_pool_fixup
DEPTH:  Swamp:2-
MONS:   patrolling fenstrider witch, fungus, human att:good_neutral
KITEM:  f = any good_item no_pickup
KFEAT:  n = iron_grate
SUBST:  e = ddee. *:5
SUBST:  2 = 222. *:1
NSUBST: 3 = 3 / f / .
MARKER: O = lua:fog_machine {   cloud_type = "flame", pow_min = 10, \
                                pow_max = 10, delay = 10, size = 1, \
                                walk_dist = 0, excl_rad = 0 }
: dgn.delayed_decay(_G, 'd', 'human corpse')
: dgn.delayed_decay(_G, 'e', 'human skeleton')
MAP
    xxxxx@t
    xxOxxWt
    xeeexWt
    x.1.xWt
    xxAxxWt
     t.tWWt
tttttt.Wwxxxxx
@WWWWwW.tx.n3x
xxxxxW.W.A1=3x
x222x.WWwx.n3x
x21.AWtWwxxxxx
x222xtttWWWWW@
xxxxx  ttttttt
ENDMAP

NAME:   nzn_swamp_stair_ambush
DEPTH:  Swamp:2-, !Swamp:$
MONS:   goliath frog / swamp worm, hydra / w:5 eleionoma, bunyip
MONS:   spriggan druid
NSUBST: 1 = 3 / 11W., 2 = 4 / 22W.
MAP
    @
    1t
   2WWt
  tWWWW2
 tWW{WWW1@
@1WWW>WWt
  2WWWWt
   tWW2
    t1
     @
ENDMAP

NAME:    nzn_swamp_blast_mining
TAGS:    no_pool_fixup
WEIGHT:  5
ITEM:    stone, tin of tremorstones
MONS:    bloated husk, earth elemental
SHUFFLE: HJ / 12
# Averages 2 husks, 1.5 earth elementals, and ~1/3 chance of a tin
SUBST:   D = WWWw.., E = xxWwd., F = WWd.
NSUBST:  H = 1 / 111dx., J = 2 / 2dx.
SUBST:   K = xxWwde
NSUBST:  e = e / d
MAP
@          @
 FDDDDDDDDF
 DFDDDDDDFD
 DDFEEEFFDD
 DDFEEFEEDD
 DDEFJHEEDD
 DDEKHJKEDD
 DDEEJHFEDD
 DDEEFEEFDD
 DDFFEEEFDD
 DFDDDDDDFD
 FDDDDDDDDF
@          @
ENDMAP

NAME:   nzn_swamp_dancing_lights
TAGS:   transparent no_pool_fixup
KMONS:  O = will-o-the-wisp
NSUBST: D = W / w, E = O / W, F = W / w, H = O / W, J = W / w, K = O / W
SUBST:  w = wwwt
KFEAT:  O = shallow_water
MARKER: O = lua:fog_machine {  pow_min = 8, pow_max = 12, delay = 25, \
                                size = 2, walk_dist = 1, spread_rate= 33 }
MAP
     www
    wwEww
    wEEEw
    DDEDD
  @@WDDDW@@
  @WwWWWwW@
 wFFWWWWWJJw
wwHFFWwWJJKJw
wHHHF@@@JKKKw
wwHww   wwKww
 www     www
ENDMAP

NAME:  nicolae_swamp_bloodsuckers_inc
TAGS:  transparent patrolling no_monster_gen
MONS:  vampire mosquito w:15 / vampire mosquito band w:5, tyrant leech
KMONS: p = plant
KFEAT: 1 = w
SUBST: 1 = 1:40 ., 2 = 2 .:3
SUBST: E = W., D = Ww
MAP
 t.@.t
 tpppttttttt
tt.2tt.....tt
t..EwEEEwE2.t
t.Ew1DED1wE.t
t2E1wDEDw1E2t
t.Ew1DED1wE.t
t.2EwEEEwE..t
tt.....tt2.tt
 tttttttpppt
       t.@.t
ENDMAP

NAME:   nicolae_swamp_bunyip_nook
KMONS:  pP = bunyip
KFEAT:  P = W
NSUBST: W = 2=P / W
SUBST:  ' = ..W
MAP
    t.....t
   tt..p..tt
  tttt'''tttt
 ttttt'''ttttt
tttttt'''tttttt
ttttt...ttttWPt
ttt....ttttWWWt
tt'''.tttWWWWWt
tt'''ttt'''WWWt
tt'''.p...'Wttt
 tt......ttttt
  ttttttttttt
ENDMAP

NAME:   nicolae_swamp_catching_bugs
TAGS:   transparent patrolling
KMONS:  1 = goliath frog
KMONS:  2 = vampire mosquito / spark wasp w:2
KFEAT:  2 = w
SUBST:  D = w-, S = Wwww, t = tt.._, - = ...W
NSUBST: ' = 2=1 / 2=1. / ., w = 5=2 / 5=2w / w
CLEAR:  _
MAP
   t......t
  t..----..t
 t..-DSSD-..t
t..-DSwwSD-..t
..-DSSDDSSD-..
.-DSSD''DSSD-.
.-SwD''''DwS-.
.-SwD''''DwS-.
.-DSSD''DwSD-.
..-DSSDDWSD-..
t..-DSwwWD-..t
 t..-DSSD-..t
  t..----..t
   t......t
ENDMAP

NAME:    nicolae_swamp_drake_lake
TAGS:    transparent patrolling
KMONS:   1 = death drake
KMONS:   2 = swamp drake
KMONS:   3 = rime drake
KFEAT:   123 = W
SHUFFLE: DEFH/JKLN/OPQR
SUBST:   DE = ., F = @, HJO = t, KLNPQR = _, M = tW
NSUBST:  W = 1 / 11W. / 2=2 / 2=22W. / W.
CLEAR:   _
MAP
      RQQR
      RPPR
      RPPR
    tttOOttt
    tMWWWWMt
   ttWWWWWWtt
HHHtMWWMtWWMt
FEEDWWtttMWWtt
FEEDWWMtttMWMtNNN
HHHtWWWttttWWJKKL
   tMWWWMtMWWJKKL
   ttMWWWWWWMtNNN
    tttMWWWMtt
      ttttttt
ENDMAP

# The ruins of a prison, left to flood and fall apart as the area was reclaimed
# by the swamp. It appears to have been a particularly brutal prison, which may
# explain all the restless dead.
NAME:    nicolae_swamp_flooded_prison
TAGS:    no_trap_gen patrolling
ORIENT:  southeast
KMONS:   1 = alligator / ghost crab w:5
KMONS:   2 = bog body
KMONS:   3 = ghoul
KMONS:   4 = bloated husk
KMONS:   5 = spectral spriggan rider / spectral spriggan berserker
KMONS:   6 = freezing wraith / will-o-the-wisp w:5
ITEM:    executioner's axe
ITEM:    great sword / triple sword w:5 / great mace / eveningstar \
         / glaive / bardiche / lajatang / arbalest w:5 / triple crossbow w:5
ITEM:    chain mail / plate armour / crystal plate armour w:5 \
         / kite shield / tower shield / helmet / pair of boots / pair of gloves
ITEM:    wand of charming w:30 / wand of paralysis w:30 / any wand w:5 \
         / wand of mindburst / lightning rod w:1
ITEM:    large rock q:1
KPROP:   dh = bloody
KFEAT:   ; = iron_grate
KFEAT:   "1 = w
KFEAT:   24 = W
SUBST:   D = t., E = t-, - = - W:7 .:5, c = c:100 x
SHUFFLE: dh
NSUBST:  Z = 4=2 / 4 / 224, L = e / f / g, M = e / f / g, N = 3=5 / 3=5- / -
NSUBST:  s = 2=5 / 2=5. / ., 6 = 6 / 6., J = ; / - / ;-
KPROP:   " = no_tele_into
KMASK:   " = no_monster_gen
KMASK:   " = no_item_gen
FTILE:   ;- = floor_sandstone
FTILE:   @efg35 = floor_sandstone / none
FTILE:   'dr = floor_cobble_blood
MAP
      tttttttttttt..@@@...t
 tttttttD....DttD...---..Dt
ttttD...............---..tt
ttt......DtD.......c;;;c.Dt
tt.4.ttttttttD...ttct--c..t
tWWWWwttttwwttw1wtwcNttcwwt
tW...tt""tWWWttttt.ct--ctwt
tW....t""t..s...t..c;;-cttt
tw.sc-cc;c-;cc;-c.s.-3-.Dwt
twD.cN-cWWc--cEN-...---..wt
twt.--tcWZcNZc--cttwww-s.wt
twttc--cWWc--cZ-ccccc;c.Dwt
twttc;-c;;c-;c;;cLLLc-cD.wt
twDDc----xx-N-t-J-3--NcDswt
twD.;--N-ExtWtx-J----Nc.Dwt
tws.cWWW--t--x-NJ-3-ttcD.wt
tw..c;;cW;c;Nc-;cMMMc"cDswt
t1.sc-Ec--c--c--ccccc;c..wt
tw..cZ-c-Z--ZcNZc..s.s...wt
tw..cN-ct-NWxc--c6'''''6.wt
twW.c-cc;c-tt-;cc.'d'h'..wt
ttWW.s..s..tt....6'''''6.wt
twttWWW..DDtttD....s.s...wt
twwtttwwwwwwwtwwwwwwwww1wwt
ttttttttttttttttttttttttttt
ENDMAP

NAME:   nicolae_swamp_frolicking_bunyips
MONS:   bunyip
KMONS:  y = butterfly
KMONS:  p = plant
NSUBST: ' = 3=1 / 1. / y / 8=p / 8=W / .
SUBST:  D = t., r = pW.
MAP
DDDtttttDDD
DrtDDDDDtrD
Dt'''''''tD
tD'''''''Dt
tD'''''''Dt
tD'''''''Dt
tD'''''''Dt
tD'''''''Dt
Dt'''''''tD
DrtDDDDDt.r
DDDtttttDr@
ENDMAP

NAME:    nicolae_swamp_husk_halls
TAGS:    transparent
DEPTH:   Swamp:2-
ORIENT:  float
KMONS:   1 = bloated husk
KFEAT:   1 = W / .
NSUBST:  1 = 2=1 / 2=1./ ., 0 = 2=0 / 2=0. / .
SUBST:   { = {<, D = t., . = ...W, _ = t_
SHUFFLE: {[(
CLEAR:   _
MAP
   __tD@@Dt__
   _ttD.1Dtt_
   _ttD..Dtt_
____ttD0.Dtt____
_tttttD..Dttttt_
ttttttt..ttttttt
DDDDDtWWWWtDDDDD
@1....W{[W..0..@
@..0..W(<W....1@
DDDDDtWWWWtDDDDD
ttttttt..ttttttt
_tttttD..Dttttt_
____ttD.0Dtt____
   _ttD..Dtt_
   _ttD1.Dtt_
   __tD@@Dt__
ENDMAP

# The way the terrain is laid out means that autoexplore should notice the
# corpse through a window and stop before YOLOing into the hydra death house.
NAME:   nicolae_swamp_necromancy_gone_wrong
TAGS:   no_trap_gen patrolling
MONS:   20-headed hydra zombie
ITEM:   scimitar good_item ego:none / glaive good_item ego:none \
        / broad axe good_item ego:none / staff of death / nothing w:40
: item(dgn.good_aux_armour .. " / nothing w:60")
ITEM:   scroll of brand weapon / scroll of fear / scroll of teleportation \
        / scroll of blinking / nothing w:40
ITEM:   randbook title:Reanimation_Made_Easy spells:animate_dead numspells:4 \
            disc:necromancy
NSUBST: ' = 1 / 2=1' / d / e / f / g / K / '
SUBST:  Q = t_, D = t., . = ...W
: dgn.delayed_decay(_G, "K", "human corpse")
KMASK:  'defgK = no_monster_gen
KMASK:  'defgK = no_item_gen
TILE:   x = wall_brick_vines
FTILE:  'defgK = floor_sandstone / none w:5
CLEAR:  _
MAP
 QttttttQ
QttD.DtttQ
Qt......ttQ
 txm+mx.DttQ
QQx'''x..DtQQ
 Qm'''m.tttttQ
tQx'''x..tD..@
Qtxmxmxt.t..tD
QQ QQQ tt.ttt
 QQ Q QQtttQQ
ENDMAP

NAME:   nicolae_swamp_no_escape
TAGS:   patrolling
KMONS:  1 = thorn hunter
KMONS:  2 = swamp worm
KMONS:  3 = goliath frog / bunyip w:5 / alligator w:5
KMONS:  4 = eleionoma
KFEAT:  @1234 = W / .
NSUBST: 2 = 3=2 / ...2, E = 1 / 3=3 / 2=4 / 2 / 23. / .
SUBST:  D = t., . = ..W, _ = t_
CLEAR:  _
MAP
    _____
 _ttttttttt
 tttDDDE.2@
_ttDE.E...@
_tD..E...2@
_t..E.E...@
_tD..E...2@
_ttDE.E...@
 tttDDDE.2@
 _ttttttttt
    _____
ENDMAP

NAME:  nicolae_swamp_nymph_family_reunion
TAGS:  transparent patrolling
KMONS: 1 = water nymph
KMONS: 2 = eleionoma
KFEAT: 1 = w
SUBST: D = wwwwW., M = wwt, - = ....t, . = ....W
MAP
@.ttttt
...-ttttt
t...--tttt
tD.-.---ttt
tDD.-.2--tt
twDD.-.2-ttt
tMwDD.-.--tt
tMMwDD.-.-tt
tM1MwDD.-.-t
ttM1MwDD...t
 ttMMMwDD...
  tttttttt.@
ENDMAP

# Some spriggan bandits have set up a secret hideout in the Swamp to stash
# their ill-gotten loot.
NAME:   nicolae_swamp_secret_spriggan_hideout
TAGS:   no_monster_gen patrolling
DEPTH:  Swamp, !Swamp:$
ORIENT: northwest
MONS:   spriggan, spriggan rider, spriggan druid, spriggan berserker
MONS:   spriggan air mage
ITEM:   gold q:1 / gold q:2 / gold q:3 / gold q:4
ITEM:   buckler w:30 / robe w:30 / swamp dragon scales w:20 \
        / steam dragon scales / acid dragon scales / troll leather armour
ITEM:   short sword / rapier / quick blade / long sword / scimitar \
        / war axe / morningstar / eveningstar / trident / quarterstaff \
        / lajatang
ITEM:   any magical staff, any jewellery, any book, any wand
NSUBST: L = e / f / eeffhj$ / ghhijj$
SUBST:  } = }]), O = c., D = tt., P = 112., Q = 1112, . = ...W
# The shaft is just for flavor, to help hint at the notion of "go downstairs".
# You can think of it as a "flavor shaft". Or a "flavor hole", if you prefer.
KFEAT:  ^ = shaft trap
MAP
tttttttttttttttttttt
tttD...3...Dtttttttt
tt......c.OOctDDDttt
tD.3Dcccc...ccOQDttt
tD..cc..c.2.cd.cOttt
t..Pc.}.c...c.>.cttt
tP.tc..ccO.Occ.dcttt
t..c.2cc.4.4.cc.cctt
t.....tc.....c.d.ctt
tP...2tc..5..c1.tctt
tttOt.tc$$$$$ctt.dtt
tttcccccLLLLLcc.DctD
tDt.c.tccccccc1.....
tD.1cQ^tc......tc..@
tt.D..ttc..Dc.DccDD.
tDtD..OcttD.ccctttDD
ttt  .@D.ccctttt
ENDMAP

NAME:   nicolae_swamp_soggy_hallways
TAGS:   transparent
KMONS:  0 = 0
KMONS:  9 = 9
KFEAT:  09@ = W
SUBST:  0 = 00W, 9 = 990W, D = tWW
NSUBST: P = W / t, Q = W / t, R = W / t, S = W / t
MAP
      tttt
   ttttD9tttt
t@@t0DQDWt0Dtttt
tWWtWWQWDtWWSD0t
tDWtDWQWDtDWSWWt
tWWtWWQDWtWWSWDt
tWDtWDQDWtWDSWWt
tWWPDWtWDRDWtDWt
tDWPWWtWDRWWtWWt
tWWPWDtDWRWDtWDt
t0DPWWtDWRWWtWWt
ttttD0tWDRD0t@@t
   tttt9Dtttt
      tttt
ENDMAP

NAME:   nicolae_swamp_spooky_pond
TAGS:   transparent no_monster_gen
KMONS:  1 = fenstrider witch
KMONS:  2 = bog body / will-o-the-wisp w:5
KMONS:  3 = will-o-the-wisp
KFEAT:  12 = w
KFEAT:  3 = W
NSUBST: 2 = 2=2 / 2w, 3 = 2=3 / S
SUBST:  S = W., D = Ww, P = p.
MAP
    ttttttttttt
   ttSSSS3SSSStt
  tt..St.S.tS..tt
 tt..SttSSSttS..tt
ttt.SttWWWWWttS.ttt
....StSWD2DWStS....
@...3tSW212WSt3...@
....StSWD2DWStS....
ttt.SttWWWWWttS.ttt
 tt..SttSSSttS..tt
  tt..St.S.tS..tt
   ttSSSS3SSSStt
    ttttttttttt
ENDMAP

# The area has long since grown over, and the crystals' pattern is obscured,
# but there is still power here, and magic users still gather...
NAME:   nicolae_swamp_standing_stones
TAGS:   patrolling no_pool_fixup
ORIENT: float
KMONS:  1 = fenstrider witch
KMONS:  2 = necromancer
KMONS:  3 = spriggan druid
KMONS:  4 = bog body
{{
kitem("d = potion of magic w:30 / potion of brilliance w:30 / " ..
      dgn.loot_potions)
kitem("e = scroll of summoning w:30 / scroll of blinking w:30" ..
      "/ scroll of vulnerability / " .. dgn.loot_scrolls)
}}
KITEM:  f = nothing w:150 / ring of wizardry / ring of intelligence \
        / ring of willpower / amulet of magic regeneration / any jewellery
KITEM:  2 = any book / any scroll
KFEAT:  1 = w
KFEAT:  4de = W
SUBST:  q = tw, S = Ww, D = t., . = .:70 W
MAP
     ttttttttttttt
 tttttwSSSwtt4WWWttt
 tSt.D......ttWttWStt
tt.....ttD....tt....t
tS.D.ttqS...DDt..D...
ttq..wtD..b......S..@
 tt..Swww..t.SSttttw
  tt...wwwSttttt..tt
 tt.t...Dtttt.....3tt
tt..3t..tt......t...t
tq.b...tbWWWb...tbS.t
tS...D.tefwwWWtttt..t
twtD..Wtdw1wWtt.S...t
twtt..Wbtttttb.t.Sttt
twqtt.WWW...t...wtt4t
twqtqtt...b.t.DwttWSt
twtw.qttqt...t.wtWWtt
ttS.2...DtD..wwWWWtt
 tt.D.b.....Swbtttt
  ttttttSDSttttt
       ttttt
ENDMAP

NAME:   nicolae_swamp_super_fun_site
TAGS:   transparent patrolling
KMONS:  HZ = bloated husk
KFEAT:  H = W
NSUBST: D = t / .
SUBST:  ' = ..t__, E = .Wt
COLOUR: t = lightgrey w:5 / brown
TILE:   t = dngn_tree_dead
MARKER: H = lua:fog_machine { cloud_type = "foul pestilence", \
            pow_min = 3, pow_max = 4, delay_min = 35, delay_max = 45, \
            size = 3, walk_dist = 1, excl_rad = 0}
CLEAR:  _
: set_feature_name("mangrove", "dead mangrove")
MAP
 ''''''''
'...D...t'
'.ZEEEE..'
'.EWWWWE.'
'DEWHWWE.'
'.EWWWWED'
'.EEWWE..'
'..EEEEZ.'
't..D....'
 ''''.t''
ENDMAP

NAME:   nicolae_swamp_wisp_ring_woods
TAGS:   no_pool_fixup transparent patrolling
KMONS:  z = will-o-the-wisp
KFEAT:  z = w
NSUBST: P = 2=. / F / S, Q = 2=. / F / S, Z = 2=w / K, K = 6=t / w
SUBST:  S = w., F = t., . = ..W
MAP
   ttt@.ttt
  ttFPPPPFtt
 ttF......Ftt
ttF...SS...Ftt
tF..SwwwwS..Ft
tF..wzKKzw..Ft
tF.SwKZZKwS.Ft
tF.SwKZZKwS.Ft
tF..wzKKzw..Ft
tF..SwwwwS..Ft
ttF...SS...Ftt
 ttF......Ftt
  ttFQQQQFtt
   ttt.@ttt
ENDMAP

NAME:    nicolae_swamp_wrong_neighborhood
TAGS:    transparent
ORIENT:  float
MONS:    shambling mangrove, eleionoma
SHUFFLE: Pp/Qq/Rr, Qq
NSUBST:  P = @ / 2=.W / K, p = @ / 2=.W / K, 2 = 2=2 / 2=2.
SUBST:   Q : Kt, qRr = t, K = t., Z = t_
CLEAR:   _
MAP
ZZtQQQQtZZtRRRRt
Zttt..tttttt..tt
ZttK.Kttttt..Ktt
Zttt..KttttK..Kt
ZtK.2..Kttttt2.t
ttK..t.K.tKtK..t
tt..ttK..t....Kt
PtK.ttt.1.K.K.tt
P...Kttt..tt.Ktp
P..K.Kttt..t...p
Ptt..tttK..tK..p
ttK2..tt..Kttttp
Zttt.K.t.2.K..tt
ZtK....ttK...KtZ
Ztt..Kttttt..ttZ
ZtrrrrtZZtqqqqtZ
ENDMAP

NAME:    nicolae_swamp_thats_no_hydra
TAGS:    transparent no_pool_fixup
DEPTH:   Swamp
KMONS:   1 = kraken
KFEAT:   @ = . / W
KFEAT:   1 = w
SHUFFLE: LMN, OPQ, RSZ
NSUBST:  `- = 2=H / 2=H. / .
SUBST:   LOR = @, MNPQSZ = t, - = .W, ` = wW, D = tww
: dgn.delayed_decay(_G, 'H', 'hydra skeleton')
MAP
     LLLLM
   ZZLLLLMMM
  ZZZ-----MMM
 ZZ--`````--MM
 ZZ-`DDDDD`-NN
SS-`DDDDDDD`-NN
SS-`DDwwwDD`-NN
SS-`DDw1wDD`-NN
SS-`DDwwwDD`-OO
RR-`DDDDDDD`-OO
 RR-`DDDDD`-OO
 RR--`````--OO
  RRQ-----PPP
   RQQQQPPPP
     QQQPP
ENDMAP

NAME:    nicolae_swamp_vermiculated
TAGS:    transparent
DEPTH:   Swamp
KMONS:   ~ = steelbarb worm w:5 / swamp worm / tyrant leech
KFEAT:   ~ = . w:50 / W
SHUFFLE: DEFH
NSUBST:  D = 1:@, E = 1:@, DEFH = 3=@. / .
SUBST:   ~ = ~., - = t:90 ., . = .....W, a = t_
CLEAR:   _
MAP
aaaaa      a   aaaaa
atttt-D--D-t-D-tttta
 -t--t.t-.--t.t--t-
 H.--.t--..--t.--.E
 --~~--t.-..t--~~t-
at-~~--.t-.-.--~~-ta
at-.-..t--.-t..-.-ta
at-t.----.-----.t-ta
 ----.--~~~~--.--tta
 H..--..~~~~-...---
 ---...-~~~~..--..E
att--.--~~~~--.----
at-t.-----.----.t-ta
at-.-..t-.--t..-.-ta
at-~~--.-.-t.--~~-ta
 --~~--t..-.t--~~--
 H.--.t--..--t.--.E
 -t--t.t--.-t.t--t-
atttt-F-t-F--F-tttta
 aaaa   a      aaaaa
ENDMAP

NAME:   tekkud_bubbles_buried_in_this_jungle
TAGS:   no_monster_gen
DEPTH:  Swamp
KMONS:  1 = fenstrider witch ; staff of alchemy | staff of death . \
                               orb ego:wrath | orb ego:mayhem w:5 . robe
KMONS:  2 = bog body
KMONS:  3 = bloated husk
KFEAT:  123 = W
NSUBST: ~ = 2:w / 2:wW / *:W
NSUBST: a = 1:1 / 2:2 / 3 = 2w / 1:3 / 2 = 3ww / * = w W:60
MAP
      WWW
   WWWWtWWtt
  WWWWttWWttt
tWtWtaWtttWWtt
t~tWaaaattt~t
ttWWaaaaaaWtwt
 tWWaaaaatWtwt
 ttWtaaaaWWttt
  ttt~ttWWtwWt
   WWWtttt~W
     WWtWWW
ENDMAP

NAME:   tekkud_swamp_unearthing_site
TAGS:   no_item_gen
DEPTH:  Swamp
ORIENT: centre
MONS:   spriggan w:12 ; shortbow | sling good_item / spriggan rider w:8
MONS:   spriggan druid / spriggan air mage w:5 / \
        spriggan berserker w:5 ; hand cannon . animal skin
ITEM:   tin of tremorstones / staff of earth randart no_pickup w:2 / \
        granite talisman / granite talisman randart w:2
ITEM:   spear good_item / quick blade w:5 / shortbow / hand cannon w:5
ITEM:   stone q:1 no_pickup
KFEAT:  X = x
NSUBST: ' = 1:2 / 1:d / *:., . = 4:1 / 1:e / 10:f / 5:g / 1:h / *:.
FTILE:  .defgh12 = floor_sandstone
TILE:   x = wall_brick_vines
: dgn.delayed_decay(_G, 'g', 'spriggan corpse')
: dgn.delayed_decay(_G, 'h', 'human corpse')
{{
  local n = 1
  hook("post_place", function()
    dgn.place_maps{tag="serial_swamp_ruin", count=n}
  end)
}}
MAP
xxxx@@xxxx
xXX.....Xx
xXX......x
x.....'..x
@..'''...@
@...'''..@
x..'.....x
x.......Xx
x......XXx
xxxx@@xxxx
ENDMAP

###############################################################################
#
# <<4>> Swamp ending vaults
#
# They come in two flavours: normal and themed. The first three are normal and
# use regular swamp monsters. The other five have special themes, and are less
# common.
#
###############################################################################

default-depth:

###############################################################################
# Swamp:4 standard
#
NAME:    swamp
TAGS:    transparent no_monster_gen
PLACE:   Swamp:$
WEIGHT:  20
ORIENT:  float
TAGS:    no_rotate
MONS:    swamp dragon, swamp drake, hydra
MONS:    thorn hunter / shambling mangrove / spriggan druid
KMONS:   O = fire dragon w:1 / ice dragon w:1 / hydra w:18
KMONS:   & = the lernaean hydra
KITEM:   R = mossy gem
KITEM:   O& = decaying rune of Zot
SHUFFLE: 12
SUBST:   - = WW.
NSUBST:  13 = 5:., 1 = 5:1 / 2:. / * = 1..
NSUBST:  2 = 5:2 / 2:. / * = 2.., 3 = 7:3 / 3:. / * = 3..
: if crawl.one_chance_in(11) then
SUBST:   4 = .:999 4:1, O = &
: end
MAP
      -t-t-
     2-2-2-2
   ---cc.cc---
   -tcc3.2cct-
  --cc3.2.3cc---
 --tc11.3322ctt-
 -tcc...21.1ccc--
--tc413321.14cct-
-tcc31333.113cct-
-tcc2211R3223cc--
--tcc3333113cct-
 -tcccc3O3ccct--
 --tcccccccct--
  --ttccccct--
   ---ttcct--
     ---t---
       ---
ENDMAP

###############################################################################
# Swamp:4 alternative (dp)
#
NAME:    swamp_alternative
TAGS:    transparent no_monster_gen no_pool_fixup no_rotate
PLACE:   Swamp:$
WEIGHT:  20
ORIENT:  float
MONS:    swamp dragon, swamp drake, hydra, lindwurm, rime drake, bog body
MONS:    thorn hunter / shambling mangrove / spriggan druid
KMONS:   O = fire dragon w:2 / hydra w:18
KMONS:   P = ice dragon w:2 / hydra w:18
KMONS:   & = the lernaean hydra
KITEM:   R = mossy gem
KITEM:   OP& = decaying rune of Zot
SHUFFLE: OR / de, 123,  lLO4 / wWP5, 56
SUBST:   de = %, 1 = 111., 2 = 2., 3 = 333.
SUBST:   l = l `:2, L~ = ., ' = .t, " = tc
SUBST:   - = WW.
KPROP:   ` = no_tele_into
KMASK:   ` = opaque
: if crawl.one_chance_in(11) then
SUBST:   6 = .:999 6:1, OP = &
: end
MAP
    1- -1---
   2.3.2''3-2--
   -."c..1-"""---
  --""c".ccccc""-..'
 --"cc_.2ll4ccc""2-
--"cc..33lL..27"cc'.-
-"cc1122lLl.3.1.2""---
-"c7...llllll21..1.-3-
-"cc33l4llllll2.cc1-'3
--"ccllRlllle4lcc"----
 --"ccc.Olld3ccc"--
  --""cccccccc""--
   --""""""""""--
    ---""-"""---
      -----"--
          ---
ENDMAP

###############################################################################
# "Old school" swamp end, by Jude
#
NAME:    swamp_old_school
TAGS:    no_pool_fixup
PLACE:   Swamp:$
WEIGHT:  20
ORIENT:  southeast
MONS:    swamp dragon, hydra, swamp drake
MONS:    the lernaean hydra
KITEM:   R = mossy gem
KITEM:   O = decaying rune of Zot
SHUFFLE: ab, 12
SUBST:   a = c, b = ', " = ttw, ` = tt`
SUBST:   u = wwwwwWWWWxxx., ' = W....
NSUBST:  1 = 2:. / 2:1 / * = 1111.
NSUBST:  2 = 2:. / 2:2 / * = 2222.
SUBST:   3 = 3333.
CLEAR:   `
MAP
               t
@@''x   "t     t`   x        t
@'''   "ttt`  tt`    `t`    tt   ttt
'x'"  "ttttt`tttt`  tttt`  tttt ttttt
''''""tttttttttttttttttttttttttttttttt
'''""ttt3wtcccccttcccttccttttttccctttt
'''"tt.wcccccwwccccwcccccccttcccOccctt
'''""'ccccuuwuuwuuwuwuuwccccccwR1ucctt
'3'''1''cuu3uuuuuu2uuu3uuwcccwu2uwcctt
''''''''''''''''''''''''uuwwccw3cccctt
''""'2'cc'uuuuu'uu'uuuu'u1uuwccabccttt
'"tt.ccccccuuuu'uuuuuuu'uuuwwccabctttt
 W"tt.wcccccuuu'uuuuuuu'uuu2ccabcctttt
  W"tt.wccccwuu'u1uuuuu'uuwccccabccttt
  W.""ttccwwuuu'uuuuu1u'u2uccccc'ccctt
   .xw"tccwuuuu'uuuuuuu'uucccc2u'ccctt
x  .ww"ttccwu2u'u1uuu2u'u2uccuu'uucctt
  WxW"ttccwuuuu'uuuuuuu'uuuuuu'u1ccttt
  ww"tttcwuu''''''''''''''''''uucctttt
   ww""tccwuuuu2uuuuuuu'uuuuu2uuuccttt
 3wWwwW"tccccuuuuu''''''uuuuuuuucctttt
   xwwWxttcccuuuuuuuuuu''''''u2ucctttt
   Wwww"ttccwuuu3uuuu3u''uuuu21ucctttt
  @wWW"ttccwu1wuuccuuu2'''ccuccucctttt
   ""tttccwuuwccccccc1cccw4ccccccttttt
  `ttttttccwwcccttttcccccccctttttttttt
 ``tttttttcccctttttttttttttttttttttttt
tttttttttttttttttttttttttttttttttttttt
ENDMAP

###############################################################################
# Swamp:4 alternative (due)
NAME:    swamp_fiery
TAGS:    transparent no_pool_fixup no_rotate
PLACE:   Swamp:$
ORIENT:  float
MONS:    fire dragon, will-o-the-wisp, swamp dragon / hydra w:12
MONS:    swamp drake / lindwurm w:4
SUBST:   L = ll., ' = t., " = t
MARKER:  R = lua:fog_machine { cloud_type = "flame", pow_min = 8, \
             pow_max = 12, delay_min = 40, delay_max = 70, \
             size = 2, walk_dist = 1, spread_rate= 3, excl_rad = 0 }
KPROP:   lR = no_cloud_gen
KFEAT:   XR = lava
SHUFFLE: Oo / Pp
KITEM:   o = mossy gem
KITEM:   O = decaying rune of Zot
SUBST:   Pp = l, - = WW.
MAP
     --'--
   ------4-     ...3
  --tcct-'- - -..ll.    4' -
 --tccc4c.---4-.lRl.-4-------
 -tccc3c.t-ttt-.ll..-tcc--t--
--tc.L.3cctcccc3...ttccL.ct-
-tccL4ll.ccc12cccccccc3Lc.t--
--tcc.LLl.43Ll344cc.c.L4.cct-
-tcccc4llLLlllLLl..L3Lll.Lct-
--tcc.LllllclllllLlllllL.cct-
 --tcc3LllRccllllRll3443cct--
  -tccL.Lllllccclll2lcccct--
  --tccc3L2occtccP1pccttt--
   --ttcc1Occt-tccccct----
    ---tcccct---tttt---
      --tttt-- -------
       ------
ENDMAP

###############################################################################
# The way to icy death! (due)
#
NAME:    swamp_icy
TAGS:    no_pool_fixup no_rotate transparent
PLACE:   Swamp:$
ORIENT:  southeast
MONS:    ice dragon, hydra simulacrum, freezing wraith, azure jelly
KMONS:   ? = swamp worm simulacrum / swamp drake simulacrum
KITEM:   o = mossy gem
KITEM:   O = decaying rune of Zot
KFEAT:   Q? = deep_water
SHUFFLE: Oo / Pp
SUBST:   p = ., X = tt., PY = Wwwww., 4 = 1:15 4
NSUBST:  2 = 4 = 2. / * = 2, 0 = 1:412 / 3:2 / 2:. / * = 2., 3 = 1:. / *:3
MARKER:  Q = lua:fog_machine { cloud_type = "freezing vapour", \
             pow_min = 8, pow_max = 12, delay_min = 30, delay_max = 40, \
             size = 2, walk_dist = 1, excl_rad = 0 }
MAP
@@             wwttttttttt
@.  ..        wwttcccccctt
@ ..  ..  .....wwcc.c3cctt
    ..  .....w?.wcXc3.Xctt
      ..    ?ww......cXctt
           www.wwXc3c3Xctt
            w?.wXcXc.3cctt
             ww.wccc..cctt
              ..ttcc..cctt
             ..wwtcc2.cctt
            ..wwttc..ccctt
           .twwwttcc0Xcctt
          .tttwwwtcc.0.ctt
         .tttttwwtc..ccctt
         .ttttttttcc0.cctt
          .wwtttttccX0.ctt
          ..?wttttccc0.cct
     @@  2.wwwwttttcc.0cct
    ?@. ..ww?wttttccc.0cct
   ttww.wwwwwtttttcc..cctt
   ttw?ww?wwtttcccc.0ccttt
  ttttwwwwtttcccccc0Xctttt
  tttttttttcccwwwY0.Yccttt
  tttttttcccwwQww.YY.wcctt
   tttttccwwwww22Yww2wwctt
     ttccwwww22YwwwwY2wctt
    ttccwww.2YwwQwwwY2wctt
   ttccww1oYwwwwwwwY2wwctt
  ttcccwOYwWWcccWY1pwwcctt
 ttcccccwwwwcW4WwPYYcccttt
tttccccccccccccccccccttttt
tttttttttttttttttttttttttt
ENDMAP

###############################################################################
# Alternative swamp end, by Lemuel
#
NAME:    swamp_pestilence
TAGS:    no_pool_fixup
PLACE:   Swamp:$
ORIENT:  southeast
MONS:    spectral swamp dragon / spectral hydra w:12
MONS:    swamp dragon zombie / hydra zombie w:12
MONS:    spectral alligator w:12 / alligator zombie
MONS:    death drake / vampire mosquito band / spectral bunyip w:5
MONS:    bloated husk, phantom, bog body
KMONS:   8 = phantasmal warrior
KMONS:   9 = ghost crab
KMONS:   ? = swamp worm zombie / tyrant leech zombie
KMONS:   O = bone dragon
KITEM:   o = mossy gem
KITEM:   O = decaying rune of Zot
KITEM:   * = *
KFEAT:   ?Y = deep_water
KFEAT:   O* = shallow_water
SHUFFLE: Oo / *s
SUBST:   1 = 113, ? = ??w, " = tc, ' = .w, s = .
NSUBST:  6 = 1:5 / 3 = 89 / 12 = 5666. / *:., y = 1:Y / *:W
MARKER:  Y = lua:fog_machine { cloud_type = "foul pestilence", \
             pow_min = 3, pow_max = 4, delay_min = 35, delay_max = 45, \
             size = 1, walk_dist = 0, excl_rad = 0}
MARKER:  O = lua:fog_machine { cloud_type = "foul pestilence", \
             pow_min = 3, pow_max = 4, delay_min = 45, delay_max = 75, \
             size = 3, walk_dist = 1, excl_rad = 0}
COLOUR:  YO = green
MAP
@@
@....
   .....
    ?w7.....w?w"tt     tt
    w?ww.7ww?wwc"tt   ttt
    "wWWwww?w?cc"ttt tttt
   '""cWw?w?ccc"ttttttttt
   't"c7.wwcccc"""ttttttt
   tttc...ccccccccccc"ttt
  ttt"cc...Ycccc6666c"ttt
  ttt"ccY...cccO6666cc"tt
 ttttcccc...cc66o6666c"tt
  t""ccccY.Yccc666666cctt
   "cc1*ccY.Ycc6666666ctt
   tc211ccc.Ycccc66666c"t
   ccc2s1ccY.Ycccc..6cc"t
   ""c.1.cccY.ycccWW.cc"t
   "tcc.1.cccy..ccWW..ctt
   "t"c2.21ccc..ccc6wcctt
   tttcc1.2ccc..c..wwc"tt
   ttt"cc.1WWc...6wcccttt
   tttt"c2.WW...?wcc""ttt
  ttttttccc2.wwwwcc""tttt
  ttttttt"cc?w?wcc""ttttt
  tttttttt"cc4wcc"ttttttt
 tttttttttt"cccc"tttttttt
ttttttttttttt""tttttttttt
ttttttttttttttttttttttttt
ENDMAP

###############################################################################
# HangedMan's hellswamp: an abandoned, overgrown, flooded temple,
# occupied by demons, beasts, messes of flesh, and other vile tricks.
NAME:    swamp_vile
TAGS:    no_pool_fixup no_monster_gen
PLACE:   Swamp:$
ORIENT:  southeast
MONS:    bog body / ugly thing, shadow / orange demon / small abomination w:2
MONS:    large abomination / very ugly thing / thrashing horror w:6
MONS:    green death, hell beast, great orb of eyes, titanic slime creature
KMONS:   8 = hydra / swamp dragon
KMONS:   9 = tentacled monstrosity
KMONS:   & = the Lernaean hydra
KITEM:   R = mossy gem
KITEM:   O = decaying rune of Zot
KFEAT:   8 = shallow_water
KFEAT:   T = demonic_tree
SHUFFLE: yz, '"
SUBST:   yX = x:20 t:3 T:1 W:1, z = ..wwwWWW, ' = ....W, " = wWWW, 5 : 59
NSUBST:  7 = 1:4 / 1:8 / *:7, 0 = 7:1 / 3:. / *:2
NSUBST:  5 = 1:5 / 1:6 / * = 56 &:2, 9 = 1 = 9 &:1 / *:.
TILE:    T = dngn_demonic_tree_10 w:6 / dngn_demonic_tree_11 w:6 / \
             dngn_demonic_tree_12 / dngn_demonic_tree_13
MAP
@@ "' Xxccxcxcct
@'"'XWXW""'..Wcct
  'XWXWx''"zyW.xct
   WXWx"wwwyzwxWcct
  XXWx.x1wwzyw.x.xct
 txWx"x2wwwyzwx0..cctt
 xt"'w1w28wzywx30xWcctt
 ct"'www88wyxwcxx.xWxttt
  x'"wwwww.cXWwwwwWwWcttt
  c.yzyzyzcX..zyzyzWx7xct
 ct.zyzyzxX.W.yzyzy.WxWcct
 xt"'wWWWwW..wWW.WWw.WwWcct
  x"'WxxxWwzyWwcwc.WyzWwWxct
  c'"wx0x.wyzWc...cWzywWx.cct
 xt"'wx3.xwzy.w.7.w.yzwx00.xct
 ct'"wx0x.wyzWc...cWzywc30xWcct
  x"'WxxWwWzyW.cwcWWyzwxcxWwWcct
  c"'wWWwWW..wWW.WW..wWwWWwWwWcct
 ctWzyzyzWW.w.yzyzy.W.WWzyzyzWTct
 ct.yzyzyzxw..zyzyzw..xzyzyzy.Tct
  c"'wWWw.WXWWwwwwwwWXc.WW.w'"cct
  c"'WxxWW.yWwW.x.wWWy7WWxx."'xtt
 ct'"xx.xWwzyWxx0xWwyzWWc0cx'"cct
 ct'"x04.xWyzWx030xWzyWx0R5T"'Tct
 ctt8xx0xxWyzWxxxxxWyz.xc5Oc'"cct
  ct"'xxxWwzywWwwwWwzyw.xTcc8TXct
  cc'"8""''yz""'7'""yz'"'"'85Tcct
  tcccT''""W.''"'"''W."'"'"TTTcct
 ttttcccxcccTTcxcTcxcXcTcXXxTccct
ttttttttttttttttttttttttttttttttt
ENDMAP

###############################################################################
# "Everyone said I was daft to build a castle on a swamp..."
NAME:    grunt_swamp_rune_castle
TAGS:    no_monster_gen no_trap_gen transparent
PLACE:   Swamp:$
ORIENT:  float
MONS:    swamp dragon, swamp drake, hydra, bog body
MONS:    fungus w:12 / plant w:5 / bush w:1
KMONS:   d = patrolling the lernaean hydra / hydra w:1, hydra
KMONS:   ef = patrolling hydra
KITEM:   d = decaying rune of Zot
KITEM:   D = mossy gem
KITEM:   ef = any good_item
KITEM:   g = stone w:40 / large rock q:1
NSUBST:  @ = 1:@ / *:.
SHUFFLE: dD / eE / fF, 123
SUBST:   EF = ., C = cc., = = +.
NSUBST:  : = 6:1 / 6:2 / 6:3 / 9:4 / 3 = 0.... / 20:5 / * = '
SUBST:   ' = .....WW, G = Gg
MAP
 cccccWWW'''''WWWccccc
cc%..ccCC=C=C=CCcc..%cc
c%1...c'::'''::'c...2%c
c..d..c'G:::::G'c..e..c
c...D.c':::C::''c.E...c
cc....+.G:'C':G.+....cc
Wcccc+c.::CCC:'.c+ccccW
WC'''..'G:'C':G'..'''CW
WC:G:G:G'''C'''G'G'G:CW
'=::::::'':C:''::::::='
'C'::'C'':VcV:''C'::'C.
'=''CCCCCCcccCCCCCC''=@
'C'::'C'':VcU:''C'::'C.
'=::::::'':C:''::::::='
WC:G'G'G'''C'''G'G'G:CW
WC'''..'G:'C':G''''''CW
Wcccc+c.':CCC:''C=CCCCW
cc....+.G:'C':G'=''':CC
c...F.c''::C::''C'':::C
c..f..c'G:::::G'C':::'C
c%3...c'::'''::'C:::''C
cc%..ccCC=C-C=CCCC:'''C
 cccccWWW'.@.'WWWCCCCC@
ENDMAP

###############################################################################
# Another Basic swamp end, by johnstein
# about 27 basic swamp enemies & 1/11 chance of L. Hydra
NAME:    swamp_basic_johnstein
PLACE:   Swamp:$
ORIENT:  float
WEIGHT:  20
KMONS:   1 =  swamp dragon / swamp drake / hydra w:15 / bog body w:5
: if crawl.one_chance_in(11) then
     KMONS: O = the lernaean hydra
: else
     KMONS: O* = thorn hunter / shambling mangrove / spriggan berserker
     KITEM: * = *
: end
KITEM:   o = mossy gem
KITEM:   O = decaying rune of Zot
KFEAT:   1 = . w:20 / shallow_water
SHUFFLE: Oo / Pp / Qq
SUBST:   PQ = *, pq = .
SUBST:   1 = 111'', % = %'
SUBST:   ' = .....WWW, - = ..wwwWW, T = .wWtt, C = ccct
MAP
   tt  tt
  ttttttttt @@@   tt  tt
tttccccccttt'-'ttttttttt
ttcc%O%Ccccc'-'ccccccccctt
tccT1-1-Cccc1-1ccccC%Q%cctt
tcT1'1o1'ccc'-'cccC-1-1Tcctt
tccT1-1-ccc-1T1-cc'1q1'1Tcct
ttcC'-'ccc''TTT''cc-1-1Tcctt
 tcC-1ccc1-ccccc-1cc'-'Ccctt
ttcC-1cc'-cc%P%cc-'cc1-Ccctt
ttc'-'c1-cc-1p1-cc-1c1-Ccct
ttc-1Cc'-c'1'1'1'c-'c''-cctt
 tc-''c1-cc-1-1-cc-1cC1-cct
ttcC1'1'''cC'-'Cc-''c''-cttt
ttccccC'''cC'-'Cc'''1'1cctt
 ttttccC-1'1'T'1'1-CCccctt
  ttttccC-1'TTT'1-Cccccttt
    tttcccccccccccccttttt
     ttttttttttttttttt t
       tt   ttt ttt t
ENDMAP

###############################################################################
# Growth, Death and Undeath, by byrel
# Presided over by an undead Lernaean hydra
NAME:    byrel_swamp_growth_death_and_undeath
TAGS:    no_monster_gen no_rotate
PLACE:   Swamp:$
ORIENT:  float
MONS:    swamp drake w:12 / swamp dragon / hydra
MONS:    freezing wraith w:15 / flayed ghost / phantasmal warrior
MONS:    hydra skeleton / swamp dragon skeleton / swamp drake skeleton w:12
MONS:    hydra zombie / swamp dragon zombie / swamp drake zombie w:12
MONS:    spectral hydra / hydra simulacrum
MONS:    patrolling thorn hunter / patrolling shambling mangrove
MONS:    patrolling spriggan druid god:fedhas
KMONS:   p = plant
KMONS:   ' = oklob plant
KMONS:   q = ghoul
KMONS:   L = patrolling the lernaean hydra zombie / \
             patrolling the lernaean hydra skeleton
KITEM:   o = mossy gem
KITEM:   O = decaying rune of Zot
KFEAT:   _ = altar_fedhas
KFEAT:   - = altar_yredelemnul
KFEAT:   E = x
SHUFFLE: Oo / Nn
SUBST:   N = %, n = ., x = xxxxxxttT
NSUBST:  1 = 7:1 / 7 = 1. / * = .W, 3 = 6:5 / 7:3 / 7 = 3. / *:.
NSUBST:  6 = 3:6 / 3 = 6. / ., P = 3=' / ppW
SUBST:   3 = 2344, . = ...W
KPROP:   q = bloody
TILE:    E = WALL_UNDEAD, T = DNGN_TREE_DEAD
TILE:    G = DNGN_GRAVESTONE, x = WALL_BRICK_VINES
COLOUR:  T = brown
SUBST:   T = t
: set_feature_name("granite_statue", "a gravestone")
: dgn.delayed_decay_extra(_G, 'q', 'hydra corpse')
MAP
         xxx@@@xx
        xxxx11xxxx
        xxx1111xxxx
       xxxx11T11xxxx
      xxxx1111t11xxxx
     xxxt111t1111T1Txx
    ccct.11111T1111ccx
   cccct..ttTxLxT..ccccc
  ccccct..txxxxxxE3EEEEcc
 ccccP....TccccccE333sEcccc
cccc..t6...ccccEEEE333TEEEcc
ccc..66....cccE3T3333EE3Eccc
ccP...6P.t.PccEE333G3333Eccc
cct66.P_P66tcccE3T33q3T3Eccc
cc66P.7P7oP6cccE3333-333Eccc
ccPppPpppPppcccE33G3qG3EEccc
ccccppppppcccccEEEE3n3EEcccc
cccccccOcccccccccE333333Eccc
  cccccccccccccccEENEEEEEcc
    ccccccc    cccEEEcccccc
      cc        ccccccc cc
ENDMAP

###############################################################################
# Witches Coven by nikheizen/nzn
# 13 witches (or wizards, or druids, or magi, or sorcerers; they're rather
# inclusive) gather around the rune of power to enact a ritual most foul.
# Also features five tier 4 demons and two tier 2 demons.
# Averages nineteen extra monsters, of which 1/3 are tier 4 demons, 1/3 are
# random 0s, and 1/3 are random 9s
NAME:   nzn_swamp_witches_coven
PLACE:  Swamp:$
ORIENT: float
TAGS:   no_monster_gen no_rotate no_vmirror
MONS:   fenstrider witch, green death / hell beast / blizzard demon
MONS:   smoke demon / soul eater / sixfirhy
MONS:   orange demon / hellwing / chaos spawn
MONS:   spriggan druid / orc sorcerer / ogre mage / deep elf pyromancer w:5 / \
        deep elf zephyrmancer w:5 / arcanist w:5 / occultist w:5
KITEM:  R = mossy gem
KITEM:  O = decaying rune of Zot
KFEAT:  B = stone_arch
KFEAT:  a = c
NSUBST: ' = 14:4 / 4 = 4. / * = W:55 .:20
SUBST:  4 = 004449
MARKER: B = lua:fog_machine { cloud_type = "flame", pow_min = 10, \
                              pow_max = 10, delay = 10, size = 1, \
                              walk_dist = 0, excl_rad = 0 }
TILE:   a = wall_stone_dark
COLOUR: a = magenta
TILE:   G = dngn_statue_demonic_bust / dngn_statue_imp / dngn_statue_cerebov \
            / dngn_statue_ancient_evil
MAP
         ccccccccc
       ccc''5t5''ccc
     ccct'''ttt'''tccc
    cc'''''''t'''''''cc
   cc'aa'''''t'''''aa'cc
  cc''aAaat''t''taaAa''cc
  ct'''a'aa''t''aa'a'''tc
 cc''''a'3aat'taa3'a''''cc
 ct''''aa'5aataa5'aa''''tc
@c'''''ta'''tat'''at'''''c@
c'''''''aat'''''taa'''''''c
c''t''''5aa'''''aa5'''t'''c
c'''''''aat''2''taa'''''''c
c''''taaaat''G''taaaat''''c
c''taaa''a'''t'''a''aaat''c
cttaa53'''attttta'''35aattc
ccaaaaaaa'aaaaaaa'aaaaaaaac
 ct'''''''a'''''a'''''''tc
 ct''''tttaA'''Aattt''''tc
 cct''t''''a'R'a''''t''tcc
  ct5'1'''ta'1'at'''1'5tc
  cct'''''ta'2'at'''''tcc
   cct''''taaOaat''''tcc
    cct'''''aBa'''''tcc
     ccct'''aaa'''tccc
       ccc'''a'''ccc
         ccccccccc
ENDMAP
