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

: crawl_require("dlua/ghost.lua")
: crawl_require("dlua/vault.lua")

{{

function shoals_finale_setup(e, qualifier, decoy_count)
  qualifier = "_" .. qualifier
  if not decoy_count then
    decoy_count = crawl.random_range(6, 8)
  end
  e.hook('post_place', function ()
    -- one rune hut, one ilsuiw hut, maybe a mimic hut, and a bunch of decoys.
    dgn.place_maps{tag=("shoal_rune" .. qualifier), count=1, die_on_error=true}
    if crawl.one_chance_in(5) then
        dgn.place_maps{tag="shoal_guardian", count=1, die_on_error=true}
    end
    if crawl.one_chance_in(10) then
        dgn.place_maps{tag=("shoal_mimic" .. qualifier), count=1,
                       die_on_error=true}
        -- place fewer decoys if you have a fake rune hut, to compensate for
        -- increased threat
        decoy_count = decoy_count - 2
    end
    dgn.place_maps{tag=("shoal_hut" .. qualifier), count=decoy_count,
                   die_on_error=true}
  end)
end

function shoals_vault_is_mimic(e)
  local params = dgn.map_parameters()
  if params == nil then
    return false
  end

  local tag, tag2 = table.unpack(params)
  return tag2 ~= nil and string.find(tag2, "mimic")
end

-- When the kraken dies, the tides will control the water, so the items will
-- be accessible!
function shoals_atoll_kraken_death(data, triggerable, triggerer, marker, ev)
    crawl.mpr("The surface of the water froths suddenly, and then rushes away.",
              "warning")

    local points = dgn.find_marker_positions_by_prop("water_marker", 1)
    for _, point in ipairs(points) do
        dgn.fprop_changed(point.x, point.y, "no_tide")
    end
    -- Force tide effects to be applied immediately.
    dgn.apply_tide()
end

function shoals_atoll_place_items(data, triggerable, triggerer, marker, ev)
    local points = dgn.find_marker_positions_by_prop("tide_seed", 1)
    for _, point in ipairs(points) do
        for i = 1, 5 do
            dgn.create_item(point.x, point.y, "star_item")
        end
    end
end

function shoals_ice_setup(e)
  e.subst("- = xxxW.")
  e.rtile("x = wall_ice_block")
  e.set_feature_name("rock_wall", "ice covered rock wall")
  e.colour(".x@01eO| = white")
  e.ftile(".x@+01eO| = floor_ice")
end
}}

###############################################################################
#
# <<1>> Shoals entries.
#       All must have the shoals_entry tag and place an enter_shoals feature.
#
###############################################################################

NAME:  shoals_dummy_entry
TAGS:  shoals_entry transparent
KFEAT: O = enter_shoals
MAP
O
ENDMAP

NAME:   minmay_shoals_entry_lonely_mermaid
TAGS:   shoals_entry no_monster_gen transparent
ORIENT: float
KMONS:  1 = merfolk siren
KFEAT:  1 = w
SUBST:  Y = W.
SUBST:  y = Ww
KFEAT:  O = enter_shoals
MAP
     xx...@...xx
   xxxWY.....YWxxx
 xxxyWWWY...YWWWyxxx
xxwyWWWWxxxxxWWWWywxx
xwwyOWyxx   xxyW1ywwx
xwwwyyxx     xxyywwwx
xxwwwxx       xxwwwxx
 xxxxx         xxxxx
ENDMAP

NAME:  minmay_shoals_entry_hut
TAGS:  shoals_entry transparent
MONS:  snapping turtle, water elemental
SUBST: w = wwwW
TILE:  x = wall_pebble_lightgray
KFEAT: O = enter_shoals
MAP
  WWWWWWW
 WWwwwwwWW
WWwxxxxxwWW
Wwxx1..xxwW
Wwx.....xwW
Wwx..O..+.@
Wwx.....xwW
Wwxx2..xxwW
WWwxxxxxwWW
 WWwwwwwWW
  WWWWWWW
ENDMAP

NAME:   minmay_shoals_entry_centaurs
TAGS:   shoals_entry transparent patrolling
MONS:   centaur, plant
KFEAT:  O = enter_shoals
SUBST:  2 = 2..
NSUBST: 1 = 2:1 / 1:. / * = 11...
MAP
   .......
  .2222222.
 .222...222.
.222.222...2.
.22.2222222.2
.2.22.112222.
.2.221O1222.2
.2.22.12.22.2
.22.2222.222.
.222....2222.
 .222222222.
  .22.2..2.
   ..2.22.
ENDMAP

NAME:    minmay_shoals_entry_beasts
TAGS:    shoals_entry transparent patrolling
MONS:    wind drake, manticore
NSUBST:  1 = 1:112 / 1:2 / *:.
KFEAT:   O = enter_shoals
MAP
111
1O1
111
ENDMAP

NAME:   elwin_shoals_entry_rocks
TAGS:   shoals_entry transparent
KFEAT:  O = enter_shoals
MAP
.WW...W..
WxxW..xWW
WWxxWxxx.
.WW..WW..
.WW.O.xW.
W..W...WW
.xWW.WWW.
Wxx.WxxW.
.x....xx.
ENDMAP

NAME:   elwin_shoals_entry_stream
TAGS:   shoals_entry transparent
KMONS:  1 = merfolk ; mundane spear
KMONS:  2 = merfolk siren ; spear
KFEAT:  12 = W
KFEAT:  O = enter_shoals
NSUBST: Y = 2:1 / *:W, Z = 2:1 / *:W, 1 = 1:122 / 1:1W / *:1
MAP
    xxxxxxx
  xxx.....xxx
xxx...xOx...xxx
x....WWWWW....x
x.YYYxxxxxZZZ.x
+W.xxx   xxx.W+
+xxx       xxx+
ENDMAP

NAME:   elwin_shoals_entry_rooms
TAGS:   shoals_entry transparent
KMONS:  1 = merfolk / merfolk siren / nothing w:40
KFEAT:  1 = W
KFEAT:  O = enter_shoals
NSUBST: 1 = 4:1 / *:W
validate {{ return has_exit_from_glyph('O') }}
MAP
@...xxxxxxx....
.+xxxWWwWWxxxx.
.xWwWxWwWxWWWx.
.xW1WxW1Wxw1Wx.
.xWWWxxxxxWWWx.
.xxxxxWWW+xxxx.
...xWW1O1WWx...
.xxxx+WWWxxxxx.
.xWWWxxxxxWWWx.
.xW1wxW1WxW1Wx.
.xWWWxWwWxWwWx.
.xxxxWWwWWxxx+.
....xxxxxxx...@
ENDMAP

NAME:   nicolae_shoals_entry_flooding
TAGS:   shoals_entry patrolling transparent
WEIGHT: 5
KMONS:  M = merfolk
KMONS:  O = water nymph
KITEM:  $ = $ q:1 no_pickup
KFEAT:  O = enter_shoals
KFEAT:  $ = W
NSUBST: M = 1:M`` / *:`
SUBST:  x = xx`, ` = W.
MAP
 .........
...xx`xx...
..xxx`xxx..
.xxxWW$xxx.
.xxWMMMWxx.
.``WMOMW``.
.xxWMMMWxx.
.xxx$WWxxx.
..xxx`xxx..
...xx`xx...
 .........
ENDMAP

NAME:  nicolae_shoals_entry_roost
TAGS:  shoals_entry patrolling transparent
KMONS: OH = harpy
KFEAT: O = enter_shoals
SUBST: ` = .W, H = H..
MAP
```````
`WWWWW`
`WxHxW`
`WHOHW`
`WxHxW`
`WWWWW`
```````
ENDMAP

NAME:    mainiacjoe_shoals_entry_four_pools
TAGS:    shoals_entry transparent
KMONS:   P = plant
KMONS:   1 = merfolk
KMONS:   2 = merfolk siren / manticore / harpy / cyclops
KITEM:   $ = gold q:1
KFEAT:   @P12$ = W
KFEAT:   O = enter_shoals
SHUFFLE: 12
NSUBST:  2 = 1:2 / *:W
MAP
xxxxx@xxxxx
xWW1xWx1WWx
xWWWxWxWWWx
xPxxxWxxxPx
x$WWWPWWW$x
xPxxxWxxxPx
xWWWxWxWWWx
xWW1xWxOWWx
xxxxx@xxxxx
ENDMAP

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

default-depth: Shoals

NAME:   overgrown_tower
TAGS:   transparent extra
WEIGHT: 5
MONS:   plant, fungus
SUBST:  x = x:60 `
SUBST:  . = . 2:1, ' = ' 1:5
FTILE:  `+ = floor_pebble_lightcyan
FTILE:  .2 = floor_sprouting_ruin
TILE:   x = wall_lair
MAP
 '''''''''
'''xx+xx'''
''xx...xx''
'xx.....xx'
'x.......x'
'x.......x'
'x.......x'
'xx.....xx'
''xx...xx''
'''xxxxx'''
 '''''''''
ENDMAP

NAME:   shoals_oasis
TAGS:   transparent extra
WEIGHT: 1
MONS:   plant
SUBST:  . = 1:1 .
SUBST:  W = W .
SUBST:  w = W w
SUBST:  _ = w
MAP
  ...
 ..W..
..WwW..
.Ww_wW.
..WwW..
 ..W..
  ...
ENDMAP

NAME:   nicolae_shoals_former_cling_halls
TAGS:   no_pool_fixup extra no_descent
DEPTH:  Shoals:2-, !Shoals:$
ORIENT: float
NSUBST: D = 2=w / x, E = 2=w / x, F = 2=w / x
SUBST:  ' = ..wx, . = W...., H = x_, J = xw
KMASK:  Ww = no_monster_gen
CLEAR: _
MAP
 Hxx.......xxH
Hxxww'w'w'wwxxH
HxJwwDwEwFwwJxH
HxJwwDwEwFwwJxH
HxJwwDwEwFwwJxH
HxJwwDwEwFwwJxH
HxJwwDwEwFwwJxH
HxJww'w.w'wwJxH
HxJww.$>$.wwJxH
HxJww.....wwJxH
HxJwwwwwwwwwJxH
HxJwwwwwwwwwJxH
HxJJJJJJJJJJJxH
HxxxxxxxxxxxxxH
 HHHHHHHHHHHHH
ENDMAP

NAME:    nicolae_shoals_former_cling_ruins
TAGS:    no_pool_fixup extra no_descent
DEPTH:   Shoals:2-
NSUBST:  D = 1:wx / *:x, E = wx / x, F = wx / x, H = wx / x
NSUBST:  J = 2:w / *:x, K = 2=w / x, L = 2=w / x, M = 2=w / x, N = ' / 'x / x
SUBST:   O = x', ' = W..., P = xw
KMASK:   Ww = no_monster_gen
MAP
xxxO'''''''Oxxx
x'O'wwwwwww'O'x
xO'OwJJJJJwO'Ox
O'OOwwwwwwwOO'O
'wwwPwDDDwPwww'
'wMwwwwwwwwwKw'
'wMwHw$N'wEwKw'
'wMwHwN>NwEwKw'
'wMwHw'N$wEwKw'
'wMwwwwwwwwwKw'
'wwwPwFFFwPwww'
O'OOwwwwwwwOO'O
xO'OwLLLLLwO'Ox
x'O'wwwwwww'O'x
xxxO'''''''Oxxx
ENDMAP

NAME: nicolae_shoals_seven_spires
TAGS: transparent water_ok extra
MAP
     .....
   ....c....
  ....ccc....
 ..c...c...c..
 .ccc.....ccc.
...c..   ..c...
.....     .....
..c..     ..c..
.ccc.     .ccc.
..c...   ...c..
 .............
 ....c...c....
  ..ccc.ccc..
   ..c...c..
     .....
ENDMAP

NAME: nicolae_shoals_square_sea_wall
TAGS: water_ok transparent extra
MAP
..............
.cc..cccc..cc.
.c..........c.
...        ...
...        ...
.c.        .c.
.c.        .c.
.c.        .c.
.c.        .c.
...        ...
...        ...
.c..........c.
.cc..cccc..cc.
..............
ENDMAP

NAME: nicolae_shoals_circle_sea_wall
TAGS: water_ok transparent extra
MAP
      .....
    ..cc.cc..
   .cc.....cc.
  ....     ....
 .c..       ..c.
 .c.         .c.
.c.           .c.
.c.           .c.
...           ...
.c.           .c.
.c.           .c.
 .c.         .c.
 .c..       ..c.
  ....     ....
   .cc.....cc.
    ..cc.cc..
      .....
ENDMAP

NAME:  nicolae_shoals_cliffside_cave
TAGS:  water_ok no_pool_fixup transparent extra
KPROP: ~' = no_tide
SUBST: X = x., W = w.
KFEAT: ~ = w
MAP
    xxxx
  xxxxxxxx
@XxxxxxxxxX@
.Xxxx~~xxxX.
.xxx''~~xxx.
.xxx'''~~xx.
.Xxxx'''~xX.
.Xxxxx'~xx.W
W.xxx'~xxx.w
w.xx'~xxxX.w
w.Xx'~xxxX.w
w..xx'~xx.Ww
ww.Xxx'~~.ww
wwW......~ww
 wwwwwwwwww
ENDMAP

NAME:    nicolae_shoals_stone_sculpture_thing
TAGS:    water_ok transparent extra
SHUFFLE: abde
SUBST:   ab = @, de = ., C : .c, y : .wc, z : .wc
MAP
    CbbC
   cc..cc
  ccz..zcc
 ccyc..cycc
Cczc....czcC
a....ww....d
a....ww....d
Cczc....czcC
 ccyc..cycc
  ccz..zcc
   cc..cc
    CeeC
ENDMAP

NAME:    nicolae_shoals_arrival_archipelago
TAGS:    transparent
SHUFFLE: {[(<, abc, def
SUBST:   a:@, de:., bcf:W
MAP
     wwwwb
    www...b
 wwwww..{..b
wwwwwd.....w
ww..dd....ww
c....dwwffww
c..(.wwwffww
c....ee....w
ww..eee.[..w
wwwwwee....a
  wwww....a
    wwwwwa
ENDMAP

NAME:    nicolae_shoals_c_island
TAGS:    water_ok no_pool_fixup
DEPTH:   Shoals, !Shoals:$
KPROP:   .wW}xtD = no_tide
KFEAT:   D = any shop
SHUFFLE: }])
SUBST:   y = Ww, z = w
MAP
       xxxxxx
    xtttttttxx
  xtt.........xz
 xx....WWWWW...xz
 x...xwwwWwww...z
 x..xwwwwWwwwww.z
yx..xwwwWWWwwwwwz
x..xxwwwW}Wwwwwwz
xDx..wwwWWWwwww.z
x..t.twwwwwwwww.z
yttt.ttwwwwwww..z
 tt....xxwwww...z
  ttt..........yz
   yyy........yz
     yyy....yyz
       yyyyyy
ENDMAP

NAME:  nicolae_shoals_dead_sea_scrolls
SUBST: Z = PWs., p = P.., s = sW
KITEM: d = any scroll w:30 / any parchment slevel:1 / any parchment w:2
KMONS: Ps = plant
KPROP: .WwpPsd = no_tide
KFEAT: y = w
KFEAT: s = W
MAP
 xxxxx
xxxxdxxxx
xxddxPxxxxx
xxddxpPxxxx
xxxxxppppxx
xxxpp...ppxx
xxpp..ZZZZZxy
xxpp.ZZwwwwwyy
xxxp.ZZwwwwwyy
xxxx..Zwwwwyyy
 xxx..Zwwwwyyy
  xx..Zwwwyyy
    @@Zwwwyy
ENDMAP

NAME:    nicolae_shoals_island_circles
TAGS:    transparent
ORIENT:  float
SHUFFLE: abc/xyz
SUBST:   Z = Ww, ab = ., c = sG, xy = xx., z = x
: if you.depth() == 1 then
SUBST:   s = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:   s = [{(
: else
SUBST:   s = ]})[{(
: end
MAP
              wwwwwww
             wwwZZZwww
     wwwwwwwwwwZ...Zwww
    wwwZZZwwwwZ.....Zww
   wwZZ...ZZwZ...a...Zw
  wwZ.......ZZ..aaa..Zwwwww
  wwZ...a...WW...a...ZZZZwww
  wZ...aba...ZZ.....WZ...Zww
  wZ..abcba..ZwZ...ZW.....Zw
  wZ...aba...ZwwZZZwZ..a..Zw
  wwZ...a...ZwwwwwwwZ.....Zw
  wwZ.......ZwwwwwwwwZ...Zww
  wwwZW...ZZwwwwwwwwwwZZWWwww
 wwwZZWZZZwwwwwwwwwwwwwwZ.Zww
wwwZ...ZwwwwwwwwwwwwwwwZ...Zw
wwZ.....ZwwwwwwwwwwwwwwwZ.Zww
wZ...a...ZwwwwwwwwwwwwwwwWwww
wZ..aaa..ZwwwwwwwwwwwwwwZWZw
wZ...a...Zwwwwwwwwwwwww  @
wwZ.....Zwwwwwwwwwwww
wwwZ...WWZZwwwwwwwww
 wwwZZZZ...Zwwwwwww
  wwwwZ.....Zwwwwww
     wZ..a..ZwZwww
     wZ.....WZ.ZwZ
     wwZ...ZW...WW@
     wwwZZZwwZ.ZwZ
      wwwwwwwwZwww
            wwwww
ENDMAP

NAME:  nicolae_shoals_loop_pool
TAGS:  transparent
KPROP: w- = no_tide
SUBST: Y = yZ, y = x___, Z = w.___, - = .
CLEAR: _
MAP
 yxxxyyY
yxx-----Y
yx--www--YZZZ
yx-wwwww-....@
yx-wwwwwxxxxxxy
yx-wwwww-----xxy
yx--www--www--xy
yxx-----wwwww-xy
 yxxxxxxwwwww-xy
  @....-wwwww-xy
   ZZZY--www--xy
       Y-----xxy
        Yyyxxxy
ENDMAP

NAME:    nicolae_shoals_land_atoll
TAGS:    extra no_pool_fixup no_tide transparent water_ok
SUBST:   a = DE, p = EF, q = FH, r = HJ, s = KJ, y = KL, z = LM, - = MD
SUBST:   R = NO, S = OP, Z = PQ, ! = QN, _ = NOPQ
SHUFFLE: DEFHJKLM
SUBST:   D : ', E : 'wx, FH : w, JK : x, L : wx, M : wx, N : wx', O : wx'
SUBST:   P : wx', Q : wx', ' = W., x = x:50 c
MAP
   pppFFFqqq
  EEppFFFqqHH
 EEEp.....qHHH
aEE.........HHr
aaa...OOO...rrr
aa...ROOOS...rr
DD..NNROSPP..JJ
DD..NNN_PPP..JJ
DD..NN!QZPP..JJ
--...!QQQZ...ss
---...QQQ...sss
-MM.........KKs
 MMMz.....yKKK
  MMzzLLLyyKK
   zzzLLLyyy
ENDMAP

NAME:  nicolae_shoals_lost_giant_amphitheater
TAGS:  extra no_exits water_ok luniq_nicolostgiant
SUBST: c = c:50 _
CLEAR: _
MAP
      cccccccc
      cccccccc
  cccc        cccc
  cccc        cccc
  cc            cc
  cc   cccccc   cc
cc     cccccc     cc
cc   cc      cc   cc
cc   cc      cc   cc
cc   cc      cc   cc
cc   cc      cc   cc
cc   cc      cc   cc
cc   cc      cc   cc
cc     cccccc     cc
  cc   cccccc   cc
  cc            cc
  cccc        cccc
  cccc        cccc
      cccccccc
      cccccccc
ENDMAP

NAME:  nicolae_shoals_lost_giant_baths
TAGS:  extra no_exits no_pool_fixup luniq_nicolostgiant
SUBST: c = c:50 _, w = w:50 _
CLEAR: _
MAP
cccc  cccc  cccc
cccc  cccc  cccc
cc            cc
cc  ww    ww  cc
   wwww  wwww
   wwww  wwww
cc  ww    ww  cc
cc     cc     cc
cc     cc     cc
cc  ww    ww  cc
   wwww  wwww
   wwww  wwww
cc  ww    ww  cc
cc            cc
cccc  cccc  cccc
cccc  cccc  cccc
ENDMAP

NAME:  nicolae_shoals_lost_giant_hut
DEPTH: Shoals
TAGS:  extra no_exits water_ok luniq_nicolostgiant
SUBST: c = c:50 _
CLEAR: _
MAP
  ccc    ccc
 cccc    cccc
ccc        ccc
cc          cc
cc    cc    cc
      cc
    cccccc
    cccccc
      cc
cc    cc    cc
cc          cc
ccc        ccc
 cccc    cccc
  ccc    ccc
ENDMAP

NAME:  nicolae_shoals_lost_giant_pillars
DEPTH: Shoals
TAGS:  extra no_exits water_ok luniq_nicolostgiant
SUBST: c = c:50 _
CLEAR: _
MAP
cccccccccccccccc  cccccccccccccccc
cccccccccccccccc  cccccccccccccccc
cc                              cc
cc                              cc
    cc  cc  cc  cc  cc  cc  cc
    cc  cc  cc  cc  cc  cc  cc
cc                              cc
cc                              cc
    cc  cc  cc  cc  cc  cc  cc
    cc  cc  cc  cc  cc  cc  cc
cc                              cc
cc                              cc
cccccccccccccccc  cccccccccccccccc
cccccccccccccccc  cccccccccccccccc
ENDMAP

NAME:  nicolae_shoals_lost_giant_temple
TAGS:  extra no_exits water_ok luniq_nicolostgiant
SUBST: c = c:50 _
CLEAR: _
MAP
cccccc  cc    cc  cccccc
cccccc  cc    cc  cccccc
cc                    cc
cc                    cc
cc  cc  cccccccc  cc  cc
cc  cc  cccccccc  cc  cc
_
_
cc  cc  cc    cc  cc  cc
cc  cc  cc    cc  cc  cc
    cc     cc     cc
    cc    cccc    cc
    cc    cccc    cc
    cc     cc     cc
cc  cc  cc    cc  cc  cc
cc  cc  cc    cc  cc  cc
_
_
cc  cc  cccccccc  cc  cc
cc  cc  cccccccc  cc  cc
cc                    cc
cc                    cc
cccccc  cc    cc  cccccc
cccccc  cc    cc  cccccc
ENDMAP

NAME:  nicolae_shoals_nautilus_by_nature
TAGS:  extra transparent water_ok
: if you.depth() == 1 then
SUBST: S = )}]
: elseif you.depth() ~= dgn.br_depth(you.branch()) then
SUBST: S = (){}[]
: else
SUBST: S = ({[
: end
MAP
       ccccccc
     ccc.....ccc
     c.........c
 @..cc.........cc
 ...c...ccccc...c
 ...c...c...c...c
c...c...c.S.c...c
c...c.......c...c
c...c.......c...c
cc..cc.....cc..cc
 c...ccccccc...c
 cc...........cc
  cc.........cc
   ccc.....ccc
     ccccccc
ENDMAP

NAME:   nicolae_shoals_aurelia_aurita
TAGS:   transparent no_tide
DEPTH:  Shoals
ORIENT: float
KFEAT:  @ = W
MAP
@W     wwwwwww      @
 WW  wwwwcccwwww   WW
  W wwwwccWccwwwwWWW
  WWwwwccWwWccwwWW
  wWWWwcWwwwWcwwWww
 wwwwWWccWwWccwWWwww
 wwwwwWwcWwWcWWWwwww
wwwcccWWwwwwWWwcccwww
wwccWccWWWwwWwccWccww
wccWwWWwwWWWWwWWwWccw
wcWwwwwwwWWWwwwwwwWcw
wccWwWWwWWWWwwWWwWccw
wwccWccwWwwWWWccWccww
wwwcccwWWwwwwWWcccwww
 wwwwWWWcWwWcwWwwwww
 wwwWWwccWwWccWWwwww
  wwWwwcWwwwWcwWWWw
   WWwwccWwWccwwwWW
 WWWwwwwccWccwwww W
WW   wwwwcccwwww  WW
@      wwwwwww     W@
ENDMAP

NAME:    nicolae_shoals_gull_way
TAGS:    transparent water_ok
DEPTH:   Shoals
SHUFFLE: DEFHJKLMN
SUBST:   H : H`, J : J`, K : K`
NSUBST:  D = + / c, E = + / c, F = + / c, H = + / c, J = + / c, K = + / c, \
         P = 2=+ / 2=n / +c / nc / c, Q = + / n / +c / nc / c
SUBST:   _ = _w, LMN = `
KPROP:   +` = no_tide
FTILE:   +n = floor_pebble_green
FTILE:   ` = floor_sprouting_ruin
CLEAR:   _
MAP
cccPccccPcccPccc+cc
c`````F```E```D```c
c`````F```E```D```c
P`````F```E```D```c
c`````F```E```D```c
c`````F```E```D```c
cHHHHHcc+cccQcccQcc
P`````c............ _______
c`````Q.wwwwwwwwwwwwwwwwwww____
cJJJJJc.wwwwwwwwwwwwwwwwwwwwwww____
c`````Q.wwwwwwwwwwwwwwwwwww____
P`````c............ _______
cKKKKKcc+cccQcccQcc
c`````L```M```N```c
c`````L```M```N```c
P`````L```M```N```c
c`````L```M```N```c
c`````L```M```N```c
cccPccccPcccPccc+cc
ENDMAP

NAME:    regret_index_shoalsdec_tripartite
TAGS:    transparent water_ok shoalsdec
DEPTH:   Shoals
SHUFFLE: ABC, DEF
SUBST:   AD = @, B : c``, E : c``, CF = c
CLEAR:   `
MAP
cccABCccc cccFEDccc
c       ccc       c
c      cc cc      c
A    wcc   ccw    D
B   wcc     ccw   E
C  wcc       ccw  F
c  cc         cc  c
c cc           cc c
ccc             ccc
 c
ccc
c cc
c  cc
F  wcc
E   wcc
D    wcc
c      cc
c       c
cccDEFccc
ENDMAP

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

# Shoal Ruins - nothing special, just some flavor (Enne)
# Appear rarely.
#
NAME:   overgrown_hall
WEIGHT: 5
MONS:   plant, fungus, pile of debris
MONS:   cyclops / stone giant w:2
SUBST:  x = xx", G = GG33.
SUBST:  . = .:90 1:19 x:1
SUBST:  1 = 1 2:1, ' = .
FTILE:  " = floor_pebble_lightcyan
FTILE:  .123G4 = floor_sprouting_ruin
MAP
xxxxxxxxxxx
x.........x
x.G'G.G'G.x
+''.'4'.'.+
x.G'G.G'G.x
x.........x
xxxxxxxxxxx
ENDMAP

NAME:   overgrown_statue
TAGS:   transparent
WEIGHT: 1
MONS:   plant
MONS:   ice statue / orange crystal statue / obsidian statue
SUBST:  . = 1:1 .:30
SUBST:  p = 1:2 .
SUBST:  P = 1:20 .
SUBST:  G = G 2
MAP
  ........
 ..........
....ppp.....
...ppppp....
..ppPPPpp...
..ppPGPpp...
..ppPPPpp...
...ppppp....
....ppp.....
 ..........
  ........
ENDMAP

NAME:   yaktaur_hedge
TAGS:   transparent
MONS:   bush
MONS:   yaktaur
MAP
.......
.11111.
.1...1.
.1.1.1.
.1.121.
.1.111.
.......
ENDMAP

NAME:    hangedman_shoal_volcano
TAGS:    no_monster_gen no_item_gen patrolling transparent
KMONS:   12 = merfolk ; trident ego:flaming | spear ego:flaming . \
             robe ego:fire_resistance | robe w:5 . \
             buckler ego:fire_resistance | buckler | nothing w:30
KMONS:   3 = merfolk siren ; trident ego:flaming | spear ego:flaming . \
             robe ego:fire_resistance | robe w:5 . \
             buckler ego:fire_resistance w:20 | buckler | nothing w:70
KMONS:   4 = merfolk avatar
KMONS:   67 = fire bat
KMONS:   8 = fire crab
KITEM:   67 = % w:15 / *
KITEM:   8 = * w:15 / |
KPROP:   l = no_cloud_gen
KPROP:   .1234"x = no_tide
: if crawl.random2(you.depth()+4) <= you.depth() then
SUBST:   3 = 4
SHUFFLE: 12 / 4"
: else
SHUFFLE: 12 / 3"
: end
: if crawl.random2(you.depth()+4) <= you.depth() then
SUBST:   7 = 8
: end
SUBST:   6 = 66*, X = xx., x : x:9 .:1
FTILE:   '678* = floor_volcanic
COLOUR:  '678* = red
MAP
   WWWWWWWW
 WWWW.xx.WWWW
 WW..x..x..WW
WW.x2x''x"x.WW
WW.1''''''3.WW
W.xx'8ll6'xx.W
Wx.''llll''.xW
Wx.''llll''.xW
W.xx'6ll7'xx.W
WW.3''''''2.WW
WW.x"x''x1x.WW
WWW..x..x..WWW
 WWWW.xx.WWWW
   WWWWWWWW
ENDMAP

NAME:    st_cyclops
DEPTH:   Shoals, !Shoals:$
MONS:    cyclops, stone giant / frost giant
KMONS:   P = plant
KMONS:   f = fungus
SHUFFLE: 23
SUBST:   p = p., p = Pf, y = xP., x = x:20 c:2 P:2
SUBST:   2 = 21, 3 = 1
MAP
   ppppp
  yyyyyyy
 pyxxyxyyy.
pyxypppxx.1.
pyxpp1.px...
pyxp2.1..1.3
pyypp1.px...
pyxxpppyx.1.
 ypxxyxxyy.
  yyyyyyy
   ppppp
ENDMAP

NAME:    st_shoals_ruin
DEPTH:   Shoals, !Shoals:$
TAGS:    no_pool_fixup
MONS:    cyclops, frost giant, stone giant
KMONS:   P = plant
KMONS:   f = fungus
KMONS:   D = pile of debris
KFEAT:   Pfp = shallow_water
KFEAT:   D = deep_water
SUBST:   p = ppWw, p = Pf, y = xxxcccPPfDDw, f = PPwW, x = x:10 c:1
SHUFFLE: 23
SUBST:   2 = 2:15 1:10, 3 = 3:15 1:10
FTILE:   .123pf* = floor_sprouting_ruin
MAP
   ppp  @ ppp
  pppxx..xxppp
 ppxxx.3.wfxxpp
ppxxpxx..xwfxxpp
ppxpppxxxWWffxpp
pxx**ppyfWWWfxxp
pxp1..pyfW..ffxp
pxp.21pyf..1.wxp
pxp1..yyy1...pxp
pxxp.1pyp..1pxxp
ppxp.......ppxpp
ppxxp..p.fppxxpp
 ppxxpyyyyfxxpp
  ppxxxxxxxxpp
   pppppppppp
ENDMAP

NAME:    st_sunken_huts
DEPTH:   Shoals, !Shoals:$
KMONS:   1 = merfolk javelineer
KMONS:   2 = merfolk impaler
KMONS:   3 = merfolk aquamancer
KMONS:   4 = merfolk
KMONS:   5 = merfolk siren / merfolk avatar
KFEAT:   12345 = deep_water
SHUFFLE: 1235
NSUBST:  V = 1:w / *:x
NSUBST:  U = 1:w / *:x
NSUBST:  Y = 1:w / *:x
NSUBST:  X = 1:w / *:x
NSUBST:  Z = 1:w / *:x
SUBST:   W = wWW
MAP
      WWWWWWWWWWWWWWW
   WWWwwwwwwwxxxxwwwwWWW
 WWwxxxxwwwwwxw2xwwwwwwwWW
Wwwwx1wVww4wwUwwUww4wxYxxwW
WwwwxwwVwwwwwxUUxwwwwYwwxwW
WwwwxVVxwwwwwwwwwwwwwYw2xwW
WwwwwwwwwxZZxwwxXXxwwxYxxwW
Wwwww4wwwZwwZw5XwwxwwwwwwwW
 WWwwwwwwxw1xwwXw3xwwwwwWW
   WWWwwwxxxxwwxxxxwwWWW
      WWWWWWWWWWWWWWW
ENDMAP

NAME:    st_sunken_temple
DEPTH:   Shoals, !Shoals:$
TAGS:    no_pool_fixup no_descent
KMONS:   1 = merfolk javelineer
KMONS:   2 = merfolk impaler
KMONS:   3 = merfolk aquamancer
KMONS:   4 = merfolk
KMONS:   5 = merfolk siren / merfolk avatar
KMONS:   6 = cyclops
KMONS:   7 = stone giant
KMONS:   8 = frost giant
KMONS:   9 = titan
KMONS:   D = pile of debris
KFEAT:   123456789D = deep_water
KITEM:   | = $, *, |
KITEM:   * = $, %, *
KFEAT:   |* = shallow_water
SHUFFLE: 12345 / 86769
NSUBST:  Z = 1:w / *:c
SUBST:   G = GGDwwW, 7 = 667, 8 = 688, 9 = 7899, x = c
KPROP:   |* = no_tele_into
MAP
   xxxxxxxxxxx
  xxGxGxGxGxGxx
 xxwwwwwwwwwwwxx
 xwww1wwwww1wwwx
xxwwxxxxZxxxxwwxx
xGwwx|wwwww*xwwGx
xxwwxw2www4wxwwxx
xGwwZwww5wwwZwwGx
xxwwxw4www2wxwwxx
xGwwx*wwwww*xwwGx
xxwwxxxxZxxxxwwxx
 xwww3wwwww3wwwx
 xxwwwwwwwwwwwxx
  xxGxGx+xGxGxx
   xxxxx@xxxxx
ENDMAP

NAME:   nicolae_shoals_undead_eyrie
TAGS:   transparent
SUBST:  y = ..xx1
NSUBST: . = 4:1 / *:.
MONS:   harpy zombie w:30 / manticore zombie / bat zombie w:5
MAP
 .....
...y...
..yxy..
.yxxxy.
..yxy..
...y...
 .....
ENDMAP

NAME:    nicolae_shoals_mertower
TAGS:    patrolling no_monster_gen
KPROP:   a+-12 = no_tide
ITEM:    tower shield good_item / tower shield randart / superb_item w:20
MONS:    merfolk, merfolk impaler / merfolk javelineer w:5
SUBST:   - = -:110 1 2:5
MAP
  wwwwwwww
 wwwxxmxxww
 wwxx-2-xxw
.a1x--*--xw
.aa+--d-2mw
.a1x--*--xw
 wwxx-2-xxw
 wwwxxmxxww
  wwwwwwww
ENDMAP

NAME:   nicolae_shoals_aquamancer_cove
TAGS:   no_monster_gen
KMONS:  123 = merfolk aquamancer
KFEAT:  1 = w
KFEAT:  2 = .
KFEAT:  3 = W
SUBST:  X = x., c : cx
NSUBST: 1 = 1:1 / 1:w / * = 1www
: tile("c = " .. crackle_def(_G))
MAP
     xxxX.@
    xx...2.
  xxxX.Xxx.
xxcXX...Xcxx
xXX...*..XXxx
xX...3W3...Xxx
x..WWwwwWW..Xx
x.Ww1www1wW.Xx
Xw1wwwwwww1wXx
  wwwwwwwww
    wwwww
ENDMAP

NAME:  nicolae_shoals_kraken_intersection
TAGS:  transparent no_pool_fixup water_ok no_trap_gen
SUBST: b = .w, z = x.
KPROP: w1. = no_tide
KPROP: c = no_tele_into
SUBST: c = xw
KFEAT: 1 = w
KMONS: 1 = kraken
MAP
 ccxx@@xxcc
ccxxz..zxxcc
cxxz.bb.zxxc
xxz.bwwb.zxx
xz.bwwwwb.zx
@.bwww1wwb.@
@.bwwwwwwb.@
xz.bwwwwb.zx
xxz.bwwb.zxx
cxxz.bb.zxxc
ccxxz..zxxcc
 ccxx@@xxcc
ENDMAP

NAME:    hangedman_shoals_cup_caves
TAGS:    water_ok
MONS:    cyclops / stone giant w:2
MONS:    merfolk siren, harpy, snapping turtle, centaur / centaur warrior
MONS:    sea snake
KFEAT:   z = c
SHUFFLE: 234560, ABC
SUBST:   A : x:6 .:1, B : xxw., C : xw.., x = x:9 c:1
SUBST:   % = %:8 *:1 .:1
TILE:    z = wall_stone_magic_shelf
MAP
 xxxx        xxxxx  xxxx
xxxcxxxxW@Wxxxxcxxxxxcxxx
xW..%zxWABAWxz414zxz...Wx
WA...2x.....x%...%x%5..AW
@B.C.1c..C..c..C..c1.C.B@
WA...2x3...3x.....x%5..AW
xW..%zxz%1%zxWABAWxz...Wx
xxxcxxxxxcxxxxW@Wxxxxcxxx
 xxxx  xxxxx        xxxx
ENDMAP

NAME:   nicolae_shoals_so_close
TAGS:   no_pool_fixup water_ok no_item_gen no_trap_gen no_monster_gen no_descent
DEPTH:  Shoals, !Shoals:$
KPROP:  YycfZ. = no_tide
KPROP:  ZYcf. = no_tele_into
KMONS:  c = patrolling wraith
NSUBST: f = 1:g / 2:f / *:.
KITEM:  g = gold
KITEM:  f = gold / nothing w:10
KITEM:  c = human skeleton
SUBST:  Z = yY
KFEAT:  y = w
KFEAT:  Y = W
MAP
    wwwwwww
   wwwwwwwww
  wwwyyyyywww
 wwwyyyyyyywww
wwwyyZZZZyyywww
wwyyZZYYYZyyywww
wwyyZY...YZyyyww
wwyyZY.c.Yyyyyyw
wwyyZY..Yyyffyyw
 wwyyZYYyyyffyyw
  wwyyyyyyyyyyww
   wwyyyyyyyyww
    wwwwwwwwww
ENDMAP

NAME:  nicolae_shoals_siren_and_animal_friends
TAGS:  patrolling no_monster_gen
SUBST: w = f:4 w W
KMONS: f = bat w:5 / harpy / manticore w:5 / \
       kraken w:1 / sea snake / sky beast w:1 / \
       snapping turtle / steam dragon w:1 / alligator w:5 / \
       alligator snapping turtle / anaconda w:1 / \
       water moccasin w:5 / electric eel w:1
KMONS: s = merfolk avatar
KFEAT: sf = w
MAP
  www
 wwwww
wwwwwww
wwwswww
wwwwwww
 wwwww
  www
ENDMAP

NAME:  nicolae_shoals_hunting_party
TAGS:  no_item_gen no_monster_gen
DEPTH: Shoals:2-
KMONS: i = merfolk impaler band / merfolk javelineer band
SUBST: : = .:3 h:1, W = .W
: dgn.delayed_decay(_G, 'h', 'snapping turtle corpse')
MAP
WWWWWWW
WW:::WW
W:::::W
W:i:i:W
W:::::W
WW:::WW
WWWWWWW
ENDMAP

NAME:    nicolae_shoals_isolated_beach
TAGS:    water_ok no_pool_fixup no_descent
DEPTH:   Shoals:2-
NSUBST:  { = 1:{ / *:.
SUBST:   b = .wW, r = ..Wxx
KPROP:   wW.{x1 = no_tide
SHUFFLE: {([
KMONS:   1 = merfolk / merfolk impaler w:5 / merfolk siren w:5 / nothing w:20
KFEAT:   : = . / W
KFEAT:   y = w
MAP
    yyyyyyyy
   yywwwwwwyy
  yywwbbbbwwyy
 yyywb{.1.bwwyy
yyxxxxxrr.bwwwyy
yxxr{.1.1rbbww::
yxr{rr.rr..bww:@
yxr{rr{rr1.bww:@
yxr{rr.rr..bww:@
yxxr{.1.1rbbww::
yyxxxxxrr.bwwwyy
 yyywb{.1.bwwyy
  yywwbbbbwwyy
   yywwwwwwyy
    yyyyyyyy
ENDMAP

NAME:  nicolae_shoals_wave_tunnel
TAGS:  water_ok transparent
KMONS: m = merfolk
SUBST: m = mm., b = .W, + = .++
MAP
    xxxxxxxxxwwwwwwwxxxxx
   xx.......xxbbbbbxx...@
  xx....m....xx.m.xx...m@
xxx.m.......m.xx+xx.m...@
@...m.xx+xx.m.......m.xxx
@m...xx.m.xx....m....xx
@...xxbbbbbxx.......xx
xxxxxwwwwwwwxxxxxxxxx
ENDMAP

NAME:    nicolae_shoals_flooded_hall
TAGS:    transparent
DEPTH:   Shoals, !Shoals:$
KMONS:   01 = merfolk / nothing w:5
KMONS:   2 = merfolk / merfolk aquamancer / merfolk javelineer \
             / merfolk impaler / nothing w:45
KMONS:   3 = merfolk siren / merfolk avatar w:5 / nothing w:5
KFEAT:   0123 = . w:40 / W
SHUFFLE: }}]]))>
KPROP:   .123wqx = no_tide
SUBST:   . = ....W, ' = ''''W, w = wWW''', q = w, x = xxxc
FTILE:   '123}])> = floor_sprouting_ruin
MAP
     .......
   ...xxxxx...
  .0..x'3'x..0..
 ....xx'2'xx........
..xxxx''w''xxxxxxxx.
.xx''2'www'2''1''1'@
.x}1wwwwqwwwwwwwwww@
.x]1wwwwqwwwwwwwwww@
.xx''2'www'2''1''1'@
..xxxx''w''xxxxxxxx.
 ....xx'2'xx........
  .0..x'3'x..0..
   ...xxxxx...
     .......
ENDMAP

NAME:   nicolae_shoals_water_elemental_grotto
TAGS:   no_pool_fixup no_monster_gen no_trap_gen no_item_gen water_ok
DEPTH:  Shoals, !Shoals:$
KPROP:  .xrR-Ww = no_tide
NSUBST: - = 1:] / *:-
NSUBST: - = 3:z / *:-
SUBST:  r = xx`, R = xxW, ] = ]})`
KMONS:  - = nothing w:20 / plant w:5 / water elemental w:1
KMONS:  z = water elemental
KFEAT:  -z = . / W
KMONS:  W = nothing w:50 / plant
KFEAT:  m = w
MARKER: m = lua:fog_machine { cloud_type = "thin mist", pow_min = 1, \
        pow_max = 3, delay = 10, start_clouds = 1, size_min = 2, \
        size_max = 3, spread_rate = 33 }
FTILE:  .`zWw-]}) = floor_sprouting_stone
FTILE:  " = floor_pebble_green
TILE:   x = wall_pebble_cyan
MAP
   xxxx'''''''
  xxxx"""xxxx@
 xx.....xxrrxx
 x..x..xxwWrrxx
xx..xxxxmwW--Rxx
xm--r-WwwWW--Rwx
xr----WWWW---rRx
xr------------rx
xr------WWWW--rx
xxr----WWmwW--rx
 xrRWWWWWWWW-rxx
 xxRWmWW-----rxx
 xxRwWW-----rrx
  xxRRR----rmxx
  xxxxrrrrrrxx
     xxxxxxxx
ENDMAP

NAME:   wheals_shoals_ruined_temple
TAGS:   water_ok
DEPTH:  Shoals, !Shoals:$
KMONS:  D = pile of debris
KMONS:  1 = kraken
KFEAT:  1D = w
KPROP:  c.GWuw1 = no_tide
SUBST:  u = Ww, . = .:500 0
FTILE:  @ = floor_pebble_yellow
FTILE:  .$C01DWwG = floor_sprouting_ruin
TILE:   G = dngn_statue_centaur w:5 / dngn_statue_maw / dngn_statue_mermaid / \
            dngn_statue_orb w:5 / dngn_statue_princess / \
            dngn_statue_polearm / dngn_statue_tentacles
MAP
ccccccccccccccccccccccccccccccccc
c...c................$WWWWWWuwwwc
@.c...c..G....G...G...DWWWWWuwwwc
c...c.................WWWWWWuwwwc
@.c...c..G....G...G...DWWCWWuw1wc
c...c.................WWWWWWuwwwc
@.c...c..G....G...G...DWWWWWuwwwc
c...c................$WWWWWWuwwwc
ccccccccccccccccccccccccccccccccc
ENDMAP

NAME:    cheibrodos_shoals_oceanic_diplomacy
TAGS:    water_ok no_item_gen no_monster_gen
DEPTH:   Shoals, !Shoals:$
ORIENT:  float
SHUFFLE: 1Ww / 2DD
MONS:    merfolk, faun
MONS:    merfolk impaler ; demon trident good_item | trident good_item . gold
MONS:    satyr ; longbow good_item . gold
COLOUR:  c = white
COLOUR:  1234'D = cyan
FTILE:   1234'D+WwG = floor_pebble_cyan
MAP
      cccccccccccc
     ccGcGccccGcGcc
  .cccwWWWW11WWWWwccc.
@.ccwwWWWW1''1WWWWwwcc.@
..cwWWWWccc++cccWWWWwc..
.c+WWWWcc''''''ccWWWW+c.
.ccccccc''''''''ccccccc.
.ccccccG3''''''4Gcccccc.
.ccccccc''''''''ccccccc.
.c+DDDDcc''''''ccDDDD+c.
..cDDDDDccc++cccDDDDDc..
@.ccDDDDDD2''2DDDDDDcc.@
  .cccDDDDD22DDDDDccc.
     ccGcGccccGcGcc
      cccccccccccc
ENDMAP

NAME:   cheibrodos_shoals_roost
TAGS:   water_ok no_monster_gen
DEPTH:  Shoals, !Shoals:$
ORIENT: float
MONS:   harpy, manticore
NSUBST: - = 6:12 / 3:%*
MAP
    ..ccc..
   .cccGccc.
  .ccc---ccc.
 .cc---W---cc.
 .cc-WWWWW-cc.
.cc--WWWWW--cc.
.cG-WWWWWWW-Gc.
.cc--WWWWWW-cc.
 .cc-WWWWWWWc.
 .cc---WWWWWW.
  .ccc---WWWW.
   .cccGccWW@
    ..ccc...
ENDMAP

NAME:   nicolae_shoals_this_corrosion
TAGS:   water_ok no_item_gen
NSUBST: % = 1:d / *:%%%%%*
KMONS:  1 = oklob plant
KMONS:  2 = merfolk siren
KMONS:  p = plant
KITEM:  d = any ring w:24 / any ring good_item w:5
MAP
 xxxxxx
xx1WW.xx
x%.ww.pp@
x%2ww.pp@
x%.ww.pp@
xx1WW.xx
 xxxxxx
ENDMAP

# XXX: Rare teleport islets possibilities.
NAME:  nicolae_shoals_kraken_party
TAGS:  no_monster_gen no_trap_gen water_ok
DEPTH: Shoals:2-
SUBST: { = {[(, . = ......wW, - = ...W
KFEAT: 1 = w
KMONS: 1 = kraken
MAP
      --.@.--
 xxxxxxx---xxxxxxx
 x1w-.........-w1x
 xw--.........--wx
 x--%.........%--x
 x...............x
-x...............x-
-x...............x-
.-...............-.
@-.......{.......-@
.-...............-.
-x...............x-
-x...............x-
 x............%--x
 x--%........%--wx
 xw--........--1xx
 x1w-........-wxx
 xxxxxxx---xxxxx
      --.@.--
ENDMAP

NAME:   nicolae_shoals_water_shrine
TAGS:   water_ok no_monster_gen no_item_gen
NSUBST: 1 = 3:A / 3:E / 1:AWW / 1:EWW, 2 = 2:N / 1:Nww / *:w
KMONS:  A = merfolk aquamancer
KMONS:  N = water nymph
KMONS:  E = water elemental
KFEAT:  AE = W
KFEAT:  N = w
CLEAR:  _
MAP
     c c
   c     c
      _
 c   1W1   c
    WWWWW
c  1W2w2W1  c
   WWw2wWW
c  1W2w2W1  c
    WWWWW
 c   1W1   c
      _
   c     c
     c c
ENDMAP

NAME:   nicolae_shoals_drake_roost
TAGS:   water_ok no_monster_gen no_tide patrolling
SUBST:  W = WWW w:6
NSUBST: . = 2:s / 2:f / 2:i / 1:sfi / 2:sfi.. / *:.
KMONS:  s = steam dragon
KMONS:  f = rime drake
KMONS:  i = wind drake
MAP
   WWWWWWWW
 WWWWWWWWWWWW
 WWWWWWWWWWWW
WWWWWWWWWWWWWW
WWWWW....WWWWW
WWWW......WWWW
WWWW..xx..WWWW
WWWW..xx..WWWW
WWWW......WWWW
WWWWW....WWWWW
WWWWWWWWWWWWWW
 WWWWWWWWWWWW
 WWWWWWWWWWWW
   WWWWWWWW
ENDMAP

NAME:    regret_index_shoals_crete
TAGS:    no_monster_gen
MONS:    snapping turtle / elephant
KMONS:   2M = faun
KMONS:   3 = satyr
KMONS:   4N = meliai
KMONS:   5 = minotaur
KMONS:   _ = merfolk javelineer
KMONS:   b = bush
KMONS:   p = plant
ITEM:    any potion, longbow good_item, arbalest good_item
# Bacchus-approved.
KFEAT:   _ = altar_uskayaw
SHUFFLE: 35, ABC, FGHI
SUBST:   0 = 24., X : xpP., Y : xpP.
SUBST:   A = x, B : ppP., F = x, G : ppP., CHI = .
: dgn.delayed_decay(_G, 'g', 'snapping turtle corpse')
: dgn.delayed_decay(_G, 'h', 'elephant corpse')
: decorative_floor(_G, 'P', "flower patch")
FTILE:  'def*MN35+ = floor_sprouting_ruin
MAP
    ccccccxxxxxxxcccccc
    c3dd*xxxg_hxxx*dd5c
    c''Mxx2.b0b.4xxN''c
    cex+xWWx...xWWx+xfc
    cxx...WW.1.WW...xxc
   xxx2.CBAWX.XWABC.4xxx
  xxp..1..WWW1WWW..1..pxx
xxx...IHGFWYWWWYWFGHI..xxx
.........WW..W..WW........
 ....xxxWW...W...WWxxx....
       xxx...W...xxx
         xxxx@xxxx
ENDMAP

NAME:   argonaut_golden_fleece
TAGS:   no_pool_fixup no_trap_gen no_monster_gen no_item_gen no_descent
DEPTH:  Shoals, !Shoals:$
ORIENT: northwest
# Fudging the myth a bunch, due to it being weak
# to use only one "drakon" by this branch depth.
KMONS:  1 = patrolling generate_awake fire dragon / \
            patrolling generate_awake ice dragon
KMONS:  BF = bush
KITEM:  F = animal skin randart good_item, gold, gold
KFEAT:  F = >
KFEAT:  X = open_sea
MAP
XXXXXXXXXXXXXXXXXXXXX
Xwwwwwwwwwwwwwwwwwwww
Xwwwwwwwwwwwwwwwwwwww
Xwwww11www..wwwwwwwww
Xwwwww.B.B.wwwwwwwwww
Xwwww.BB.BB.wwwwwwwwW
Xwwww...F....BwwwwwwW
Xwwww.BB.BB.wwwwwwwwW
Xwwwww.B.B.wwwwwwwww@
Xwwww..w.w..wwwwwwwwW
XwwwwwwwBwwwwwwwwwwwW
Xwwwwwwwwwwwwwwwwwww
XwwwwwwwwwwwwwwwwwwW
XwwwwwwwwwwwwwwwwwW
XwwwwwwwwwwwwwwwwW@
XwwwwwwwwwwwwwwwW
Xwwwwwwwwwwwwww
XwwwwwwwWWW@WW
ENDMAP

NAME:    cheibrodos_shoals_epimethial_gifts
TAGS:    no_item_gen no_monster_gen
ORIENT:  float
MONS:    sea snake, wind drake, manticore
MONS:    alligator snapping turtle, snapping turtle
MONS:    merfolk impaler / merfolk aquamancer / merfolk javelineer
SHUFFLE: ABC
NSUBST:  A = 2:1 / 2=1'', B = 1:2 / 3=3', C = 1:4 / 2=5' / *:'
NSUBST:  6 = 2:6 / * = 6''', * = 1=|* / 2=*%
FTILE:   '123456%*|+ = floor_sprouting_ruin
KPROP:   .' = no_tide
MAP
       .cccccc
cccccc.tc6''*c
c*''6ct.c'BB'c
c'AA'c..c'BB'c
c'AA'c..c'''6c
c6'''+..+ccccc
cccccc......t.
...........t.
...t...c+cccc
.......c'''6c
.t.G.t.c'CC'c
.......c'CC'c
...t...c6''*c
@......cccccc
ENDMAP

NAME:   cheibrodos_shoals_gigantism
TAGS:   no_item_gen no_monster_gen
ORIENT: float
MONS:   titan, cyclops / w:3 stone giant / w:3 frost giant
SUBST:  " = .:2 W, x = c:1 x
NSUBST: - = 1=|* / 1=|*% / 2=*%
FTILE:  .%*|12Gm+ = floor_sprouting_ruin
MAP
     xxxxxxxxx
   xxxxxxxxxxxx
  xxx..x..""xxxx
 xxx2..+...."xxxx
 xxG...xx....""xxx
 xxx".xxxx"...."xxx
  xx"..xxxx"..."xxx
 xxxx"..xxx"...."xx
@xxxxx".2xx"...."xx
@+..xxx..xxx...."xx
@xx".xxx."mm...."xx
 xxx".xx."mm..1..xx
  xx".Gx."xxG.-.Gxx
  xx"....xxxx---xxx
   xx".."xxxxxxxxx
   xxx2xxxx xxxxx
    xxxxx    xxx
     xxx
ENDMAP

NAME:    cheibrodos_shoals_satyrical_garden
TAGS:    no_monster_gen no_tide no_trap_gen
DEPTH:   Shoals, !Shoals:$
ORIENT:  float
MONS:    faun, satyr, centaur
KMONS:   P = bush
# One of two garden designs
SHUFFLE: AB / CD
SUBST:   A = P, B = _, C = _, D = P, c = cccccc.
NSUBST:  - = 3:1 / 2=1_ / 1:2 / 1=23 / 1=3_
FTILE:   -_TpP123 = floor_grass
FTILE:   ' = floor_swamp
COLOUR:  -_P123 = green
COLOUR:  c = white
: decorative_floor(_G, 'p', "flower patch")
MAP
....................
.cc..cc..cc..cc..cc.
.cc..cc..cc..cc..cc.
...''''''''''''''...
...'--p----A----'...
.cc'BA-AB----BA-'cc.
.cc'--T--A-B---B'cc.
@..'BA--B---AB--'..@
@..'--BA---B--AB'..@
.cc'B---B-A--T--'cc.
.cc'-AB----BA-AB'cc.
...'----A----p--'...
...''''''''''''''...
.cc..cc..cc..cc..cc.
.cc..cc..cc..cc..cc.
....................
ENDMAP

NAME:   cheibrodos_shoals_three_sisters
TAGS:   no_item_gen no_monster_gen
DEPTH:  Shoals, !Shoals:$
ORIENT: float
MONS:   sea snake, merfolk aquamancer
KMONS:  P = plant
ITEM:   buckler ego:reflection / kite shield ego:reflection / \
        tower shield ego:reflection
KPROP:  . = no_tide
NSUBST: " = 1:2 / 1:1 / 3=1., _ = 1:2 / 1:1 / 3=1.
NSUBST: ' = 1:2 / 2:1 / 3=1., ` = 1=d* / 2:* / 3:% / 5=%.
SUBST:  P = PPPPP., c : cx
TILE:   c : wall_stone_magic_shelf / stone_wall_shoals
MAP
   P..............P
   .xxxxxxxxxxxxxx.
   .x``c.''''.c``x.
   .x``+.''''.+``x.
   .x``c.''''.c``x.
   .xxxxxx++xxxxxx.
P....................P
.xxxxx..........xxxxx.
.x"""x..PPPPPP..x___x.
.x"""............___x.
.x"""...PPPPPP...___x.
.x"""x..........x___x.
.xxxxx..PPPPPP..xxxxx.
P....................P
      ..........
        ..@@..
ENDMAP

NAME:   cheibrodos_shoals_baths
TAGS:   no_monster_gen no_tide no_pool_fixup
DEPTH:  Shoals, !Shoals:$
ORIENT: float
KMONS:  " = merfolk siren / w:5 merfolk
KMONS:  ' = merfolk aquamancer
KMONS:  ` = water elemental
KFEAT:  " = w
KFEAT:  ' = w
KFEAT:  ` = w
FTILE:  - = floor_sprouting_ruin
COLOUR: c- = white
KPROP:  .- = no_tide
# Should probably be less cloudy but idk what these numbers mean
MARKER: " = lua:fog_machine { \
                pow_max = 3, delay_min = 10, delay_max = 40, \
                size = 3, size_buildup_amnt = 4, \
                size_buildup_time = 25, cloud_type = "thin mist" \
            }
MARKER: ' = lua:fog_machine { \
                pow_max = 3, delay_min = 10, delay_max = 40, \
                size = 3, size_buildup_amnt = 4, \
                size_buildup_time = 25, cloud_type = "thin mist" \
            }
MARKER: _ = lua:fog_machine { \
                pow_max = 3, delay_min = 10, delay_max = 40, \
                size = 3, size_buildup_amnt = 4, \
                size_buildup_time = 25, cloud_type = "thin mist" \
            }
NSUBST: ' = 1:' / *:_, w = 3:` / 1=`w / *:w
MAP
.......
.c---c.
.-www-.   ........
.-w"w-.   .c----c.
.-www-.   .-wwww-.
.c---c.   .-ww'w-.
...........-w'ww-.
          .-wwww-.
          .c----c.
          ........
          .
    .......
    .c---c.
    .-www-.
    .-w"w-.
    .-www-.
    .c---c.
    .......
ENDMAP

NAME:  nzn_prometheus_bound
MONS:  patrolling harpy
KITEM: e = book of fire
KPROP: nd = bloody
KFEAT: n = iron_grate
: dgn.delayed_decay(_G, 'd', 'demigod corpse')
MAP
 1e1
xndnx
 @1@
ENDMAP

NAME:   nicolae_shoals_abyss_on_the_beach
TAGS:   transparent no_monster_gen no_item_gen
KPROP:  =*|1P_' = no_tide
KMONS:  p = plant
KMONS:  1P_ = thrashing horror / wretched star / chaos spawn / zombie / \
              small abomination / large abomination / ancient zyme / neqoxec / \
              apocalypse crab / spatial vortex / worldbinder / shining eye
KMONS:  2 = apocalypse crab
KFEAT:  D = demonic_tree
KFEAT:  P = enter_abyss
KFEAT:  _ = altar_lugonu
KFEAT:  q = x
NSUBST: 2 = 2 / 2=2.
SUBST:  z = wx, M = w., . = p...., 1 = 1', a = q:80 c:40 D:20 vb'
FTILE:  =*|1P_'D = floor_nerves
TILE:   q = wall_abyss
MAP
   wwwwwwwww
  wwwwwwwwwww
 wwwzzzzzzzwww
wwwzxxxxxxxzwww
wwzxxaaaaaxxzww
wwzxaa*P*aaxzww
wwzxa11|11axzww
wwzxa1'_'1axzww
MMzxa1'''1axzMM
.MMxaa'''aaxMM.
..Mxxxc=cxxxM..
....2.....2....
 ......2......
  ...........
   .........
ENDMAP

NAME:   nicolae_shoals_beach_cooler
TAGS:   no_pool_fixup water_ok transparent no_trap_gen
KPROP:  =KLFSn = no_tide
KITEM:  2 = * / |
KMONS:  12 = harpy simulacrum / cyclops simulacrum / death yak simulacrum / \
        centaur simulacrum / merfolk simulacrum / snapping turtle simulacrum / \
        alligator snapping turtle simulacrum / manticore simulacrum / \
        faun simulacrum / satyr simulacrum / sea snake simulacrum
KMONS:  3 = patrolling frost giant
KMONS:  4 = kraken simulacrum
KFEAT:  123 = W
KFEAT:  4 = w
NSUBST: 1 = 3 / 2=13 / 1
MAP
.........
.nn===nn.
.n11111n.
.n11111n.
.n11411n.
.n11111n.
.n22222n.
.nnnnnnn.
.........
ENDMAP

NAME:  nicolae_shoals_beach_house_on_fowls_legs
TAGS:  transparent patrolling
MONS:  fenstrider witch
KITEM: d = any potion / any scroll / any wand / any book / any jewellery
SUBST: M = w.
MAP
    .....
   .......
  ...MwM...
 ...MwwwM...
...MwwwwwM..xxxx
..MwwwwwwwM.x.dx
..wwwwwwwww.+1dx
..MwwwwwwwM.x.dx
...MwwwwwM..xxxx
 ...MwwwM...
  ...MwM...
   .......
    .....
ENDMAP

NAME:    nicolae_shoals_elemental_ambush
TAGS:    transparent water_ok
DEPTH:   Shoals:2-
KPROP:   '{` = no_tide
KMONS:   1 = water elemental
KFEAT:   1 = w
SHUFFLE: {[(
SUBST:   ' = x., 1 = 1wwwww, M = wWWW., - = www_
CLEAR:   _
MAP
  ---www@www---
 --www1M.M1www--
 -ww11wMWMw11ww-
--w11MM...MM11w--
-ww1MM.'''.MM1ww-
-w1wM.'```'.Mw1w-
-w1wM'`````'Mw1w-
-w1wM'``{``'Mw1w-
-w1wM'`````'Mw1w-
-w1wM.'```'.Mw1w-
-ww1MM.'''.MM1ww-
--w11MMMMMMM11w--
 -ww11wwwww11ww-
 --www11111www--
  ---wwwwwww---
    ---------
ENDMAP

# Usually it's more of an Enchanted Peninsula.
NAME:    nicolae_shoals_enchanted_isle
TAGS:    no_tide no_pool_fixup water_ok
ITEM:    * / |
ITEM:    book of hexes / book of misfortune / book of debilitation / \
         randbook disc:hexes / shortbow good_item / longbow good_item / \
         sling good_item
ITEM:    wand of charming / wand of paralysis / phial of floods / any wand
ITEM:    scroll of vulnerability / scroll of fear / any scroll / any potion
KMONS:   1 = eleionoma
KMONS:   2 = faun w:20 / centaur / nothing
KMONS:   3 = water nymph
KMONS:   4 = satyr band
KFEAT:   3 = w
NSUBST:  a = x / ., p = w / t, q = w / t, r = w / t, d = e / f / g / d
SUBST:   D = t., R = xw, M = W., P = w.
FTILE:   @124defgFt. = floor_grass
: decorative_floor(_G, 'F', "flower patch")
MAP
          wwwwwww
  wwwwwwwwwxxxxxwww
  wxxxxxxxxxtttxwww
 wwxRRRwwwwR.1.xxwww
wwxxR.PPwwwP.F.Dxwww
wxx..2.Pw3ww..2Dxxww
wxD....PwwwPD2..Dxwww
wxx.4..MWWWM2DD..xwww
xxx....DpppDxxxx2xwww
xaxP...ttwttxdd..xwww
@x..F.Dtqtqtxdd4.xxwww
xaxP.Dtttwttxdd...xwww
xxx...DtrrrDxxxxx2xwww
wxxD..DPwwwP.2....xwww
wxxD.2.wwwww...F..xwww
wxD.2.Pww3ww..4..Dxwww
wxD2..MMwwwwM...xxxwww
wxD.1.xMWWWMMRxxxwwwww
wxxtttxxxxxxxxxwwwwww
wwxxxxxwwwwwwwwwwww
 wwwwwwwwwwwwwww
ENDMAP

NAME:  nicolae_shoals_goliath_grotto
TAGS:  transparent water_ok patrolling
MONS:  goliath frog
MONS:  snapping turtle / alligator snapping turtle / alligator
SUBST: M = w., N = x., - = w_, ' = x_, r = 1 .:40 2:50
CLEAR: _
MAP
   '''xxxxxxxx@Mwwww-
  'xxxxxxxxxxx..Mwwww-
 'xxxN..r..NxxN..Mwwww-
'xxxNr..MM.rNxxN.Mwwww-
'xxN...MwwM..Nxx.Mwwwww-
'xxF.rMwwwwMr....wwwwww-
'xN..Mwwwwwwwwwwwwwwwww-
'xN..Mwwwwwwwwwwwwwwwww-
'xxF.rMwwwwMr....wwwwww-
'xxN...MwwM..Nxx.Mwwwww-
'xxxNr..MM.rNxxN.Mwwww-
 'xxxN..r..NxxN..Mwwww-
  'xxxxxxxxxxx..Mwwww-
   '''xxxxxxxx@Mwwww-
ENDMAP

NAME:   nicolae_shoals_hidden_pirate_stash
TAGS:   no_trap_gen no_monster_gen no_descent
DEPTH:  Shoals, !Shoals:$
ITEM:   gold good_item
ITEM:   rapier good_item w:70 / captain's cutlass
ITEM:   cloak / scarf / nothing
ITEM:   pair of boots / pair of gloves / hat
ITEM:   scroll of revelation / any scroll
MONS:   shadow wraith
NSUBST: ' = d / e / f / g / h / 1 / z / } / .
SUBST:  } = }]), - = x_, x = x:70 c
CLEAR:  _
KITEM:  z = human skeleton
MAP
  -xx-
 -xxxx-
-xx''xx-
xx''''xx
xx''''xx
-xx''xx-
 -xxxx-
  -xx-
ENDMAP

NAME:   nicolae_shoals_lighthouse
TAGS:   no_pool_fixup no_trap_gen water_ok no_descent
DEPTH:  Shoals, !Shoals:$
ORIENT: northwest
KPROP:  123DL*n'} = no_tide
KMONS:  K = kraken
# Two glyphs for merfolk: 1 gets no_tide (inside), M doesn't (outside)
KMONS:  1M = merfolk / nothing w:2
KMONS:  2 = merfolk siren / merfolk impaler / merfolk javelineer / \
            merfolk aquamancer / nothing w:5
KMONS:  3 = merfolk avatar
KFEAT:  ~ = open_sea
KFEAT:  D = closed_clear_door
KFEAT:  R = runed_clear_door
KFEAT:  K = w
KPROP:  L = no_tele_into
KMASK:  L = no_item_gen
KMASK:  L = no_monster_gen
FTILE:  123DRL*n'} = floor_limestone
SUBST:  } = }]), * = **|
NSUBST: . = Q / *=% M:30 .:150, ' = Q / '
: single_cloud(_G, "L", "flame", false)
KITEM:  Q = human skeleton
MAP
~~~~~~~~~~~~~~~~~~~~~~~
~wwwwwwwwwwwwwwwwwwwwww
~wwwwwwwwwwwwwwwwwwwwww
~wwKwwwwwwwwwwwwwKwwwww
~wwwww.........wwwwwwww
~wwww..nnnnnnn..wwwwwww
~www..Dn'11''nn..wwwwww
~www.nn}'11'21nn.wwwwww
~www.n''''''12'n.wwwwww
~www.n11'nnn''1n.wwwwww
~www.n11'nLn'2*n.wwwwww
~www.n'''nnn21*n.wwwwww
~www.n'21''232*n.wwwwww
~www.nn12'212*nn.wwwwww
~www..nn'1***nn..wwwwww
~wwww..nnnnnnn..wwwwwww
~wwwww.........wwwwwwww
~wwKwwwwwwwwwwwwwKwwwww
~wwwwwwwwwwwwwwwwwwwww
~wwwwwwwwwwwwwwwwwwwww
~wwwwwwwwwwwwwwwwwwwww
~wwwwwwwwwwwwwwwwwwww
~wwwwwwwwwwwwwwwww
ENDMAP

NAME:    nicolae_shoals_mermall
TAGS:    water_ok no_tide no_pool_fixup no_descent
ORIENT:  northwest
KPROP:   DEF = no_tele_into
KMONS:   1 = merfolk
KMONS:   2 = water nymph
KMONS:   3 = merfolk avatar / merfolk javelineer / merfolk impaler / \
             merfolk aquamancer / merfolk siren
{{
-- They're all owned by the same person.
local owner = string.gsub(crawl.make_name(), " ", "_")
kfeat("D = weapon shop name:" .. owner .. " type:Merfolk suffix:Weapons ; \
      spear | trident | halberd | partisan | demon trident | glaive | bardiche | \
      dagger | quick blade | short sword | rapier | dart | javelin | \
      throwing net | boomerang" )
kfeat("E = armour shop name:" .. owner .. " type:Merfolk suffix:Armours ; \
      robe | leather armour | helmet | hat | pair of boots | cloak | scarf | \
      pair of gloves | buckler" )
kfeat("F = general shop name:" .. owner .. " type:Merfolk suffix:Magic ; \
      ring of dexterity | ring of evasion  | ring of protection | \
      ring of see invisible | ring of willpower | amulet of reflection | \
      amulet of the acrobat | randbook disc:alchemy | randbook disc:hexes | \
      randbook disc:ice | randbook disc:summoning | phial of floods | \
      condenser vane | lightning rod | wand of charming | \
      wand of iceblast | wand of roots" )
-- If you're not a merfolk and can't get to the shops on your own, the owner
-- will be more than happy to help make arrangements. With an additional
-- convenience fee, of course. (The scroll is for if you get stuck.)
kfeat("J = general shop name:" .. owner .. " type:Visitors' suffix:Centre \
      greed:20 count:2 use_all ; potion of enlightenment q:1 | \
      scroll of teleportation q:1" )
}}
KFEAT:   ~ = open_sea
KFEAT:   123 = w
SHUFFLE: DEF
SUBST:   M = W., S = Ww, a = 1:30 2:15 3 w:35
MAP
~~~~~~~~~~~~~~~
~wwwwwwwwwwwwww
~wwwwwwwwwwwwww
~wwwwwwwwwwwwww
~wwwawawwawawww
~wwwwEwwwwFwwww
~wwwawawwawawww
~wwwwwwwwwwwwww
~wwwwwwwwwwwwww
~wwwawawwawSSww
~wwwwDwwwwJMSSw
~wwwawawwSM.MSS
~wwwwwwwwSSM.MS
~wwwwwwwwwSSM.M
~wwwwwwwwwwSSM@
ENDMAP

NAME:    nicolae_shoals_nymph_descending_staircase
TAGS:    transparent water_ok
DEPTH:   Shoals, !Shoals:$
KMONS:   12 = water nymph
# 2/5 chance of having all three downstairs, 3/5 of just two of them.
SHUFFLE: }])>>
SUBST:   1 = 1 .:13
MAP
cccc...cccc
c.........c
c.1..1..1.c
c.........c
....}.]....
..1..2..1..
....).>....
c.........c
c.1..1..1.c
c.........c
cccc...cccc
ENDMAP

NAME:  nicolae_shoals_pincushion_passage
TAGS:  transparent no_pool_fixup
MONS:  merfolk javelineer
MONS:  merfolk impaler
MONS:  manticore
SUBST: E = D., D = c:50 w, 1 = 1., 2 = 2., 3 = 3.
MAP
     DDDDD
  DDDDE.EDDDD
DDDE...231.EDDDD       DDDD
@.....2...3..1EDDDD DDDDE.@
@....2.....13....EDDDE2...@
@...2EDDDE....31.....2....@
@.EDDDD DDDDE1..3...2.....@
DDDD       DDDDE.132...EDDD
              DDDDE.EDDDD
                 DDDDD
ENDMAP

NAME:   nicolae_shoals_raging_river
TAGS:   transparent no_tide patrolling
KMONS:  1 = water elemental
KMONS:  2 = elemental wellspring
KMONS:  D = pile of debris
KITEM:  L = * w:20 / |
KFEAT:  L = W / .
KFEAT:  123 = w
NSUBST: w = 1:2.. / 3:1 / 10 = W x w:70 / * = 1:5 W x w:70
SUBST:  M = Wx, W = . W:70, ~ = w:90 1
SUBST:  ' = L', x = x:60 c
MAP
 xxxxxxxx xxxxxx
xxccccccxxxMMMMxxx
xccLW2wccxMWWWWWMxxx
xcL''WWwcxWW1~~WWWMxx
xc'...WwcxWwwWW~~WWMx
xc'...WwcxWwWxxW~~WMx
xcc..Ww2cxWwwWxWW~WMx
xxccWwWccxxWwWxxW~WMx
 xxxWDWxxxWwwWxxW~WMx
  xMWwWxxxWwWxxMW~Wxx
 xxWwDWxxxWwWxxW~WWx
xxWDwWxxxWwwWxMW~W..
xWwwWxxxWwwWxxWW~W.@
xWwWxxxWwwWxxxW~WW..
xWwWxxxWwWMxxxx~xxxx
xWwwWxxWwWMxx~~~~~xx
xxWwWMMWwWMx~~~~~~x
xxWwwWWWwWxx~~~~~~
 xxWwwwwWWxxx~~~~
  xxWWWWWxxxxxxx
   xxxxxxxxx
ENDMAP

NAME:  nicolae_shoals_secluded_bog
TAGS:  no_pool_fixup transparent water_ok patrolling
KPROP: .'Ww = no_tide
KITEM: 1 = % w:15 / $ / * / | w:5
KMONS: p = plant
KMONS: 1 = bog body
KFEAT: ~ = w
KFEAT: M = W
KFEAT: t = mangrove
SUBST: - = ., . = p.., t = tx, ' = % 1:20 .:80
MAP
         xx
      ~~xx---@@xxxx
    ~~~xx---xxxxxxxx
  ~~~xxx---xxttttttxx
 ~~~~~xM-.xxx'''''ttxx
~~~~~~xM-.WWwwwww''ttx
~~~~~~~MM..Wwwwwww''tx
~~~~~~~MMM.WWwwwwww'tx
~~~~~~~MMM.WWwwwwww'tx
~~~~~~~~MM..Wwwwwww'tx
~~~~~~x~Mxx.WWwwww''tx
 ~~~~~xxxxxxxWWww''ttx
  ~~~xxx~xxxxt''''ttxx
   ~~~~~~~~xxxtttttxx
    ~~~~     xxxxxxx
ENDMAP

NAME:   nicolae_shoals_shepherds
TAGS:   transparent water_ok no_tide patrolling
: if crawl.coinflip() then
KMONS:  1 = centaur
KMONS:  2 = centaur warrior
: else
KMONS:  1 = faun / nothing w:5
KMONS:  2 = satyr
: end
KMONS:  p = plant
KMONS:  3 = dream sheep band
SUBST:  - = ._
NSUBST: . = 2 / 3. / *=1 p:50 .:100
CLEAR:  _
MAP
    ------
  ---....---
 --........--
 -..........-
--..........--
-............-
-.....S......-
-............-
-............-
--..........--
 -..........-
 --........--
  ---....---
    ------
ENDMAP

NAME:   nicolae_shoals_spectral_cove
TAGS:   transparent patrolling
WEIGHT: 0
KMONS:  p = withered plant
KMONS:  1 = spectral thing
KMONS:  2 = ghost crab
KMONS:  3 = spectral kraken
KFEAT:  123 = w
SUBST:  M = w., . = p...., ' = p., - = x_
NSUBST: w = 3 / 3w / 2=2 / 2w / 1www
CLEAR:  _
MAP
     -------
   --xxxxxxx--
  -xxxwwwwwxxx-
 -xxwwwwwwwwwxx-
-xxwwwMMMMMwwwxx-
-xwwMM.....MMwwx-
-xMM...'''...MMx-
-x'...     ...'x-
-x'...     ...'x-
-x'@..     ..@'x-
ENDMAP

NAME:   nicolae_shoals_spring_well_temple
TAGS:   no_pool_fixup patrolling water_ok
DEPTH:  Shoals, !Shoals:$
KPROP:  +>FLMWcw = no_tide
KITEM:  L> =  * w:20 / | / % w:5
KMONS:  1 = elemental wellspring
KMONS:  2 = water nymph
KFEAT:  > = >
KFEAT:  12 = w
KFEAT:  L = W
NSUBST: F = 1 / 2=1. / F
SUBST:  F = 2 w:75, M = wW
MAP
       c c c c
     c         c
...c    ccccc    c
.c.....ccwFFcc     c
...cccccwwFFFccccc
.c.cWWMwwFFFFFMLLc c
...+WWMwFFFFFFML>c
.c.cWWMwwFFFFFMLLc c
...cccccwwFFFccccc
.c.....ccwFFcc     c
...c    ccccc    c
     c         c
       c c c c
ENDMAP

NAME:   nicolae_shoals_sun_and_surf
TAGS:   transparent water_ok patrolling
MONS:   water nymph
MONS:   sun demon
SUBST:  - = w_, ' = x., ` = x_
NSUBST: . = 2=1 / 2=2 / *=12 .:240
CLEAR:  _
MAP
    ----
----wwww----
wwwwwwwwwwww
wwww----wwww
----....----
@..........@
''''....''''
xxxx''''xxxx
xxxxxxxxxxxx
````xxxx````
    ````
ENDMAP

NAME:    nicolae_shoals_water_booths
TAGS:    no_pool_fixup transparent
KMONS:   1 = merfolk / merfolk siren / merfolk impaler
KMONS:   2 = merfolk javelineer / merfolk aquamancer / merfolk avatar
KFEAT:   12 = w
SHUFFLE: DEFH, JKLM
SUBST:   DJ = ., EFHKLM = c, w = w:50 1:20 2
MAP
ccccDDEEFF
cww......F
cww......H
cccc..c..H
cww...cwwc
cww...cwwc
cccc..c..M
cww......M
cww......L
ccccJJKKLL
ENDMAP

NAME:   dreamdust_from_the_deep
TAGS:   no_monster_gen no_item_gen no_tide patrolling no_descent
DEPTH:  Shoals, !Shoals:$
ORIENT: northwest
ITEM:   any ring randart
ITEM:   randbook title:Mad_Ravings spells:malign_gateway&summon_horrible_things \
           numspells:2
KMONS:  1 = kraken
KMONS:  2 = merfolk impaler ; trident ego:chaos
KMONS:  3 = apocalypse crab / great orb of eyes
KMONS:  4 = tentacled monstrosity
KFEAT:  1 = deep_water
KFEAT:  -23 = shallow_water
KFEAT:  s = open_sea
KFEAT:  z = x
KFEAT:  > = escape_hatch_down
SUBST:  y = xxxw
NSUBST: w = 1 / w
NSUBST: - = 3=2 / 3=2- / 2=3 / 1=3- / -
# Color weights similar to that used for rock in the Abyss.
COLOUR: z = blue:13 / red:66 / magenta:50 / brown:90 / lightgreen:68 \
            / lightred:110 / lightmagenta:38 / yellow / white
RTILE:  z = wall_abyss
FTILE:  .de4>G = floor_nerves_yellow
TILE:   G = dngn_statue_tentacles
MAP
sssssssssssssssssss
swwwwwwwwwwwwwwwwww
swwwwwwyyyywwwwwwww
swwwww-xxxxxwwwwwww
swwwwxx----xxwwwwww
swwwxx------xx--www
swwxx--zzzz------ww
swyx--zz.dzz--xywww
swyx---..4Gz--xywww
swyx-----e>z--xywww
swyx--zz--zz--xywww
swwxx--zzzz------ww
swwwxx------xx--www
sww--------xxw-wwww
swww--xxxxxxwwwwwww
swwwwwwyyyywwwwwwww
swwwwwwwwwwwwwwwww
swwwwwwwwwwwwwwww
swwwwwwwwwwwwww
ENDMAP

NAME:   nicolae_shoals_bring_sunscreen
TAGS:   transparent water_ok no_tide
DEPTH:  Shoals:2-
KMONS:  D = sun demon
KMONS:  M = sun moth
SUBST:  { = {[(, x = cxx..., _ = _.
NSUBST: S = M / 2=MDD / 2=D / 2=D. / .
CLEAR: _
MAP
      _....._
    _........._
    ...S...S...
   _..........._
 _..S...xxx...S.._
 ......xxcxx......
_.......xxx......._
..S..x.......x..S..
....xxx.....xxx....
....xcx..{..xcx....
....xxx.....xxx....
..S..x.......x..S..
_.......xxx......._
 ......xxcxx......
 _..S...xxx...S.._
   _..........._
    ...S...S...
    _........._
      _....._
ENDMAP

NAME:   nicolae_shoals_offshore_bank_account
TAGS:   water_ok no_pool_fixup transparent no_descent
DEPTH:  Shoals
ORIENT: west
KITEM:  pr = $ w:80 / any jewellery
KITEM:  q = $ w:50 / $ good_item w:30 / any jewellery good_item / \
            any weapon good_item w:5 / any armour good_item w:5
KITEM:  S = scroll of acquirement pre_id
KMONS:  p = merfolk siren / nothing w:40
KMONS:  qS = merfolk impaler / merfolk javelineer / merfolk aquamancer / \
             merfolk avatar / nothing w:35
KMONS:  r = water nymph
KMONS:  s = merfolk impaler
KFEAT:  ~ = open_sea
KPROP:  =`pqrsS = no_tele_into
KPROP:  =`pqrsS = no_tide
KMASK:  =`pqrsS = opaque
KMASK:  =`pqrsS = no_trap_gen
KMASK:  =`pqrsS = no_monster_gen
SUBST:  M = w_, N = wwW.
NSUBST: q = S / q
FTILE:  =`pqrsS = floor_sprouting_ruin
CLEAR:  _
MAP
      MwwM
    MwwwwwwM
  MwwwwwwwwwwM
~wwwwwwwwwwwwwwM
~wwwwwwwwwwwwwwwwM
~wwwwwcwwwcwwwwwwww
~wwwwcccccccwwwwwNN
~wwwcccqqqcccwwwN...
~wwwwcspppqcwwwN.....
~wwww=`prpqcwwwN....@
~wwwwcspppqcwwwN.....
~wwwcccqqqcccwwwN...
~wwwwcccccccwwwwwNN
~wwwwwcwwwcwwwwwwww
~wwwwwwwwwwwwwwwwM
~wwwwwwwwwwwwwwM
  MwwwwwwwwwwM
    MwwwwwwM
      MwwM
ENDMAP

NAME:   nicolae_shoals_deep_elves_summer_vacation
TAGS:   water_ok transparent patrolling no_pool_fixup
DEPTH:  Shoals
ORIENT: float
# Someone left their gear in the changing room.
KITEM:  p = leather armour / ring mail / scale mail / chain mail, \
             long sword / short sword / rapier / dagger, \
             buckler / nothing w:20
# Some people like having a little something to read or drink on the beach.
KITEM:  12 = nothing w:30 / any book / any scroll / any potion
# Deep elves have to bring the high-strength sunscreen. At least one potion
# of resistance is guaranteed in the changing room.
KITEM:  s = potion of resistance pre_id
# 1/3 chance of rudely walking in on a deep elf changing.
KMONS:  p = deep elf knight ; nothing / nothing w:20
KMONS:  1 = deep elf pyromancer w:20 / deep elf zephyrmancer w:20 / \
            deep elf archer / deep elf knight / \
            deep elf archer band w:5 / deep elf knight band w:5
KMONS:  2 = deep elf death mage / deep elf sorcerer / \
            deep elf annihilator / deep elf demonologist
NSUBST: 1 = 2 / 21 / 2=1 / 1...
SUBST:  - = x., _ = w_, M = wW
KPROP:  `Pps+ = no_tide
KMASK:  `Pps+ = no_monster_gen
CLEAR:  _
MAP
          __
         www_
         www_
     xxxwwwww__
    xxxxwwwwwww_
   xx-MMwwwwwww_
   xx-.Mwwwwwwww__
  xxx-1MMwwwwwwwww_
  xx-...MMMwwwwwww_
 xxx-....1Mwwwwwwww__
 xxx-.1...MMwwwwwwwww_
 xxxx-.....MMMwwwwwww_
  xxx-..1...1Mwwwwwwww__
   xx-1......MMwwwwwwwww_
    xx-...1...MMMwwwwwww_
    xxx-.......1Mwwwwwwww__
   xxxx-1....1..MMwwwwwwwww_
  @xxx-....1...1.MMMwwwwwww_
 @.xxx-..1........1Mwwwwwww
@..xx-......1...1..MMwwww
x...x-...--.......1.Mxxxx
xx..xx..-xx-c+cc-..-xxxx
xx-..-..xxxxc``cx--xxxx
xxx-...-xxxxcspcxxxxxx
 xxxx--xxxxxccccxxxx
    xxxxxxxxxxxxxx
        xxxxxxx
ENDMAP

NAME:    nicolae_shoals_songs
TAGS:    no_pool_fixup water_ok
DEPTH:   Shoals:2-
KMONS:   M = merfolk siren
KMONS:   N = merfolk avatar
KMONS:   S = satyr
KFEAT:   N = w
NSUBST:  N = 1:N / *:w, < = 1:{ / 1:[[< / 1:((< / <, p = M / 1:M. / 1:MS... / *:.
NSUBST:  q = 1:M / 1:M. / 1:MS... / ., r = 1:S / 1:S. / 1:SM... / *:.
SHUFFLE: {[(, +- / +- / +- / +- / +- / +- / +- / +- / zz
NSUBST:  - = 1 = x:5 .:4 / *:.
SUBST:   ' = xx", " = WW., - = Www, ` = _x, z = x
CLEAR:   _
: decorative_floor(_G, 'V', "floral vase")
MAP
        `x++x`
       `xx--xx`
       xx'rr'xx
      `xxr..rxx`
      xxx."".xxx
    `xxx'"WW"'xxx`
  `xxxxx'"WW"'xxxxx`
 `xxxx''"W--W"''xxxx`
`xx'p.""W-ww-W"".q'xx`
xx'p."WW-wNNw-WW".q'xx
xx'p."WW-wNNw-WW".q'xx
`xx'p.""W-ww-W"".q'xx`
 `xxxx''"W--W"''xxxx`
  `xxxxx'"WW"'xxxxx`
    `xxx'"WW"'xxx`
      xxxV""Vxxx
      `xx.<<.xx`
       xx'<<'xx
       `xx''xx`
        `xxxx`
         `xx`
ENDMAP

# Sadly, there are currently no lobster-based monsters that can be used here, so
# instead it will have to be turtles. They don't say "dad-a-chum", but they'll
# still take some fingers off.
NAME:   nicolae_shoals_the_drawing_of_the_three
TAGS:   transparent
DEPTH:  Shoals
# A hand cannon is a pistol with some sequins glued on.
KITEM:  r = hand cannon
KMONS:  1 = snapping turtle w:15 / alligator snapping turtle w:5
NSUBST: . = 2=1 / 2=1. / 2=r / .
MAP
 .....
.......
.+.+.+.
.......
 .....
ENDMAP

# Original by Lemuel - Stranded yaks(?)
NAME:    lemuel_tekkud_yak_island
TAGS:    transparent no_pool_fixup no_monster_gen patrolling
DEPTH:   Shoals
WEIGHT:  5
MONS:    yak band w:15 / dream sheep band, cyclops / yaktaur w:15
MONS:    satyr / stone giant w:5 / yaktaur captain
KMONS:   B = bush
KMONS:   P = oklob plant
KITEM:   d = large rock q:1, $, any potion q:1
SHUFFLE: -> / ~"
SUBST:   - = w, ~ = W, " = .
: if you.depth() ~= dgn.br_depth(you.branch()) then
SUBST:   > = <
NSUBST:  . = 1:1 / 2:2 / 2:d / *:.
: else
NSUBST:  . = 1:1 / 3:2 / 1:3 / 3:d / *:.
: end
FTILE:   .d<>123BP = floor_grass
KMASK:   .d<>123BP = opaque
KPROP:   .d<>123BP = no_tide
: decorative_floor(_G, 'P', "flower patch")
MAP
   WWWWWWWWW
  WWWWWwWWWWW
 WWWWwwwwwWWWW
WWWwwwwwwwwwWWW
WWwwwwB..wwwwWW
WWwwwP....wwwWW
Wwwww..>..wwwwW
WWwww....PwwwWW
WWww--..BwwwwWW
WWW---wwwwwwWWW
 WWWWwwwwwWWWW
  WWWWWwWWWWW
   WWWWWWWWW
ENDMAP

###############################################################################
#
# <<4>> Shoals ending vaults
#
# Note that the Shoals usually have a randomised end map, by placing many
# copies of the same cave structures. Pre-made, non-encompass maps could also
# work, though they're not used yet.
#
###############################################################################

default-depth:

NAME: shoals_end_simple
ORIENT: float
PLACE: Shoals:$
: shoals_finale_setup(_G, 'simple')

# HangedMan's alternative Shoals ending
NAME: shoals_end_hangedman
ORIENT: float
PLACE: Shoals:$
WEIGHT: 8
: shoals_finale_setup(_G, 'hangedman', crawl.random_range(5,7))

# Grunt's icy Shoals ending
NAME: shoals_end_grunt_ice
ORIENT: float
PLACE: Shoals:$
WEIGHT: 8
: shoals_finale_setup(_G, 'grunt_ice', crawl.random_range(5,6))

# Grunt's garden Shoals ending
# Weighted lower on account of being more open and nasty.
NAME: shoals_end_grunt_garden
ORIENT: float
PLACE: Shoals:$
WEIGHT: 4
: shoals_finale_setup(_G, 'grunt_garden', crawl.random_range(5,6))

################################################################################
# Shoal huts.

NAME:      shoalhut_rune
TAGS:      shoal_rune_simple shoal_mimic_simple water_ok no_dump transparent \
           allow_dup
KMONS:     ge = merfolk impaler / merfolk javelineer / merfolk aquamancer
: if shoals_vault_is_mimic() then
KITEM:     R = azure gem mimic
KITEM:     O = barnacled rune of Zot mimic
: else
KITEM:     R = azure gem
KITEM:     O = barnacled rune of Zot
: end
NSUBST:    A = 1:+ / 1 = x:19 +:1 / *:x
NSUBST:    1 = 1:0 / 1:R / * = 0
SUBST:     0 = 0., e = e.
KPROP:     O = no_tide
LROCKTILE: wall_pebble_lightgray
MAP
 xxAxx
xx.0.xx
xe1g1ex
A0gOg0A
xe1g1ex
xx.0.xx
 xxAxx
ENDMAP

# Shoal decoy hut
NAME:   shoalhut
TAGS:   shoal_hut_simple water_ok no_dump allow_dup transparent
NSUBST: A = 1 = x:14 +:1 / *:x
NSUBST: 0 = 1:. / 2:0 / * = 0.
MAP
 xxAxx
xx.0.xx
x.0.0.x
A0.|.0A
x.0.0.x
xx.0.xx
 xx+xx
ENDMAP

# Shoal hangout of Ilsuiw.
# The hut itself may not contain Ilsuiw if she had other engagements.
NAME:    shoal_ilsuiw
TAGS:    shoal_guardian
KMONS:   1 = Ilsuiw, merfolk avatar
KMONS:   2 = merfolk impaler / merfolk javelineer
KMONS:   3 = merfolk aquamancer / merfolk impaler / merfolk javelineer
KMONS:   A = Ilsuiw band
KMONS:   B = merfolk aquamancer / merfolk javelineer
KFEAT:   123ABC = w
SHUFFLE: 123 / 123 / 123 / ABC / ABC
MAP
 wxwxw
wxw2wxw
xwwwwwx
w3w1w3w
xwwwwwx
wxw2wxw
 wxwxw
ENDMAP

################################################################################
# HangedMan's alternative Shoals:$

NAME:      shoals_rune_alternative
TAGS:      shoal_rune_hangedman shoal_mimic_hangedman water_ok allow_dup \
           transparent no_dump
KMONS:     12 = merfolk impaler / merfolk javelineer / merfolk aquamancer
KMONS:     3 = kraken / sphinx marauder band w:15
KMONS:     d = merfolk avatar / water nymph w:5
: if shoals_vault_is_mimic() then
KITEM:     d = barnacled rune of zot mimic
: else
KITEM:     d = barnacled rune of Zot
KITEM:     e = azure gem
: end
KFEAT:     123 = w
KPROP:     d = no_tide
SHUFFLE:   AB / AB / BA, CD / CD / DC
NSUBST:    2 = 2 = 22w / * = 22www, 0 = 2:0 / * = 00...
SUBST:     AC = x, B = w, D = .
LROCKTILE: wall_pebble_lightgray
FHEIGHT: .d0@ = 15
MAP
  xxxxxxx
 xx12wwwxx
xx2xe.00Wxx
x1xd02w..Wx
x2$03Awx..x
xw.2AxBw..x
xw0wwBw.D.x
xw0.xw..C.x
xxW...DC.x@
 xxW....x..
  xxxxxx@.
ENDMAP

NAME:    shoals_rune_alternative_decoy
TAGS:    shoal_hut_hangedman water_ok allow_dup transparent no_dump
SHUFFLE: AB / AB / BA, CD / CD / DC
NSUBST:  0 = 2:0 / 1:. / * = 00...
SUBST:   AC = x, B = w, D = .
FHEIGHT: .d0@ = 15
MAP
  xxxxxxx
 xxwwwwwxx
xxwx00.0Wxx
xwx|0ww..Wx
xw00wAwx..x
xw0wAxBw..x
xw.wwBw.D.x
xw0.xw..C.x
xxW...DC.x@
 xxW....x..
  xxxxxx@.
ENDMAP

# Deliberately separated from the styles of branch end;
# it's good randomization and balancing material.
NAME:    shoals_ilsuiw_alternative
TAGS:    shoal_guardian water_ok
WEIGHT:  8
KMONS:   1 = Ilsuiw, merfolk avatar
KMONS:   2 = merfolk impaler / merfolk javelineer
KMONS:   3 = merfolk aquamancer / merfolk impaler / merfolk javelineer
KMONS:   4 = Ilsuiw band
KMONS:   5 = merfolk aquamancer / merfolk javelineer
KFEAT:   123456 = w
SHUFFLE: 123 / 123 / 123 / 456 / 456
SHUFFLE: AB / AB / BA, CD / CD / DC
SUBST:   AC = x, B = w, D = .
MAP
  .@xxxx
 .x....xx
.x.CD..2xx
@.C..wxw3xx
x.D.wAwx..x
x..wA1Bw..x
x..xwBw.D.x
xx3wxw..C.@
 xx2..DC.x.
  xx....x.
   xxxx@.
ENDMAP

################################################################################
# Shoal icebergs (Grunt).

NAME:   shoals_iceberg_rune
TAGS:   shoal_rune_grunt_ice shoal_mimic_grunt_ice water_ok no_dump
TAGS:   transparent allow_dup
MONS:   merfolk impaler ; trident ego:freezing good_item . robe w:7 / \
        merfolk impaler ; demon trident ego:freezing good_item . robe w:1 / \
        merfolk impaler w:2 / merfolk javelineer / merfolk aquamancer
KMONS:  K = kraken simulacrum / frost giant w:20
: if shoals_vault_is_mimic() then
KITEM:  R = azure gem mimic
KITEM:  O = barnacled rune of Zot mimic
: else
KITEM:  R = azure gem
KITEM:  O = barnacled rune of Zot
: end
KFEAT:  K = deep_water
NSUBST: A = 1:. / 1:xxxx. / *:x
NSUBST: 2 = 1:R / *:1, 1 = 4:1 / * = 1., 0 = 2:0 / 2:. / * = 0..
NSUBST: w = 1:K / *:w
: shoals_ice_setup(_G)
KPROP:  O = no_tide
MAP
   .......
  .-------.
 ..xxxxxxx..
.-xA.---.Ax-.
.-x.10w01.x-.
.-x-0x2x0-x-.
.-x-w2O2w-x-.
.-x-0x2x0-x-.
.-x.10w01.x-.
.-xA.---.Ax-.
 ..xxxxxxx..
  .-------.
   .......
ENDMAP

# Shoal iceberg
NAME:   shoals_iceberg
TAGS:   shoal_hut_grunt_ice water_ok no_dump allow_dup transparent
NSUBST: A = 1:. / 1:xx. / *:x
NSUBST: 0 = 2:. / 2:0 / * = 0.
: shoals_ice_setup(_G)
MAP
   .......
  .-------.
 ..xxxxxxx..
.-xA.---.Ax-.
.-x..0w0..x-.
.-x-0x.x0-x-.
.-x-w.|.w-x-.
.-x-0x.x0-x-.
.-x..0w0..x-.
.-xA.---.Ax-.
 ..xxxxxxx..
  .-------.
   .......
ENDMAP

# Ilsuiw's winter home.
NAME:   shoals_ilsuiw_ice
TAGS:   shoal_guardian
KMONS:  e = Ilsuiw band, merfolk avatar
MONS:   merfolk aquamancer / merfolk javelineer
NSUBST: 1 = 2:1 / *:.
NSUBST: A = 1:. / 1:x. / *:x
: shoals_ice_setup(_G)
MAP
   .......
  ..-----..
 ...xxxxx...
...A.---.A...
.-x..1w1..x-.
.-x-1x.x1-x-.
.-x-w.e.w-x-.
.-x-1x.x1-x-.
.-x..1w1..x-.
...A.---.A...
 ...xxxxx...
  ..-----..
   .......
ENDMAP

################################################################################
# Shoal gardens (Grunt).
# This theme doesn't have a guardian vault - Ilsuiw doesn't hang around in
# gardens. If we get another satyr unique at some point, that would be a
# good candidate for this.

NAME:    shoals_garden_rune
TAGS:    shoal_rune_grunt_garden shoal_mimic_grunt_garden water_ok
TAGS:    no_dump allow_dup transparent
MONS:    satyr w:18 / merfolk impaler / merfolk javelineer / merfolk aquamancer
MONS:    faun w:6 / 0
KMONS:   pP = plant
: if shoals_vault_is_mimic() then
KITEM:   R = azure gem mimic
KITEM:   O = barnacled rune of Zot mimic
: else
KITEM:   R = azure gem
KITEM:   O = barnacled rune of Zot
: end
NSUBST:  R = 1:R / *:1, 1 = 4:1 / 2:1. / 2:1. / 2:2 / 2:2. / 2:2. / *:.
SHUFFLE: abcdefghijk, ABCDEFGH
SUBST:   abcABC = x, def = p, DEF = P, g : xp, h : p', ijk = ', GH = "
TILE:    x = wall_brick_gray
FTILE:   xpP"' = floor_swamp
FTILE:   12P.OR = floor_grass
KPROP:   OR = no_tide
MAP
   abcbd
 kkaBAAdee
 jCCB1HHGf
ijD11111Gfg
iED1RRR1FFg
hE11ROR11Eh
gFF1RRR1DEi
gfG11111Dji
 fGHH1BCCj
 eedAABakk
   dbcba
ENDMAP

NAME:    shoals_garden
TAGS:    shoal_hut_grunt_garden water_ok no_dump allow_dup transparent
MONS:    faun w:6 / 0
KMONS:   pP = plant
KITEM:   | = |
NSUBST:  1 = 2:1 / 2:1. / 2:1. / *:.
SHUFFLE: abcdefghijk, ABCDEFGH
SUBST:   abAB = x, cdef = p, CDE = P, g : xp, h : p', ijk = ', FGH = "
TILE:    x = wall_brick_gray
FTILE:   xpP"' = floor_swamp
FTILE:   1P. = floor_grass
: decorative_floor(_G, '|', "garden patch")
MAP
   abcbd
 kkaBAAdee
 jCCB1HHGf
ijD11111Gfg
iED11111FFg
hE111|111Eh
gFF11111DEi
gfG11111Dji
 fGHH1BCCj
 eedAABakk
   dbcba
ENDMAP

###############################################################################
#
# Encompass endings
# These do not place huts in favor of a more standard vault structure and
# more themed/unusual monsters. Please keep the total weight of these
# endings low relative to the traditional endings.
#
###############################################################################

NAME:   shoals_end_hellmonk_lost_city
: set_border_fill_type("open_sea")
ORIENT:  encompass
PLACE:   Shoals:$
WEIGHT:  3
MONS:    faun w:15 / manticore / harpy, satyr, minotaur, sphinx marauder
KMONS:   O = sphinx marauder
KMONS:   P = plant
KITEM:   f = azure gem
KITEM:   O = barnacled rune of Zot
KITEM:   R = riddle talisman
SHUFFLE: d% / e* / f|
NSUBST:  | = 1:O / *:|
SUBST:   de = ., %* = |, 1 = 1.., 2 = 2.., 3 = 334, G = G., R = R.
SUBST:   ; : W.., p : W.., q : W.., r : W.., s : W.., y : W.., z : W..
NSUBST:  . = 16 = 0. / *=.........W
SUBST:   D = x., c = ccc.
NSUBST:  ' = 1:( / 1:[ / 1:{ / 2 = <.. / *=P......
MAP
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxDDDxxwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwxDx1112xxxxwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwxDx2.....rrrxwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwxxD...xxxrrrccccccwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwxxDpppDDxrrrccc1..1cccwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwxDDpppxDDrrrrcc.......%ccDDDwwwwwwwwwwwwww
wwwwwwwwwwWWWWWWWWWDDpppxDD...xrr+...2.d.3.cc1.xxwwwwwwwwwwwww
wwwwwwwwwWWWWWWWWWDxpppxD...xxxrrcc.......%cc...xxwwwwwwwwwwww
wwwwwwwwWWWWWWWWWDxpppxx...xxxxrrrccc1..1ccc.....xDwwwwwwwwwww
wwwwwwwWWWWWWWWWDxpppxx...xxxxxxxrrrcccccc....2..2Dwwwwwwwwwww
wwwwwwWWW'''WWWDxpppxx.....yyyy2DDDrrrr......2GD..Dwwwwwwwwwww
wwwwwwWW''''''WDxpppDxxxDDDxxyyyDxrrr1.....1DxxD..Dwwwwwwwwwww
wwwwwwW'''''''WDD..pDxD1..1DxyyyyxrrxxDDxx..xxxx..Dwwwwwwwwwww
wwwwwwW''cc''.WDD..pDx......Dyyyxxxxx2..2x..DxxD..Dwwwwwwwwwww
wwwwwwW''cc''.WDD..pDx1....1+yy...2xD....D...2.2.1Dwwwwwwwwwww
wwwwwwW''''''.W+...pDx......Dyy.....D....D...ccccccccwwwwwwwww
wwwwwwW'''''..W+...ppxD1..1DxyyDD1..x1..2x.ccc1....1cccwwwwwww
wwwwwwW''''..ccccc..pxDDDDxxxxxDD...xD++Dxcc1.........ccwwwwww
wwwwwwW'''..cc..1cc..G....G.....G....G....Gc.....2.....*cwwwww
wwwwwwW'''..+....2+;;;;;;;;;;;;;;;;;;;;;;;;+..2.....e3R*cwwwww
wwwwwwW'''..cc..1cc..G....G.....G....G....Gc.....2.....*cwwwww
wwwwwwW''''..ccccc..qxDDDDxxxxxDD...xD++Dxcc1.........ccwwwwww
wwwwwwW'''''..W+...qqxD1..1DxzzDD1..x1..2x.ccc1....1cccwwwwwww
wwwwwwW''''''.W+...qDx......Dzz.....D....D...ccccccccwwwwwwwww
wwwwwwW''cc''.WDD..qDx1....1+zz...2xD....D...2.2.1Dwwwwwwwwwww
wwwwwwW''cc''.WDD..qDx......Dzzzxxxxx2..2x..DxxD..Dwwwwwwwwwww
wwwwwwW'''''''WDD..qDxD1..1DxzzzzxssxxDDxx..xxxx..Dwwwwwwwwwww
wwwwwwWW''''''WDxqqqDxxxDDDxxzzzxxsss......1DxxD..Dwwwwwwwwwww
wwwwwwWWW'''WWWDxqqqxx.....zzzz2DDDssss1.....2GD..Dwwwwwwwwwww
wwwwwwWWWWWWWWWWDxqqqxx...xxxxxxxssscccccc....2..2Dwwwwwwwwwww
wwwwwwwWWWWWWWWWWDxqqqxx...xxxxsssccc1..1ccc.....xDwwwwwwwwwww
wwwwwwwwWWWWWWWWWWDxqqqxD...xxxsscc.......|cc...xxwwwwwwwwwwww
wwwwwwwwwWWWWWWWWWWDDqqqxDD...xss+...2.f.3.cc1.xxwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwxDDqqqxDDsssscc.......|ccDDDwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwxxD...DDxsssccc1..1cccwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwxxD2..xxxsssccccccwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwxDx......sssxwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwxDx1112xxxxwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxDDDxxwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
ENDMAP

NAME:    shoals_end_hellmonk_holy_island
TAGS:    no_trap_gen
ORIENT:  encompass
PLACE:   Shoals:$
WEIGHT:  3
MONS:    cyclops
MONS:    death yak w:16 / dream sheep / yak w:6 / holy swine w:1
MONS:    w:15 merfolk impaler ; trident ego:flaming good_item |\
            trident ego:freezing good_item | trident ego:protection good_item |\
            trishula w:5 . robe w:15 | pearl dragon scales w:1 / \
         merfolk javelineer ; javelin ego:silver w:20 | javelin /\
         merfolk aquamancer
MONS:    cherub, apis
KMONS:   H = angel
KMONS:   P = plant
KMONS:   s = sacred lotus
KITEM:   H = barnacled rune of Zot
KITEM:   h = azure gem
KFEAT:   D = altar_zin
KFEAT:   E = altar_elyvilon
KFEAT:   F = altar_the_shining_one
KFEAT:   s = w
SHUFFLE: Hh / Ii / Jj, DEF
SUBST:   IJ = |, ij = .
NSUBST:  < = 1:( / 1:[ / 1:{ / * = <
SUBST:   - = W:30 ' P:1, _ = W:5 ':15 P:1
SUBST:   3 = 330, 0 = 0....
NSUBST:  4 = 2 = 44455 / 1:5... / * = 4...
NSUBST:  ' = 8 = 1''' / 24 = 2''' / * = P''''''''''
NSUBST:  q = 2:c / 2 = c' / *:', r = 2:c / 2 = c' / *:', s = 2:c / 2 = c' / *:'
TILE:    G = dngn_statue_angel
FTILE:   12P'~([{< = floor_grass
FTILE:   0345|DEFGOc+. = floor_limestone
: set_border_fill_type("open_sea")
MAP
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwww-----wwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww---ccc----wwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwww------cccHccc------wwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwww------cc|3h3|cc------wwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwww----___c3.000.3c___----wwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwww----__'cc...3...cc''__---wwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwww---__''c3.0ccc0.3c''__---wwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww----_c''c40ccDcc04c''c__---wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww---_cc''c0.G000G.0c''cc_---wwwwwwwwwwwwwwww
wwwwwwwwwwwwwwww--_cc'''cc...3...cc'''c_----wwwwwwwwwwwwwww
wwwwwwwwwwwwwww---_c'''''c.......c''''cc----wwwwwwwwwwwwwww
wwwwwwwwwwwwwww---_c'''''cc.....cc'''''c_---wwwwwwwwwwwwwww
wwwwwwwwwwwwwww---_'''''''ccc.ccc''''''c_---wwwwwwwwwwwwwww
wwwwwwwwwwwwwww--__'''''''''c+c'''''''''__---wwwwwwwwwwwwww
wwwwwwwwwwwwww---__'''''''''''''''''''''__---wwwwwwwwwwwwww
wwwwwwwwwwwwww---_''''''''''c'c''''''''''_---wwwwwwwwwwwwww
wwwwwwwwwwwwww---_'''''''''''''''''''''''_---wwwwwwwwwwwwww
wwwwwwwwwwwwww---_'''''''''''''''''''''''_---wwwwwwwwwwwwww
wwwwwwwwwwwwww---_'''''''''''''''''''''''_----wwwwwwwwwwwww
wwwwwwwwwwwwwww--__''''''''qq~qq''''''''__--wwwwwwwwwwwwwww
wwwwwwwwwwwwwsww--___''''''qqqqq'''''___--wwwswwwwwwwwwwwww
wwwwwwwwwwwwwwwwww--___'cc'~q<q~'cc'__--wwwwwwwwwwwwwwwwwww
wwwwwwwwwwww--wwwwww--___cc~~~~~cc__--wwwwww----wwwwwwwwwww
wwwwwwwwwww-----wwwwww--__ccccccc_--wwwwww------wwwwwwwwwww
wwwwwwwwwww-------wwwwww--ccccccc-wwwwww--__----wwwwwwwwwww
wwwwwwwwwww----__---wwwwwW--~~~--Wwwww--__'_-----wwwwwwwwww
wwwwwwwwwww---______--wwwwc_~<~_cWww---__''_-----wwwwwwwwww
wwwwwwwww----__''''c_---wW--~~~------___c''''_----wwwwwwwww
wwwwwwwww---___'''''c__---cc---cc--___cc'''''_----wwwwwwwww
wwwwwwwww---__'''''''cc___ccWwWcc___cc'''''''__----wwwwwwww
wwwwwwwww---_'''''''r'ccc__-www-__ccc's''''''__----wwwwwwww
wwwwwwww----_'''''''r'~~cc_-www-_cc~~'s''''''__----wwwwwwww
wwwwwwww---_c'c'''''''r<~c_-www-_c~<s'''''''c'c----wwwwwwww
wwwwwwww---_''''''''''rr~c_-www-_cc~s''''''''''_----wwwwwww
wwwwwwww---_c+c''''''''''c_--www-_c'''s'''''c+c_----wwwwwww
wwwwwww---ccc.ccc''''''rr'__-www-_c''ss'''ccc.ccc---wwwwwww
wwwwwww--cc.....cc''''''''__-www-_'''''''cc.....cc--wwwwwww
wwwwwww--c.......c''''''''__-www-_'''''''c.......c---wwwwww
wwwwww--cc...3...cc'''''''__-www-_''''''cc...3...cc--wwwwww
wwwwww--c0.G000G.0c''''''c__-www-_c'''''c0.G000G.0c--wwwwww
wwwwww--c40ccEcc04c'''''cc_-www--_c'''''c40ccFcc04c--wwwwww
wwwwww--c3.0ccc0.3c'''ccc__-www-__ccc'''c3.0ccc0.3c--wwwwww
wwwwww--cc...3...cc''_____--www-______''cc...3...cc--wwwwww
wwwwwww--c3.000.3c________-www-__________c3.000.3c--wwwwwww
wwwwwww--cc|3i3|cc____-----www-------____cc|3j3|cc--wwwwwww
wwwwwwww--cccIccc----------www------------cccJccc--wwwwwwww
wwwwwwwww---ccc-----------www---------------ccc---wwwwwwwww
wwwwwwwwww----------------wsw--------------------wwwwwwwwww
wwwwwwwwwww--------------wwwww------------------wwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
ENDMAP

NAME: shoals_end_hellmonk_storm_palace
: set_border_fill_type("open_sea")
ORIENT: encompass
PLACE:  Shoals:$
WEIGHT: 3
MONS:   water elemental / air elemental w:5, wind drake / water nymph
MONS:   merfolk impaler / merfolk javelineer w:5 / merfolk aquamancer w:5
SUBST:  + : ++., p : ccc+., q : ccc+., r : ccc+., s = W.c
SUBST:  1 = 011...., 2 = 2., 3 = 33.
NSUBST: ; = 1:{ / 1:[ / 1:( / * = <.
SUBVAULT: D : storm_palace_rune
SUBVAULT: E : storm_palace_corner
SUBVAULT: F : storm_palace_corner
SUBVAULT: H : storm_palace_corner
SUBVAULT: J : storm_palace_corner
TILE:     G = dngn_statue_mermaid w:25 / dngn_statue_polearm / \
              dngn_statue_dragon / dngn_statue_maw
LFLOORTILE: floor_sprouting_ruin
MAP
cccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccc
ccEEEEEEEEEEE.....1...1..1...2.....FFFFFFFFFFFcc
ccEEEEEEEEEEE.....2...1..1...1.....FFFFFFFFFFFcc
ccEEEEEEEEEEEcccccccccc22ccccccccccFFFFFFFFFFFcc
ccEEEEEEEEEEEcG1................1GcFFFFFFFFFFFcc
ccEEEEEEEEEEEc1....ssWWWWWWss....1cFFFFFFFFFFFcc
ccEEEEE;EEEEEc..sWWWWWsWWsWWWWWs..cFFFFF;FFFFFcc
ccEEEEEEEEEEEc1sWWWssssssssssWWWs1cFFFFFFFFFFFcc
ccEEEEEEEEEEEc..sWWWWWssssWWWWWs..cFFFFFFFFFFFcc
ccEEEEEEEEEEEc1....ssWWWWWWss....1cFFFFFFFFFFFcc
ccEEEEEEEEEEEcG3.......23.......3GcFFFFFFFFFFFcc
ccEEEEEEEEEEcccccccccccppcccccccccccFFFFFFFFFFcc
cc..cccccccccDDDDDDDDDDDDDDDDDDDDDDccccccccc..cc
cc..cG1.1.1GcDDDDDDDDDDDDDDDDDDDDDDcG1.1.1Gc..cc
cc..c1..s..3cDDDDDDDDDDDDDDDDDDDDDDc3..s..1c..cc
cc..c..sWs..cDDDDDDDDDDDDDDDDDDDDDDc..sWs..c..cc
cc..c..WWW..cDDDDDDDDDDDDDDDDDDDDDDc..WWW..c..cc
cc21c..WWW..cDDDDDDDDDDDDDDDDDDDDDDc..WWW..c21cc
cc..c.sWsWs.cDDDDDDDDDDDDDDDDDDDDDDc.sWsWs.c..cc
cc..c.sWsWs.cDDDDDDDDDDDDDDDDDDDDDDc.sWsWs.c..cc
cc..c.WWsWW.cDDDDDDDDDDDDDDDDDDDDDDc.WWsWW.c..cc
cc11c.WsssW.cDDDDDDDDDDDDDDDDDDDDDDc.WsssW.c11cc
cc..2.WWssW3rDDDDDDDDDDDDDDDDDDDDDDq2WssWW.2..cc
cc..2.WWssW2rDDDDDDDDDDDDDDDDDDDDDDq3WssWW.2..cc
cc11c.WsssW.cDDDDDDDDDDDDDDDDDDDDDDc.WsssW.c11cc
cc..c.WWsWW.cDDDDDDDDDDDDDDDDDDDDDDc.WWsWW.c..cc
cc..c.sWsWs.cDDDDDDDDDDDDDDDDDDDDDDc.sWsWs.c..cc
cc..c.sWsWs.cDDDDDDDDDDDDDDDDDDDDDDc.sWsWs.c..cc
cc12c..WWW..cDDDDDDDDDDDDDDDDDDDDDDc..WWW..c12cc
cc..c..WWW..cDDDDDDDDDDDDDDDDDDDDDDc..WWW..c..cc
cc..c..sWs..cDDDDDDDDDDDDDDDDDDDDDDc..sWs..c..cc
cc..c1..s..3cDDDDDDDDDDDDDDDDDDDDDDc3..s..1c..cc
cc..cG1.1.1GcDDDDDDDDDDDDDDDDDDDDDDcG1.1.1Gc..cc
cc..cccccccccDDDDDDDDDDDDDDDDDDDDDDccccccccc..cc
ccHHHHHHHHHHccccccccccc++cccccccccccJJJJJJJJJJcc
ccHHHHHHHHHHHcG3.......32.......3GcJJJJJJJJJJJcc
ccHHHHHHHHHHHc1....ssWWWWWWss....1cJJJJJJJJJJJcc
ccHHHHHHHHHHHc..sWWWWWssssWWWWWs..cJJJJJJJJJJJcc
ccHHHHHHHHHHHc1sWWWssssssssssWWWs1cJJJJJJJJJJJcc
ccHHHHH;HHHHHc..sWWWWWsWWsWWWWWs..cJJJJJ;JJJJJcc
ccHHHHHHHHHHHc1....ssWWWWWWss....1cJJJJJJJJJJJcc
ccHHHHHHHHHHHcG1................1GcJJJJJJJJJJJcc
ccHHHHHHHHHHHcccccccccc22ccccccccccJJJJJJJJJJJcc
ccHHHHHHHHHHH.....1...1..1...2.....JJJJJJJJJJJcc
ccHHHHHHHHHHH.....2...1..1...1.....JJJJJJJJJJJcc
cccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccc
ENDMAP

NAME:   storm_palace_center_square
TAGS:   storm_palace_rune
MONS:   merfolk aquamancer / merfolk javelineer / merfolk impaler
KMONS:  O = patrolling storm dragon / patrolling titan
KITEM:  O = barnacled rune of Zot
KITEM:  R = |, azure gem
KITEM:  | = superb_item
KFEAT:  |RO = shallow_water
NSUBST: | = 1:O / 1:R / *:|, 1 = 3 = 8. / * = 1..
SUBST:  p : W., q : W., r : W., S : W.
MAP
cccc..pppppppppp..cccc
cWW..ppppccccpppp..WWc
cW1...ppppccpppp...1Wc
c..ccccppppppppcccc..c
...cWW..pppppp..WWc...
.r.cW.1...pp...1.Wc.s.
rrrc.1ccccWWcccc1.csss
rrrr..ccWWWWWWcc.sssss
rrrrr.cWWWWWWWWc.sssss
rcrrr1cWWc||cWWc1ssscs
rccrrrWWWW||WWWWsssccs
rccrrrWWWW||WWWWsssccs
rcrrr1cWWc||cWWc1ssscs
rrrrr.cWWWWWWWWc.sssss
rrrr..ccWWWWWWcc..ssss
rrrc.1ccccWWcccc1.csss
.r.cW.1...qq...1.Wc.s.
...cWW..qqqqqq..WWc...
c..ccccqqqqqqqqcccc..c
cW1...qqqqccqqqq...1Wc
cWW..qqqqccccqqqq..WWc
cccc..qqqqqqqqqq..cccc
ENDMAP

NAME:   storm_palace_center_circular
TAGS:   storm_palace_rune no_pool_fixup
MONS:   merfolk aquamancer / merfolk javelineer / merfolk impaler
KMONS:  O = patrolling storm dragon / patrolling titan
KMONS:  P = plant
KITEM:  O = barnacled rune of Zot
KITEM:  R = |, azure gem
NSUBST: | = 1:O / 1:R / *:|, 1 = 3 = 8. / * = 1..
SUBST:  . = P......
MAP
c....................c
1.cccccccccccccccccc.1
.cc1......1.......1cc.
....WWWWWWWWWWWWWW....
...WWccccccccccccWW...
...Wcc.....1....ccW...
...Ww............wW...
.c.Ww...cccccc...wW.cW
...Wc..cc|..|cc..cW.WW
...Wc..1....1ww..cWWWW
.c.Ww.....||.wwWWWWWcW
.c.Ww.....||.wwWWWWWcW
...Wc..1....1ww..cWWWW
...Wc..cc|..|cc..cW.WW
.c.Ww...cccccc...wW.cW
...Ww............wW...
...Wcc....1.....ccW...
...WWccccccccccccWW...
....WWWWWWWWWWWWWW....
.cc1.......1......1cc.
1.cccccccccccccccccc.1
c....................c
ENDMAP

NAME:   storm_palace_center_ruins
TAGS:   storm_palace_rune
MONS:   merfolk aquamancer / merfolk javelineer / merfolk impaler
KMONS:  O = patrolling storm dragon / patrolling titan
KITEM:  O = barnacled rune of Zot
KITEM:  R = |, azure gem
NSUBST: | = 1:O / 1:R / *:|, 1 = 3 = 8. / * = 1..
SUBST:  p : W., q: W., . = W..., c = cc.
TILE:   G = dngn_statue_mermaid w:25 / dngn_statue_polearm / \
            dngn_statue_dragon / dngn_statue_maw
MAP
c....................c
1.cccccccccccccccccc.1
.cc................cc.
..cccc.cc1cc1cc.cccc..
.....cccqqccqqccc.....
....ccqqqqccqqqqcc....
.c....GqqccccqqG....c.
.cccc1..cccccc..1cccc.
....ccccc||||cccccppc.
.cppc.......1cc..cppc.
.cppc.ccccc.cccc.1ppc.
.cpp1.cccc.ccccc.cppc.
.cppc..cc1.......cppc.
.cppccccc||||ccccc....
.cccc1..cccccc..1cccc.
.c....GqqccccqqG....c.
....ccqqqqccqqqqcc....
.....cccqqccqqccc.....
..cccc.cc1cc1cc.cccc..
.cc................cc.
1.cccccccccccccccccc.1
c....................c
ENDMAP

NAME:   storm_palace_corner_pillars
TAGS:   storm_palace_corner allow_dup no_pool_fixup
SUBST:  ; = AGG..., W : wWW
TILE:   G = dngn_statue_mermaid w:25 / dngn_statue_maw / dngn_statue_dragon
MAP
...........
.WWWW;WWWW.
.WccW.WccW.
.WccW.WccW.
.WWWW.WWWW.
.;... ...;.
.WWWW.WWWW.
.WccW.WccW.
.WccW.WccW.
.WWWW.WWWW.
..........
ENDMAP

NAME:   storm_palace_corner_reverse_hut
TAGS:   storm_palace_corner allow_dup
KMONS:  P = plant
SUBST:  ; : W., . = P.......
MAP
cccccc.....
c..........
c..ccccc...
c.cc;;;cc..
c.c;;;;;c..
c.c;; ;;c..
..c;;;;;c..
..cc;;;cc..
...cc+cc...
...........
..........
ENDMAP

NAME:   storm_palace_corner_grid
TAGS:   storm_palace_corner allow_dup
SUBST:  . = WW., c = cc., c : ccbG
TILE:   G = dngn_statue_mermaid w:25 / dngn_statue_polearm / \
            dngn_statue_dragon / dngn_statue_maw
MAP
...........
.c.c.c.c.c.
...........
.c.c.c.c.c.
...........
.c.c. .c.c.
...........
.c.c.c.c.c.
...........
.c.c.c.c...
..........
ENDMAP

NAME:   storm_palace_corner_altar
TAGS:   storm_palace_corner allow_dup no_pool_fixup
KMONS:  S = sacred lotus
KFEAT:  _ = altar_qazlal / altar_fedhas w:5
KFEAT:  S = W
SUBST:  _ = __C, t : ttG, S : SW
TILE:   G = dngn_statue_mermaid w:25 / dngn_statue_polearm / \
            dngn_statue_dragon / dngn_statue_maw
MAP
cccccccW...
cccccccW...
ccccSWWW...
ccccW......
ccSWW......
ccW.. ..t..
ccW........
WWW....WWW.
....t..W_W.
.......WWW.
..........
ENDMAP

NAME:   storm_palace_corner_narrow
TAGS:   storm_palace_corner allow_dup no_pool_fixup
SUBST:  . = W.., ; : wWW., + : ++.
TILE:   G = dngn_statue_mermaid w:25 / dngn_statue_polearm / \
            dngn_statue_dragon / dngn_statue_maw
MAP
G.........+
.W........+
..WWccc...c
..WWWWcc++c
..cWWWWc;;c
..cWW Wc;;c
..ccWWcc;;c
...ccccc;;c
...+;;;;;;c
...+;;;;;;c
++cccccccc
ENDMAP

# don't allow_dup this one to avoid disconnects
NAME:   storm_palace_corner_blocked
TAGS:   storm_palace_corner no_pool_fixup
KMONS:  P = plant
SUBST:  . = P......., G = GG., W : wW
TILE:   G = dngn_statue_mermaid w:25 / dngn_statue_polearm / \
            dngn_statue_dragon / dngn_statue_maw
MAP
WWWW.......
WWW........
WW........c
W..G...G..c
..........c
..... ....c
..........c
...G...G..c
..........c
.........Gc
cccccccccc
ENDMAP
