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

{{

function shoals_finale_setup(e, qualifier, decoy_count)
  qualifier = "_" .. qualifier
  if not decoy_count then
    decoy_count = crawl.random_range(6, 7)
  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 = 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_zot_cyan")
  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
SUBST: w = wwwW
TILE:  x = wall_pebble_lightgray
KFEAT: O = enter_shoals
MAP
  WWWWWWW
 WWwwwwwWW
WWwxxxxxwWW
Wwxx1..xxwW
Wwx.....xwW
Wwx..O..+.@
Wwx.....xwW
Wwxx...xxwW
WWwxxxxxwWW
 WWwwwwwWW
  WWWWWWW
ENDMAP

NAME:  minmay_shoals_entry_centaurs
TAGS:  shoals_entry transparent
MONS:  centaur / nothing w:5, plant / nothing w:20
KFEAT: O = enter_shoals
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
MONS:    wind drake, manticore
NSUBST:  1 = 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
KFEAT:  O = enter_shoals
NSUBST: Z = 4:1 / *:W
KFEAT:  1 = W
KMONS:  1 = merfolk / merfolk siren
MAP
..xxx
xZ..x
x.Z.xx
xxZ..x
 xZZ.xx
 xxZx.x
  xZO.x
 xxZx.x
 xZZ.xx
xxZ..x
x.Z.xx
xZ..x
..xxx
ENDMAP

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

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

default-depth: Shoals

NAME:   overgrown_tower
TAGS:   transparent extra
WEIGHT: 2
MONS:   plant, fungus
SUBST:  x = x:60 . '
SUBST:  ' = ' 1:5
SUBST:  . = . 2:1
SUBST:  ' = .
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_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 / nothing w:20 / any randbook w:1
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_fraction() < 1 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

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

# Shoal Ruins - nothing special, just some flavor (Enne)
# Appear rarely.
#
NAME:   overgrown_hall
WEIGHT: 2
MONS:   plant, fungus
MONS:   cyclops / stone giant w:2
SUBST:  x = x:20 .
SUBST:  G = G:40 .
SUBST:  . = .:90 1:19 x:1
SUBST:  1 = 1 2:1
MAP
xxxxxxxxxxx
x.........x
x.G.G.G.G.x
+....3....+
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_pebble_red
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
KFEAT:   Pfp = shallow_water
KFEAT:   5 = deep_water
SUBST:   p = ppWw, p = Pf, y = xxxxcccPPPfw, f = PPwW, x = x:10 c:1
SHUFFLE: 23
SUBST:   2 = 2:15 1:10, 3 = 3:15 1:10
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
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
KFEAT:   123456789 = deep_water
KITEM:   | = |
KITEM:   * = *
KFEAT:   |* = shallow_water
SHUFFLE: 12345 / 86769
NSUBST:  Z = 1:w / *:c
SUBST:   G = GGGwwW, 7 = 667, 8 = 688, 9 = 7899, x = c
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
FHEIGHT: ;'b123 = 40
KPROP:   ;'b123 = no_tide
KMONS:   1 = merfolk
KMONS:   2 = merfolk impaler / nothing w:4
KMONS:   3 = merfolk javelineer / nothing w:4
KFEAT:   ' = W
KFEAT:   ;23 = w
KFEAT:   b = .
MAP
  wwwwwwww
 wwwxxxxxww
 wwxx;22xxw
.b1x';;;3xw
.bb+';;;3xw
.b1x';;;3xw
 wwxx;22xxw
 wwwxxxxxww
  wwwwwwww
ENDMAP

NAME:   nicolae_shoals_aquamancer_cove
TAGS:   no_monster_gen
KMONS:  123 = merfolk aquamancer
SUBST:  X = x.
KFEAT:  1 = w
KFEAT:  2 = .
KFEAT:  3 = W
NSUBST: 1 = 1:1 / 1:w / * = 1www
MAP
     xxxX.@
    xx...2.
  xxxX.Xxx.
xxxXX...Xxxx
xXXX..*..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
SHUFFLE: 234560, ABC
SUBST:   A : x:6 .:1, B : xxw., C : xw.., c = c:29 .:1, x = x:9 c:1
SUBST:   % = %:8 *:1 .:1
MAP
 xxxx        xxxxx  xxxx
xxxcxxxxW@Wxxxxcxxxxxcxxx
xW..%xxWABAWxx414xxx5..Wx
WA...2x.....x%...%x%...AW
@B.C.1c..C..c..C..c1.C.B@
WA...2x3...3x.....x%...AW
xW..%xxx%1%xxWABAWxx5..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
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
: dgn.delayed_decay(_G, '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
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
SUBST: b = .W, + = .++
KMONS: m = merfolk / nothing w:5
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:$
SHUFFLE: }}]]))>
KPROP:   .123wqx = no_tide
SUBST:   . = ....W, w = wWW..., q = w, x = xxxc
KFEAT:   123 = . w:40 / W
KMONS:   1 = 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
MAP
     .......
   ...xxxxx...
  .1..x.3.x..1..
 ....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........
  .1..x.3.x..1..
   ...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 }
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:$
KPROP: c.GWuw1 = no_tide
KMONS: 1 = kraken
KFEAT: 1 = w
SUBST: u = Ww
SUBST: . = .:500 0
MAP
ccccccccccccccccccccccccccccccccc
c...c.................WWWWWWuwwwc
@.c...c..G....G...G...GWWWWWuwwwc
c...c.................WWWWWWuwwwc
@.c...c..G....G...G...GWWCWWuw1wc
c...c.................WWWWWWuwwwc
@.c...c..G....G...G...GWWWWWuwwwc
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 ; fustibalus good_item . sling bullet good_item . gold / \
         satyr ; longbow good_item . arrow 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
MONS:    faun, satyr, meliai, minotaur
KMONS:   _ = merfolk javelineer
KMONS:   b = bush
KMONS:   p = plant
ITEM:    any potion, longbow good_item, fustibalus good_item
# Bacchus-approved.
KFEAT:   _ = altar_uskayaw
SHUFFLE: 35, ABC, FGHI
SUBST:   0 = 24., X : xp.., Y : xp..
SUBST:   A = x, B : p., F = x, G = p., CHI = .
: dgn.delayed_decay(_G, 'g', 'snapping turtle corpse')
: dgn.delayed_decay(_G, 'h', 'elephant corpse')
MAP
    ccccccxxxxxxxcccccc
    c3dd*xxxg_hxxx*dd5c
    c..2xx2.b0b.4xx4..c
    cex+xWWx...xWWx+xfc
    cxx...WW.1.WW...xxc
   xxx2.CBAWX.XWABC.4xxx
  xx...1..WWW1WWW..1...xx
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
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
KPROP: . = no_tide
MONS: sea snake, wind drake, manticore, alligator snapping turtle
MONS: snapping turtle, merfolk impaler / merfolk aquamancer / merfolk javelineer
SHUFFLE: -'"
NSUBST: - = 2:1 / 2=1.., ' = 1:2 / 3=3., " = 1:4 / 2=5., ` = 1=|* / 2=*%
NSUBST: _ = 2:6 / *=6...
MAP
       .cccccc
cccccc.tc_..`c
c`.._ct.c.''.c
c.--.c..c.''.c
c.--.c..c..._c
c_...+..+ccccc
cccccc......t.
...........t.
...t...c+cccc
.......c..._c
.t.G.t.c."".c
.......c."".c
...t...c_..`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=*%
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
KMONS: P = bush
MONS: faun, satyr, centaur
# 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: -_TP123 = floor_grass
COLOUR: -_P123 = green
COLOUR: c = white
MAP
....................
.cc..cc..cc..cc..cc.
.cc..cc..cc..cc..cc.
....................
....-------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-------....
....................
.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
KMONS: P = plant
MONS: sea snake, merfolk aquamancer
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.
MAP
   P..............P
   .xxxxxxxxxxxxxx.
   .x``x.''''.x``x.
   .x``+.''''.+``x.
   .x``x.''''.x``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_marble
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
KPROP:  =aDPQ'_ = no_tide
KITEM:  _ = *
KITEM:  P = |
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:  =aD1P'_ = floor_nerves
TILE:   q = wall_abyss
MAP
   wwwwwwwww
  wwwwwwwwwww
 wwwzzzzzzzwww
wwwzxxxxxxxzwww
wwzxxaaaaaxxzww
wwzxaa1P1aaxzww
wwzxa1'1'1axzww
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 / \
         hunting sling good_item / fustibalus 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:   @124defgt. = floor_grass
MAP
          wwwwwww
  wwwwwwwwwxxxxxwww
  wxxxxxxxxxtttxwww
 wwxRRRwwwwR.1.xxwww
wwxxR.PPwwwP...Dxwww
wxx..2.Pw3ww..2Dxxww
wxD....PwwwPD2..Dxwww
wxx.4..MWWWM2DD..xwww
xxx....DpppDxxxx2xwww
xaxP...ttwttxdd..xwww
@x....Dtqtqtxdd4.xxwww
xaxP.Dtttwttxdd...xwww
xxx...DtrrrDxxxxx2xwww
wxxD..DPwwwP.2....xwww
wxxD.2.wwwww......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
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 magic mapping / any scroll
MONS:   shadow wraith
NSUBST: ' = d / e / f / g / h / 1 / z / } / .
SUBST:  } = }]), - = x_, x = x:70 c
CLEAR: _
: dgn.delayed_decay( _G, "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
DEPTH:  Shoals, !Shoals:$
ORIENT: northwest
KPROP:  123DL*n'} = no_tide
KITEM:  L = phantom mirror
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
FTILE:  123DRL*n'} = floor_limestone
SUBST:  } = }]), * = **|
NSUBST: . = Q / *=% M:30 .:150, ' = Q / '
MARKER: L = lua:fog_machine { cloud_type = "flame", pow_min = 10, \
            pow_max = 10, delay = 10, size = 1, walk_dist = 0, \
            start_clouds = 1, excl_rad = 0 }
: dgn.delayed_decay( _G, "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'''nnR21*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
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 | scythe | demon trident | bardiche | glaive | \
      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 ice | ring of protection | \
      ring of see invisible | ring of willpower | amulet of reflection | \
      amulet of the acrobat | randbook disc:poison | randbook disc:hexes | \
      randbook disc:ice | randbook disc:summoning | phial of floods | \
      condenser vane | lightning rod | wand of charming | wand of iceblast | \
      randbook disc:transmutation" )
-- 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:100 count:2 use_all ; potion of flight 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
KITEM: L = * w:20 / |
KFEAT: L = W / .
KFEAT: 12 = w
SUBST: M = Wx, w = W x 1:5 2:5 w:70, W = . W:70, ~ = w:90 1
SUBST: ' = L', x = x:60 c
MAP
 xxxxxxxx xxxxxx
xxccccccxxxMMMMxxx
xccLW2wccxMWWWWWMxxx
xcL''WWwcxWW~~~WWWMxx
xc'...WwcxWwwWW~~WWMx
xc'...WwcxWwWxxW~~WMx
xcc..Ww2cxWwwWxWW~WMx
xxccWwWccxxWwWxxW~WMx
 xxxWwWxxxWwwWxxW~WMx
  xMWwWxxxWwWxxMW~Wxx
 xxWwwWxxxWwWxxW~WWx
xxWwwWxxxWwwWxMW~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
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

###############################################################################
#
# <<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,6))

# 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
NSUBST:    A = 1:+ / 1 = x:19 +:1 / *:x
SUBST:     0 = 0.
SUBST:     e = e.
KMONS:     ge = merfolk impaler / merfolk javelineer / merfolk aquamancer
: if shoals_vault_is_mimic() then
KITEM:     O = barnacled rune of Zot mimic
: else
KITEM:     O = barnacled rune of Zot
: end
KPROP:     O = no_tide
LROCKTILE: wall_pebble_lightgray
MAP
 xxAxx
xx.0.xx
xe0g0ex
A0gOg0A
xe0g0ex
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 = 2:. / 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 / harpy 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
: end
KFEAT:     123 = w
KPROP:     d = no_tide
SHUFFLE:   AB / AB / BA, CD / CD / DC
NSUBST:    2 = 2 = 22w / * = 22www, 0 = 2:0 / 1:. / * = 00...
SUBST:     AC = x, B = w, D = .
LROCKTILE: wall_pebble_lightgray
FHEIGHT: .d0@ = 15
MAP
  xxxxxxx
 xx12wwwxx
xx2x..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 / 2:. / * = 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:  O = barnacled rune of Zot mimic
: else
KITEM:  O = barnacled rune of Zot
: end
KFEAT:  K = deep_water
NSUBST: A = 1:. / 1:xxxx. / *:x
NSUBST: 1 = 4:1 / 4 = 1., 0 = 2:0 / 2:. / * = 00...
NSUBST: w = 1:K / *:w
: shoals_ice_setup(_G)
KPROP:  O = no_tide
MAP
   .......
  .-------.
 ..xxxxxxx..
.-xA.---.Ax-.
.-x.10w01.x-.
.-x-0x1x0-x-.
.-x-w1O1w-x-.
.-x-0x1x0-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:   P = plant
: if shoals_vault_is_mimic() then
KITEM:   O = barnacled rune of Zot mimic
: else
KITEM:   O = barnacled rune of Zot
: end
NSUBST:  1 = 4:1 / 2:1. / 2:1. / 2:2 / 2:2. / 2:2. / *:.
SHUFFLE: abcdefghijk, ABCDEFGH
SUBST:   abAB = x, cdeCDE = P, g : xP, h : P., ijkGH = .
KPROP:   O = no_tide
MAP
   abcbd
 kkaBAAdee
 jCCB1HHGf
ijD11111Gfg
iED11111FFg
hE111O111Eh
gFF11111DEi
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:   P = plant
NSUBST:  1 = 2:1 / 2:1. / 2:1. / *:.
SHUFFLE: abcdefghijk, ABCDEFGH
SUBST:   abAB = x, cdeCDE = P, g : xP, h : P., ijkGH = .
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: 4
KITEM:  O = barnacled rune of Zot
MONS:   faun w:15 / manticore / harpy, satyr, minotaur, sphinx
KMONS:  O = sphinx
KMONS:  P = plant
SUBST:  1 = 1.., 2 = 2.., 3 = 334, G = G.
SUBST:  ; : W.., p : W.., q : W.., r : W.., s : W.., y : W.., z : W..
NSUBST: | = 1:O / *:|, . = 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...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......3.|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...3.cc1.xxwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwxDDqqqxDDsssscc.......|ccDDDwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwxxD...DDxsssccc1..1cccwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwxxD2..xxxsssccccccwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwxDx......sssxwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwxDx1112xxxxwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxDDDxxwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
ENDMAP

NAME: shoals_end_hellmonk_storm_palace
: set_border_fill_type("open_sea")
ORIENT: encompass
PLACE:  Shoals:$
WEIGHT: 4
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
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
KITEM:  O = barnacled rune of Zot
KITEM:  | = superb_item
MONS:   merfolk aquamancer / merfolk javelineer / merfolk impaler
KMONS:  O = patrolling storm dragon / patrolling titan
KFEAT:  |O = shallow_water
NSUBST: | = 1:O / *:|, 1 = 4 = 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
KITEM:  O = barnacled rune of Zot
MONS:   merfolk aquamancer / merfolk javelineer / merfolk impaler
KMONS:  O = patrolling storm dragon / patrolling titan
KMONS:  P = plant
NSUBST: | = 1:O / *:|, 1 = 4 = 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
KITEM:  O = barnacled rune of Zot
MONS:   merfolk aquamancer / merfolk javelineer / merfolk impaler
KMONS:  O = patrolling storm dragon / patrolling titan
NSUBST: | = 1:O / *:|, 1 = 4 = 8. / * = 1..
SUBST:  p : W., q: W., . = W..., c = cc.
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
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
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
KFEAT:  _ = altar_qazlal / altar_fedhas w:5
SUBST:  _ = __C, t : ttG
MAP
cccccccW...
cccccccW...
ccccWWWW...
ccccW......
ccWWW......
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., + : ++.
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
MAP
WWWW.......
WWW........
WW........c
W..G...G..c
..........c
..... ....c
..........c
...G...G..c
..........c
.........Gc
cccccccccc
ENDMAP
