##############################################################################
#
# The Sewer (Eino)
#
# The Sewer aspires to be an exciting place to go with a low level character.
#
# Flavour: drainage and sewer themed, so rats, kobolds, etc. Water is (dark
# and light) green.
# Gameplay: an early challenge, featuring monsters which are bland later but
# interesting when encountered at low level in wet environs (like bullfrogs),
# plus a few semi-unique tutorializing enemies like brain worms and crocodiles.
# Loot consists of consumables; the harder maps contain a few good items.
#
##############################################################################

: crawl_require('dlua/vault.lua')

{{

-- Sewer entry vaults should call this function to place the portal and have a
-- single `O' glyph for the portal location. Additionally, if they want the `1'
-- glyph to place a monster, they should define the `1' through KMONS (and not
-- the usual MONS statement).
function sewer_portal(e)
  local timeout_turns = crawl.random_range(600, 800)

  local messager =
    timed_msg {
       initmsg = { "You hear the sound of rushing water.",
                   "There is an entrance to a sewer on this level. "
                   .. "Hurry and find it before the portal rusts away!" },
      finalmsg = "You hear the drain falling apart.",

      verb = 'rusting',
      noisemaker = 'drain',
      ranges = {
        { 5000, 'slow ' },  { 4000, '' },
        { 2500, 'brisk ' }, { 1500, 'quick ' },
        { 0, 'rapid ' }
      }
    }

  e.lua_marker('O',
      timed_marker {
        disappear = "The drain falls to bits.",
        entity = 'drain',
        turns = timeout_turns,
        single_timed = true,
        floor = "expired_portal",
        feat_tile = "dngn_portal_sewer_rusted",
        msg = messager })
  e.tags("uniq_sewer no_monster_gen chance_sewer")
  e.chance(800)
  e.kfeat("O = enter_sewer")
  e.kfeat("1 = W")
  e.colour("1W = lightgreen / cyan w:5")
  e.colour("w = green")
  e.tile("x = wall_oozing")
  e.tile("c = wall_stone_mossy")
end

function sewer_setup(e)
  e.kfeat("< = exit_sewer")
  e.colour("w = green")
  e.colour("W = lightgreen")
end
}}

# Basic sewer entries ##########################################
# NOTE: See comments above regarding KMONS for the 1 glyph in these vaults.
default-depth: D:3-6

NAME:   portal_sewer_entry_a
: sewer_portal(_G)
SUBST:  1 = 2234..........
MONS:   nothing
MONS:   rat / river rat w:5
MONS:   ball python / adder w:2
MONS:   clockroach w:5 / dart slug w:5 / ribbon worm w:3
MAP
.........
...111...
..1WWW1..
.1WWWWW1.
.1WWOWW1.
.1WWWWW1.
..1WWW1..
...111...
.........
ENDMAP

NAME:   portal_sewer_entry_b
: sewer_portal(_G)
SUBST:  ' = W. , W = WW1
KMONS:  1 = rat w:20 / river rat / ball python / adder w:2 / \
            clockroach w:5 / dart slug w:5 / ribbon worm w:3
MAP
xxxxxx
xOWWW'
xWWWW.
xWWW'.
xWWW..
xW'...
ENDMAP

NAME:   portal_sewer_entry_c
WEIGHT: 4
: sewer_portal(_G)
NSUBST: W = 8 = 111W / *:W
NSUBST: n = 1:+ / 2:n / *:c
TILE:   c = wall_stone_mossy
KMONS:  1 = rat w:20 / river rat / ball python / adder w:2 / \
            clockroach w:5 / dart slug w:5 / ribbon worm w:3
MAP
.........
.nnnnnnn.
.nWWWWWn.
.nWWOWWn.
.nWWWWWn.
.nWWWWWn.
.nnnnnnn.
.........
ENDMAP

NAME:   portal_sewer_entry_d
: sewer_portal(_G)
KMONS:  1 = patrolling adder
KFEAT:  1 = W
MAP
xxxxxxxxxx
xWOW1WWWWW@
xxxxxxxxxx
ENDMAP

NAME:   portal_sewer_entry_e
: sewer_portal(_G)
KFEAT:  z = rock_wall
ORIENT: northwest
NSUBST: X = 2:+ / *:x
SUBST:  w = WW.
NSUBST: W = 8:111W / *:W
KMONS:  1 = rat w:20 / river rat / ball python / adder w:2 / \
            clockroach w:5 / dart slug w:5 / ribbon worm w:3
MAP
zzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzxxxxxxxxx
zzzzzzzzzzzzzzzzxWWWXWww.
zzzzzzzzzzzzzzzzxWOWXWww.
zzzzzzzzzzzzzzzzxWWWXWww.
zzzzzzzzzzzzzzzzxXXXXWw..
zzzzzzzzzzzzzzzzxWWWWWw..
zzzzzzzzzzzzzzzzxwwwww...
zzzzzzzzzzzzzzzzxwww.....
zzzzzzzzzzzzzzzzx........
ENDMAP

NAME:   portal_sewer_entry_f
: sewer_portal(_G)
KMONS:  1 = clockroach / dart slug /nothing w:5
NSUBST: W = 6:1 / *:W
COLOUR: W = green / cyan w:5
MAP
xxxxxxxxxxx
.WWWWWWWWW.
@WWWWOWWWW@
.WWWWWWWWW.
xxxxxxxxxxx
ENDMAP

NAME:   gup_sewer_entry_pipe
TAGS:   patrolling no_pool_fixup
: sewer_portal(_G)
KMONS:  2 = clockroach / dart slug / nothing
SUBST:  W = WW.
MAP
@Wxxxxxxxxx
WWWWWWWWWWxx
xWWwwwwwwWWx
xxxxxxxxx22x
 xxwwwwww22x
xxWWW2O2WWxx
x22wwwwwwxx
x22xxxxxxxxx
xWWwwwwwwWWx
xxWWWWWWWWWW
 xxxxxxxxWW@
ENDMAP

NAME:   gup_sewer_entry_spiral
TAGS:   patrolling
: sewer_portal(_G)
KMONS:  1 = rat / river rat w:5 / adder w:5 / clockroach / \
            dart slug / ribbon worm w:5 / nothing
NSUBST: - : 8:1 / 8:. / *:W
MAP
xxxxxxxxxx
x--------xx
@xxxxxxxx-x
xx-----xx-x
x-xxxxx-x-x
x-xx-Ox-x-x
x-x-xxx-x-x
x-xx----x-x
x-xxxxxxx-x
xx-------xx
 xxxxxxxxx
ENDMAP

NAME:   gup_sewer_entry_bubbles
TAGS:   patrolling
: sewer_portal(_G)
KMONS:  1 = rat / river rat w:5 / adder w:5 / clockroach / \
            dart slug / ribbon worm w:5 / nothing
NSUBST: - = 8:1 / *:W
MAP
 xxx    xxx
xx-xxxxxx-xx
x----------x
x---xxxx---x
xx-xx--xx-xx
 x-x--O-x-x
 x-x----x-x
xx-xx--xx-xx
x---x--x---x
x---x------x
xx-xxxxxx-xx
 x@x    xxx
ENDMAP

NAME:   gup_sewer_entry_bowl
: sewer_portal(_G)
KMONS:  1 = rat / river rat w:5 / clockroach / \
            dart slug / ribbon worm w:3 / nothing
MAP
..........
.xxx.xxxx..
.xWxxxWWxx+.
.xW+WW11WWx.
.xO+WW11WWx.
.xWxxxWWxx+.
.xxx.xxxx..
..........
ENDMAP

NAME:   gup_sewer_entry_glass
: sewer_portal(_G)
KMONS:  1 = adder / clockroach w:5 / dart slug w:5 / nothing
MAP
..........
.mmmmmmm.
.mW1W1Wm.
.+W1O1Wm.
.mW1W1Wm.
.mmmmmmm.
.........
ENDMAP

NAME: lightli_sewer_entry_pipes
NSUBST: o = 1:O / *:W
NSUBST: W = 3:1 / 3 = 1W / 3 = 1WWW / *:W
KMONS:  1 = river rat / adder / rat / ribbon worm
: sewer_portal(_G)
MAP
vvvvvvvvvv
vovWovWvvv
vWvWvvWWWv
vWvWvvWvWv
vWvWWvWvWv
vWvvWvWvWv
vWWWWvWvWv
vvvvWvWvWv
vWWWWWWvov
vWvvvvvvvv
vWWWWWWWWW
vvvvWvWvWW
..WWWWW.W.
....W.....
..........
ENDMAP

NAME: cheibrodos_sewer_entry_bend
TAGS: no_monster_gen
KMONS: 1 = ribbon worm
NSUBST: - = 1:1 / 1=1.. / 1=1...
KFEAT: A = iron_grate
: sewer_portal(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
xxxAAxxxxxxxxxxxxxxxxx
xxxWWxxxxx---xxxxxxxxx
x...WWWWWWW--xxxxxxxxx
.....WWWWWWW-xxxxxxxxx
@xx..xxxxOWWxxxxxxxxxx
  x.....mxWWxxxxxxxxxx
  xxxx...xWWxxxxxxxxxx
     xx..xWWxxxxxxxxxx
      x..xWWxxxxxxxxxx
        ...WWAxxxxxxxx
        ....WAxxxxxxxx
         @..xxxxxxxxxx
          ..xxxxxxxxxx
ENDMAP

NAME: cheibrodos_sewer_entry_drain
TAGS: no_monster_gen
ORIENT: float
KMONS: 1 = rat / ball python / clockroach / ribbon worm
NSUBST: 1 = 2:1 / 2=1.. / *:.
: sewer_portal(_G)
MAP
  ...@...
 ..x1.1x..
...WWWWW...
.xWWWWWWWx.
.1WWWWWWW1.
@.WWWOWWW.@
.1WWWWWWW1.
.xWWWWWWWx.
...WWWWW...
 ..x1.1x..
  ...@...
ENDMAP

NAME: cheibrodos_sewer_entry_sluice
TAGS: no_monster_gen
ORIENT: float
KMONS: 1 = ball python / ribbon worm / bat / w:5 river rat
SHUFFLE: AB
SUBST: A = w, B = .
NSUBST: . = 2:1 / 2=1.
: sewer_portal(_G)
MAP
.....@.....
.xxwwAwwxx.
.xxwwAwwxx.
.ww.....ww.
.ww.....ww.
.ww..O....@
.ww.....ww.
.ww.....ww.
.xxwwwwwxx.
.xxwwwwwxx.
...........
ENDMAP

NAME:    mainiacjoe_sewer_entry_somewhere_in_here_1
KMONS:   1 = frilled lizard / rat / clockroach w:5 / dart slug w:5 / \
             ball python / river rat w:2 / ribbon worm w:3 / adder w:4
KMONS:   2 = iguana
KFEAT:   @2 = shallow_water
NSUBST:  O = 1:O / 5:1 / 1:1W / *:W
: if you.depth() > 4 then
SHUFFLE: 12
NSUBST:  2 = 1:2 / *:W
: end
NSUBST:  P = 1:@ / *:x, Q = 1:@ / *:x
: sewer_portal(_G)
MAP
 PPPPPPP
xxWxWxWxx
xWxOxOxWx
xxOxOxOxx
xWxOxOxWx
xxOxOxOxx
xWxOxOxWx
xxWxWxWxx
 QQQQQQQ
ENDMAP

NAME:    mainiacjoe_sewer_entry_somewhere_in_here_2
KMONS:   1 = frilled lizard / rat / clockroach w:5 / dart slug w:5 / \
             ball python / river rat w:2 / ribbon worm w:3 / adder w:4
KMONS:   2 = iguana
KFEAT:   @2 = shallow_water
: if you.depth() > 4 then
SHUFFLE: 12
NSUBST:  2 = 1:2 / *:W
: end
NSUBST:  @ = 1:@ / 1:x, 1 = 1:1W / *:1, O = 1:O / *:W
: sewer_portal(_G)
MAP
xxxxx@xxx
xOxOxWxOx
xWxWxWxWx
xxW1x1Wxx
x1xx1xx1x
xxW1x1Wxx
xWxWxWxWx
xOxWxOxOx
xxx@xxxxx
ENDMAP

# The actual portal vaults #####################################
# Currently, the total weight is 180
default-depth: Sewer

### KOBOLDS ################################################################
# Sewers with kobold settlements.

############################################################################
# Sewer with a small kobold camp, potion treasure and Ely/Zin altar.
#
NAME:     sewer_kobolds
TAGS:     no_item_gen no_monster_gen no_pool_fixup
ORIENT:   encompass
: sewer_setup(_G)
# some fresh water for the kobolds
MONS:     jackal, kobold, kobold brigand
MONS:     rat w:15 / river rat w:7
ITEM:     potion of curing pre_id / potion of heal wounds pre_id
ITEM:     potion of enlightenment pre_id
KMONS:    Z = sacred lotus
KFEAT:    YZ = deep_water
KFEAT:    y = shallow_water
KFEAT:    E = altar_zin / altar_elyvilon w:30
SUBST:    ' = .W, ? = .x, Z = Zxxx
SHUFFLE:  de
SUBST:    1 = 1..., 2 = 2., 4 = 4.
NSUBST:   3 = 1:3 / *:3.
MAP
         ccc
         cwcc
        ccwwc
        cwwwc
        cwwwc
        cwwwc
        cWwwc
       ccWwWcc
       c.WwW.c
     ccc.WwW.c
     c<..WwW.c
     ccc.Www'c
       c.WwW.c
      cc'WwW'cc
      c.'WwW''cccccccccccccccccccccccccccccccccc
      c''WwWWWWWWWWWWWWWWWWWWWWWW44444.A<..4444c
      c''WwW''cccccccccccccccccccccccccccccccccc
      c.'WwW''c
      c.WWwWW'c
      c'WwwwW'c
      c'WwwwW'c
      c'WwwwW'c
      c1'WWW''c
      c.2''''1c
xxxxxxcccc1ccccx
xedEZxxx11221..xx
xdexxxx.22322y..x
xx?.?xxx....yYy.x
 xx?.xxx?....y.xx
  x?x..?.?3...xx
  xx???.xxxxxxx
   xxxxxx
ENDMAP

############################################################################
# Water treatment center, staffed by kobolds
#
NAME:   sewer_minmay_treatment
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
MONS:   rat / river rat w:3
MONS:   kobold / kobold brigand w:1
MONS:   ball python / adder w:5 / frilled lizard w:2 / endoplasm w:1
SUBST:   y : yyyyyyW., Y : YYYYYYWw
SUBST:   y = W., Y = Ww
: item(dgn.loot_potions .. " / any scroll w:30 / any armour / any weapon")
: sewer_setup(_G)
: set_feature_name("clear_stone_wall", "large window")
KFEAT:  C = deep_water
SUBST:  1 = 1., 2 = 2.
NSUBST: - = 64 = 1... / 32 = 3... / *:., d = 4:d / *=d.
MAP
vvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvCCv
vwwnddv..vxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--v.2vddnCCv
vwwnd222.v----xxxxxxx-----xxxxxxx--xxxxxx-------v.222dnCCv
vwwvv222.+------xxxx--------xxxx-----xxx--------+.222vvCCv
vwwnd222.v------------xxx-----------------------v.222dnCCv
vwwnddv2.vyyy----------xxx-------xx-----------yyv..vddnCCv
vwwvvvvvvvYYyy--xx-----xx--------xxxx------xxyyYvvvvvvvCCv
vwwwwwwwwwwYYyyxxxx...............xx....yyxxYYYYwcwcCcCCCv
vwwwwwwwwwwwYYYYYYxxyyyyyy.........yyyyyyYYYYwwwcwcwcCCCCv
vwwwwwwwwwwwwwwwwYYYYYYYYyyyyyyyyyyyYYYYYYwwwwwwwcwcCcCCCv
vwwwwwwwwwwwwwwwwwwwwwwwYYYYYYWYYYYYYwwwwwwwwwwwcwcwcCCCCv
vwwwwwwwwwwwwwwwwwwwwwwwwwYYYWYYYYYwwwwwwwwwwwwwwcwcCcCCCv
vwwwwwwwwwwwwwwwwwwwwwwwwYYyyyyyyyYYYYwwwwwwwwwwcwcwcCCCCv
vwwvvvvvvvwwwwwYYYYYYYYYYYyy.....yyyyYYYYwwwwwwwvvvvvvvCCv
vwwnd.v..vYYYYYYyyyyyyyyyyy........yyyyyYYYYYYYYv..v.dnCCv
vwwn.22..vyyyyyyy......................yyyyyyyyyv...22nCCv
vwwvv222.+......................................+.222vvCCv
vwwn..2..v...........xx.........................v..2..nCCv
vwwnd.v..vx..11111.xxxxx.......xx...............v..v.dnCCv
vwwvvvvvvvxxxx111xxxxxx...xx..xxxxx.11111xxx..xxvvvvvvvCCv
vwwvxxxxxxxxxxxxxxxxx<..xxxxx..xxxxxx111xxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxx..AxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vwwvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvCCv
vvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvv
ENDMAP

NAME:    kennysheep_pipe_town
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
MONS:    kobold / kobold brigand w:2
MONS:    bat / rat / endoplasm w:5 / ball python / frilled lizard w:5 /\
         dart slug w:5 / adder w:1
MONS:    adder / brain worm w:2
KMONS:   . = plant w:1 / fungus w:1 / nothing w:80
KMONS:   p = plant
: item(dgn.loot_potions .. " / any scroll w:30 / any armour / any weapon")
KFEAT:   f = cache_of_meat
KFEAT:   p = shallow_water
SUBST:   p = ppW
SHUFFLE: DEFH
NSUBST:  D = 9 = 1! / 3:d / 1:d! / *:!
NSUBST:  F = 9 = 1! / 3:d / 1:d! / *:!
NSUBST:  E = 4 = 1! / 3 = d! / *:!
NSUBST:  H = 4 = 1! / 3 = d! / *:!
NSUBST:  . = 7:2 / 4 = 2.. / 2 = 32.. / *:., ! = 2 = f.. / *:.
COLOUR:  p = lightgreen
: sewer_setup(_G)
MAP
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxx..xxxx...xxxx..xxxxxxxxxxxxxxxxxxx
    xxxxxxx.........xx..........x...xxxxxxxxxxxxxxx
    xxxxxxx.....................x...xxxxxxxxxxxxxxx
    cccccc...........................xx......cccccc
    cDDDDc...................................cFFFFc
    cDDDD+......p.............pWpW.......W.pW+FFFFc
    cD<DD+.....WWWW..WWp..WWpWWWWWpWWW...WWWW+FF<Fc
    cDDDDc....pWpWWpWWp...pWWWpWWWWpWp...pWpWcFFFFc
cccccccccccccccccWWWccccccccccWWWWccccccccccWcccccc
cwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWc
cwwWwwwwwWwwwwwWwwwwwWwwwwwWwwwwwWwwwwwWwwwwwWwc
cwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWc
ccc+ccccccccWWccccccccccccWcWcccccccWcccccccccccccc
c!!!cEEEEc.pWWpW........pWWpWWp..pWpWWpWp.WWWcHHHHc
c!A!cE<EE+..WpWW.........WWWpW...WWWWWW....WW+HH<Hc
c!<!cEEEE+................p.W.......WWp...WW.+HHHHc
cccccEEEEc...................................cHHHHc
ccccccccccxx................................xcccccc
xxxxxxxxxxxx.xx.....xxxx....................xxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx.................xxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx............xxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxx.xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

# If we're going to only rarely deploy warded pets across a moat,
# we might as well lean into a certain reputation of trap-master jerks.
NAME:    regret_index_sewer_gulch_wild_fort
TAGS:    no_monster_gen no_item_gen no_pool_fixup
ORIENT:  encompass
MONS:    dart slug, ribbon worm, clockroach
MONS:    brain worm, kobold, kobold brigand
KMONS:   P = pile of debris
: item(dgn.loot_potions)
: item(dgn.loot_scrolls)
ITEM:    any scroll / any potion, flux bauble
ITEM:    stone q:1 no_pickup / stone q:2 no_pickup
KITEM:   $ = $ no_pickup
KFEAT:   M = cache_of_meat / cache_of_baked_goods w:3
KFEAT:   Y = W
KFEAT:   y = w
SUBST:   0 = 1111223, 6 = 556, Z = xxvw.., z = xxWw...
SHUFFLE: BCDEF
# Higher average count of loot (but not a higher cap), in exchange for the pain.
NSUBST:  B = 1:def / 1:$ / 3:1 / 1:2 / 1:3 / 3 = 1123... / *:.
NSUBST:  C = 1:d / 2 = f$ / 4:5 / 2 = 5. / *:.
NSUBST:  D = 1:def$$ / 2:3 / 2:5 / 1:35. / *:.
NSUBST:  E = 2:f / 2:$ / 3 = 123.. / 1:4 / 1:M / *:.
NSUBST:  F = 1:d / 1:e / 1:g / 1:4 / 2:5 / 2 = 5. / 1:6 / 1:M / *:.
KPROP:   yY = no_tele_into
: sewer_setup(_G)
MAP
     vxxxxx                   xxxxxv
     xWBBBvx                 xvDDDWx
     xWBBBBx                 xDDDDWx
     xWBBBBx  xvvvvvvvvvvvx  xDDDDWx
     vxxBBxvvvv...vYyyv...vvvvxDDxxv
       vx+vW....v.vyYYv.v....Wv+xv
       xvWw.Z.....vYyYv.....Z.wWvx
      xvW.Z.....v.vYYyv.v.....Z.Wvx
  vxv v...........vyyYv...........v vxv
vxxCxxv..Z.Z....v.vnnnv.v....Z.Z..vxxExxv
xWCCCvW...........+.n.+...........WvEEEWx
xWCCC+w.Z.Z.......v.<.v.......Z.Z.w+EEEWx
xWCCCvW...........+.n.+...........WvEEEWx
vxxCxxv..Z.Z....v.vnnnv.v....Z.Z..vxxExxv
  vxv v...........vyyYv...........v vxv
      xvW.Z.....v.vYYyv.v.....Z.Wvx
       xvWw.Z.....vYyYv.....Z.wWvx
       vx+vW....v.vyYYv.v....Wv+xv
     vxx..xvvvv...vYyyv...vvvvxFFxxv
     xW.hh.xwWxn+nvnnnvn+nxWwxFFFFWx
     xW.hh.xwwWW3W+W3W+W3WWwwxFFFFWx
     xW...vPwwwwwwvwwwvwwwwwwxvFFFWx
     vxxxxPw.5......W........wxxxxxv
        xww.6.1x...zxz....x...wwx
        xwx5.1x...WWWWW....x..xwx
        xxxxxxxxxxxxxxxxxxxxxx.xx
       xx<.xWW.00xWW....x0.0x...xx
       xw..xxxWz0xxxWz..x0w0x.z.wx
       xw....WW....WW...xWxWx...wx
       xw...zWxxx.zWxxx.w.x.w.z.wx
       xxA....WWx...WWx...x....<xx
        xxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

### FROGS ##################################################################
# Giant frogs, specifically.

############################################################################
# Two fairly watery vaults with (usually) two bullfrogs in the end.
# Loot are good items, and often good scrolls or a scroll of blinking.
#
NAME:     sewer_frog_island_01
TAGS:     no_item_gen no_monster_gen no_pool_fixup
ORIENT:   encompass
SUBST:    - = WWW.
SHUFFLE:  |de
: item(dgn.loot_scrolls)
ITEM:     scroll of blinking pre_id
MONS:     frilled lizard / ball python / endoplasm w:15 / \
          dart slug / adder w:8
KMONS:    ? = dart slug
KMONS:    ! = bullfrog
KFEAT:    ? = W
KFEAT:    ! = w
NSUBST:   . = 72 = 1.. / 8:1 / *:.
NSUBST:   ! = 1:! / 1:!!!!w / *:w
COLOUR:   ? = lightgreen
COLOUR:   ! = green
SUBST:    ~ = .
: sewer_setup(_G)
MAP
ccccccccccccccccccccccccccccccccccc
c...---------.....................c
c.WWW-ccccccccccccccccccccccc.WWW.c
c.WwWWccccccccccccccccccccccc.WwW.c
c.WwwWccccccccccccccccccccccc.WwW.c
c.WwW.ccccccccccccccccccccccc.WwW-c
c.WwwWccccccc!!!!!!cccccccccc-WwW-c
c.Wwwwccccwwwwwwwww!!!ccccccc-WwW-c
c-Wwwwccwww?wwwwwwwwww!cccccc-WwW-c
c-WwwwcwwWW<-wwwwwwwwww!ccccc-WwW-c
c-Wwwwwwww-..-ww.--wwwww!cccc-WwW-c
c-WwWwwWww---.-e*.--wwwwwcccc-WwW-c
c-WwWWWwWww-.--***.wwwwwwcccc-WwW.c
c-WwWWwwwWww.---d-wwwwwwwcccc-WwW.c
c-WwWWWwwwW------wwwwwwwwcccc.WwW.c
c-WwWWWwwww?---wwwwww?wwccccc.WwW.c
c-WwW.WwwwwwwwwwwwwwWwwwccccc-WwW.c
c.WwW.WwwwwwWWwwwwwwwWccccccc-WwW-c
c.Ww??..WWWWwwWwWW.........---Www-c
c.Www?WWWwwwWWwWWWWWWWWWWWWWWWWwW-c
c.WWwwwwwwwwwwwwwwwwwwwwwwwwwwwwW.c
c..WWWWWWWWWWWWWWWWWWWWWWWWWWWWwW-c
cc........................----WwW-c
 cccccccccccccccccccccccccccc-WwW-c
                     cccccccc-WwW-c
              cccccccc~----WWWWwW.ccccxxx
              c~<~A~~--W-WWWWWWwwwwwwwwwx
              cccccccc~-~~WW-.WWW.cccccxx
                     cccccccc.....c
                            ccccccc
ENDMAP

NAME:     sewer_frog_island_02
TAGS:     no_item_gen no_monster_gen no_pool_fixup
ORIENT:   encompass
SUBST:    - = WWWW.
KMONS:    1 = frilled lizard / ball python / clockroach / \
              dart slug / endoplasm / adder w:4
KMONS:    2 = jelly
KMONS:    ! = bullfrog
: item(dgn.loot_scrolls)
ITEM:     scroll of blinking pre_id
KFEAT:    12W = W
KFEAT:    ! = w
NSUBST:   W = 175 = 1WWW / 1:2 / *:W
NSUBST:   ! = 1:! / 1:!!!!. / *:w
COLOUR:   12! = green
SHUFFLE:  ed|
: sewer_setup(_G)
MAP
           ccccccccccccc
        cccc-----------cccc
     cccc-----------------cccc
    cc-------ccccccccc-------cc
   cc-----cccc-------cccc-----cc
  cc----ccc-------------ccc----cc
  c----cc-----ccccccc-----cc----c
 cc---cc----ccc!!!!!ccc----cc---cc
 c----c----cc!w---ww!!cc----c----c
cc---cc---ccw--..---ww!cc---cc---c
c.---c----cw--.***.---w!c----c---c
c<.--c----c--.e*d.-----!c----c---c
c.---c----c----$------w!c----c---c
cc---cc---c---.------w!cc---cc---c
 c----c---c--.------w!cc----c----c
 cc---cc--cc--c---wwccc----cc---cc
  c----cc--c--ccccccc-----cc----c
  cc----c--cc-..--------ccc----cc
   cc-------c..------cccc-----cc
    cccc---ccccccc-<-c-------cc
       cc--c-----ccccc----ccccc
        cccc-----------cccc--<c
           c---ccccccccc-...-cc
           c-----------..A.ccc
           c----------.ccccc
           ccccccccccccc
ENDMAP

############################################################################
# Sewer in the shape of the letter W. Sort of. Frogs at the end.
#
# Harder than the two other frog maps. Frogs are guaranteed, and neither
# exit nor chokepoints are reachable when one sees them.
#
# XXX: An outlier in size, openness, and minimal land as a map.
NAME:    sewer_minmay_w
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
SHUFFLE: de
MONS:    rat / river rat w:2
MONS:    ball python / adder w:5 / frilled lizard w:2 / endoplasm w:1
MONS:    bullfrog
: item(dgn.loot_potions)
: item(dgn.loot_scrolls)
ITEM:    any scroll / any potion
SUBST:   y : yyyyyyW., Y : YYYYYYWw, z = x., Z = wwwxx
SUBST:   y = W., Y = Ww, c = c x:1
NSUBST:  d = 2:d / * = d..., e = 2:e / * = e...
NSUBST:  - = 74 = 1... / *:.
SUBST:   2 = 2.
: sewer_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxcccccxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxcccccc2-2ccccccxxxxxxxxxxxxxxxx
xccccccxxxxxxxxcc2--22---22--2ccxxxcccccccccccx
cc....ccxxxxxxcc---------------ccxxcdedcc32.3cc
c......cxxxxxxc-------c---------cxxce<e+2..222c
c..<A..cxxxxxcc------cc+cc------ccxcdedc2...22c
c......cxxxxxc------cccffcc------cxccccc222..2c
czyyyyzcxxxxxczyyyyzcxcddcczyyyyzcxxxxxczyyyyzc
cYYWYYYcxxxxxcYYWYYYcxcccccYYYYWYcxxxxxcYYZWYYc
cwYWYYwcxxxxxcwYWYwwcxxxxxcwwwYWYcxxxxxcYYWYwYc
cwYYWYwcxxxxxcwYWYYwcxxxxxcwwYYWYcxxxxxcwYWYYwc
cwwYWYwcxxxxxcwwYWYwcxxxxxcwYYWYYcxxxxxcwYWWYwc
cwwYWYwcxxxxxcwwYWZYcxxxxxcYWWYYwcxxxxxcwYYWZYc
cwYZWYwcxxxxxcwwYZWYcxxxxxcWYYYwwcxxxxxcwwYZWYc
cwYWZYwcxxxxxcwwwYWYcxxxxxcWWYYwwcxxxxxcwwwY.Yc
cw.WYwwcxxxxxcwwwYYWcxxxxxcZyyyyZcxxxxxcwwwY.Yc
cwYWZYwcxxxxxcwwwZY.cxxxxxcyy%%ywcxxxxxcwwYZWYc
cwYZW.wcxxxxxcwwwYYWcxxxxxcZyyyyZcxxxxxcwwYWZYc
cwwYWYwcxxxxxcwwwYWYcxxxxxcwwYYWWcxxxxxcwYYWYwc
cwwYWYwcxxxxxcwwYZWYcxxxxxcwwwYYWcxxxxxcwYWWYwc
cwwYWYwcxxxxxcwwYWZYcxxxxxcwYYWWYcxxxxxcwYWYYwc
cwwYWYwcxxxxxcwYYWYwcxxxxxcwYWYYwcxxxxxcwYWYwYc
cYYYWYYcxxxxxcwYWYwwcxxxxxcYYWYYYcxcccccYYWYYYc
czyyyyzcxxxxxczyyyyzcxxxxxczyyyyzcxceecczyyyyzc
c------ccxxxcc------cxxxxxc2-----cccffcc-----2c
cc------ccxcc------ccxxxxxcc------cc+cc2-----cc
xc-------ccc-------cxxxxxxxc-------c2--------cx
xcc------2-2------ccxxxxxxxcc2-------------2ccx
xxcccc---------ccccxxxxxxxxxcccc-2------2ccccxx
xxxxxcccc2-2ccccxxxxxxxxxxxxxxxcccc2-2ccccxxxxx
xxxxxxxxcccccxxxxxxxxxxxxxxxxxxxxxcccccxxxxxxxx
ENDMAP

NAME:   sewer_hellmonk_circle_the_drain
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
MONS:   bullfrog
MONS:   ribbon worm w:5 / ball python / endoplasm / clockroach w:5 / \
        river rat w:5 / dart slug
KMONS:  3 = brain worm / adder
KFEAT:  3 = shallow_water
ITEM:   any scroll
: item(dgn.loot_potions)
NSUBST: d = 1:1 / * = de, f = 1:1 / * = de
NSUBST: W = 4:2 / *:W, 2 = 2:2 / * = 2W
SUBST:  - = WWWW.
NSUBST: . = 10:2 / 12 = 2. / *:.
SUBST:  " = W., ~ = WW.
COLOUR: 3 = lightgreen
: sewer_setup(_G)
MAP
           ccccccccccc
       cccccdddWWWWWWccccc
     ccc---cdddWWWWWWWW-3ccc
   ccc--...ccccccccccWW3---ccc
  cc--.....3--------cccww..--cc
 cc-...-----------..--cccw...wcc
 c-...-cccccccccccc...--ccw...wc
cc-..-cc--~~~""""~ccc...-ccw..wcc
c-..-cc-..~c~""""""~cc...-cc-..wc
c-..-c-...cc""""""""~cc...-c-..wc
c2..-c-...c~"""<"A"""~c...-c-..2c
cw..-c-...cc~""""""""cc...-c-..-c
cw..-cc-...cc~""""""~c~..-cc-..-c
ccw..wcc-...ccc~""""~~~--cc-..-cc
 cw...wcc--...cccccccccccc-...-c
 ccw...wccc--..-----------...-cc
  cc--..wwccc--------3.....--cc
   ccc---3WWcccccccccc...--ccc
     ccc3-WWWWWWWWfffc---ccc
       cccccWWWWWWfffccccc
           ccccccccccc
ENDMAP

## BIG BADDIE (Pargi) ######################################################
# Threat is mostly a single larger creature, often Pargi. Combined weight 40.

NAME:     sewer_big_baddie
TAGS:     no_item_gen no_monster_gen no_pool_fixup
ORIENT:   encompass
: sewer_setup(_G)
MONS:     bat, brain worm, patrolling rock fish band
KMONS:    4 = Pargi / crocodile, crocodile
ITEM:     potion of berserk rage pre_id / potion of haste pre_id w:5
SUBST:    - = 1....
MAP
 ccccccc
cc$***$cc
c..$*$..c
c.......c
c...4...c
c.......c
c.......c
cc.....cc
 ccc.ccc     ccccccc
   cdc      cc---..cc
   c.c     cc---w...cc
cccc.ccccccc---www...cc
c23........---wwwww.A<c
cccc.ccccccc---www...cc
   c.c     cc---w...cc
   c-c      cc---..cc
   c-c       ccccccc
   c-c
   c-c
   c<c
   ccc
ENDMAP

###############################################################################
# Another one with a big bad monster.
#
NAME:   sewer_the_crocodile
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
SUBST:  - = WW...
MONS:   kobold, jackal
KMONS:  3 = Pargi / crocodile w:20, crocodile
: item(dgn.loot_potions .. " / " .. dgn.loot_scrolls .. " / nothing w:300")
ITEM:   skeleton
NSUBST: ! = 3:2 / 4 = 2.. / *:., 1 = 2:1 / * = 1... / *:.
: sewer_setup(_G)
MAP
   ccccccccc
   c%*c3c*%c
   c*-cec-*c
   ccc---ccc
    cc---cc
    c-----c
   cc2---2cc
   ce.-c-.ec
  cc.-ccc-.cc
  c.--ccc--.c
  c--ccccc--c
  c.-ccccc-.c
  c.-ccccc-.c
  c--ccccc--c
  c.--ccc--.c
  cc--ccc--cc
   c.--c--.c
   cc-----cc
    c..-..c
    cc---cc
     c.-.c
     cc-cc
     cc-cc
   cccc-cccc
cccc..---..ccccc
cWWWWWWWWWWWWWWc
cccc...c...ccccc
  ccc..c....cccxxxx
  c....c!!!!!1cdddx
  c.A<.c!!!!!11dddx
  c....c!!!!!1cxxxx
  ccccccccccccc
ENDMAP

############################################################################
# Pargi island. by co
# Pargi lives on this island, he appears in one of three places, if he is
# outside the loot room, you can get the loot without fighting him
# (if you are sneaky enough). Not much to walk on here, if you manage to
# confuse Purge he will probably drown.
#
NAME:    sewer_co_pargi_island
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
# Shuffle around Pargi or his back-up.
SHUFFLE: PQR
KMONS:   P = Pargi, crocodile
#      lesser monsters.
KMONS:   1 = brain worm
KMONS:   2 = frilled lizard w:8 / ball python w:8 / adder w:2
KMONS:   F = patrolling rock fish
: kitem("? = " .. dgn.loot_potions)
: kitem("! = " .. dgn.loot_scrolls)
KFEAT:   1 = W
KFEAT:   2 = w
KFEAT:   F = x
SUBST:   QR = .
NSUBST:  2 = 2:2 / 1:w / * = 2w, F = 2:F / 1:Fx / *:x
NSUBST:  . = 1:1 / 1 = 1. / * = .WW
SUBST:   e = !!!!????%, X = xx., Y = xw
COLOUR:  1 = lightgreen
COLOUR:  2 = green
: sewer_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxYYxxxYYYxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxYwwYYwwwwwYYwwxxxxxxxxxxxxxxxx
xxxxxxxxxxYwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxx
xxxxxxxxxxYwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxx
xxxxxxxxYYwwwwwwwww2wwwwwwwwwwYxxxxxxxxxxxx
xxxxxxxYwwwwwwwwwwwwwwwwwww2wwwYxxxxxxxxxxx
xxxxxxYwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxx
xxxxxxwwwww2wwwww....wwwwwwwwwwwwYxxxxxxxxx
xxxxxYwwwwwwwww..XXXX..wwwwwwwwwwwYxxxxxxxx
xxxxxwww2wwwww.XXFxxxXXQ.wwwwwww2wwwYxxxxxx
xxxxYwwwwwww...XxxxxxxxxX..wwwwwwwwwwxxxxxx
xxxxYwwwwww.XXXxxxxxxxxxxxX..wwwwwwwwYxxxxx
xxxYwwwwww.XFxxxxxxxxxxxxxxxX.www2wwwwYxxxx
xxxYwwwww.XxxxxxxxxxxxxxxxxxFX.wwwwwwwwYxxx
xxxxYwwww.XxxxxxxxxxxxxxxxxxxX.wwwwwwwwYxxx
xxxxYwwwww.XxxxxxxxcccccxxxxxX.wwwwwwwYxxxx
xxxYwwwwww.Xxxxxxxxceeeccccccc.wwwwwwwYxxxx
xxxYwwwwwww.Xxxxxxxce<....P...wwwwwwwwYxxxx
xxYwwwwwwwwwAXxxxxxceeeccccccc.wwww2wwYxxxx
xxYwwww2wwww<XxxxxxcccccxxxxxX.wwwwwwwYxxxx
xxxYwwwwwww.XxxxxxxxxxxxxxxxxxX.wwwwwwYxxxx
xxxxwwwwww.XxxxxxxxxxxxxxxxxxxX.wwwwwwYxxxx
xxxxYwwwwww.XXFxxxxxxxxxxxxxFX.wwwwwwwwYxxx
xxxYwwwwwwww..XxxxxxxxxxxxxxX.wwwwwwwwYxxxx
xxxYwwwwwwww..XXxxxxxxxxxxXXX.wwwwwwwwYxxxx
xxxxwwwwwwwwww..XxxxxxxxxX...wwwww2wwwwYxxx
xxxxYwwww2wwwwww.XxxxxxXX.wwwwwwwwwwwwwYxxx
xxxxxwwwwwwwwwww.XxxxFXR.wwwwwwwwwwwwwYxxxx
xxxxYwwwwwwwwwwww.XXXX.wwwwwww2wwwwwYYxxxxx
xxxxxYwwwwwwwwwwww....wwwwwwwwwwwwwYxxxxxxx
xxxxxxYwwwww2wwwwwwwwwwwwwwwwwwwwwYxxxxxxxx
xxxxxxYwwwwwwwwwwwwwwwwww2wwwwwwwYxxxxxxxxx
xxxxxxYwwwwwwwwww2wwwwwwwwwwwwwYYxxxxxxxxxx
xxxxxxxYwwwwwwwwwwwwwwwwwwwwwwYxxxxxxxxxxxx
xxxxxxxYwwwwwwwwwwwwwwwwwwwwwYxxxxxxxxxxxxx
xxxxxxxxYxYwwwwwwYYwwwwwwwYYwYxxxxxxxxxxxxx
xxxxxxxxxxxxYYYYxxxYYYxYYYxxYYxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   kennysheep_door_sewer
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
MONS:   kobold w:40 / frilled lizard / clockroach / adder w:5
MONS:   kobold brigand / brain worm w:20 / jelly
KMONS:  3 = Pargi, crocodile
: item(dgn.loot_potions .. " / " .. dgn.loot_scrolls .. " / any armour")
KFEAT:  - = broken_door
KFEAT:  ' = deep_water
KFEAT:  " = shallow_water
SUBST:  n : ncc.
NSUBST: e = 4:* / 6=d.. / *:., + = 2:- / 2 = +- / *:+
NSUBST: 0 = 1:1 / 8 = 1. / 2:2 / 1:3 / *:., . = 1:1 / *:.
COLOUR: ' = green
COLOUR: " = lightgreen
KPROP:  "' = no_tele_into
: sewer_setup(_G)
MAP
        ccccccccccccccccccccc
        cecceccecceccecceccec
        c0nn0cc0cc0cc0cc0cc0c
        c+cc+cc+cc+cc+cc+cc+c
ccccccccc...................ccccccccc
c"""""""nWWWWWWWWW.WWWWWWWWWn"""""""c
c'''''''nwwwwwwwwwAwwwwwwwwwn'''''''c
c"""""""nWWWWWWWWW.WWWWWWWWWn"""""""c
ccccccccc...................ccccccccc
        c+cc+cc+cc.cc+cc+cc+c
        c0cc0cc0cc.cc0cc0nn0c
        cecceccecc<ccecceccec
        ccccccccccccccccccccc
ENDMAP

###############################################################################
# This one places a hell rat. It also gives the player a door with which to
# avoid the hell rat. Seven items, many of which are random potion/scroll.
#

NAME:   sewer_hellmonk_bad_rat
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
MONS:   rat, river rat
KMONS:  3 = hell rat
ITEM:   any potion / any scroll
: item(dgn.loot_potions)
: item(dgn.loot_scrolls)
ITEM:   ratskin_cloak
KFEAT:  3 = shallow_water
NSUBST: - = 20 = 1... / 8 = 2... / *:.
SUBST:  . = WWW..
NSUBST: d = 1 = d:49 g:1 / *:d
SUBST:  d = ddddef*
COLOUR: 3 = lightgreen
: sewer_setup(_G)
MAP
    xxxxxxx
  xxxx---xxxx
  xx-------xx
 xxx-------xxx
 xx---ccc---xx
xxx..cc.cc--xxx
xx...c...c---xx
xx..ccd.Wcc--xx
xx..cddWW.c--xx
xxA<c<d3WW+--xx
xx..cddWW.c--xx
xx..ccd.Wcc--xx
xx...c...c---xx
xxx..cc.cc--xxx
 xx---ccc---xx
 xxx-------xxx
  xx-------xx
  xxxx---xxxx
    xxxxxxx
ENDMAP

### OTHER #####################################################################
# Other sorts of Sewer maps

###############################################################################
# No longer requires crossing deep water to reach the center, but still provides
# flight potions for later use.
#
NAME:    sewer_fruit_machine
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
KMONS:   " = bat
KMONS:   ? = dart slug / frilled lizard / ball python w:25 / \
             quokka / endoplasm w:4 / ribbon worm w:4 / adder w:2
MONS:    ribbon worm w:2 / ball python / jackal / adder w:5 / river rat w:5
MONS:    adder, river rat, brain worm
ITEM:    any scroll, potion of enlightenment pre_id
: item(dgn.aux_armour)
: item(dgn.loot_potions)
: item(dgn.loot_scrolls)
KFEAT:   " = w
KFEAT:   ? = W
SHUFFLE: QED$
NSUBST:  Q = 1:442 / 2 = 2.. / * = ., E = 3 = 3355. / * = .
SUBST:   D : fgh, - = WW.
NSUBST:  e = 2:e / *:$, f = 1:f / *:', g = 2:g / *:', h = 2:h / *:'
NSUBST:  w = 14 = "w / *:w, W = 42 = ?WWW / *:W, ! = 32 = 1... / *:.
COLOUR:  " = green
COLOUR:  ? = lightgreen
: sewer_setup(_G)
KITEM:   ' = scroll of noise pre_id w:50 / \
             potion of moonshine pre_id w:100 / \
             potion of mutation pre_id w:30
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xwwwwwwwwwwwWWW-WW-W--WWWWW-WWW--W--WW-WW-WW-W-WWwwwwwwwwwwwx
xwwwwwwwwwww-wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww-wwwwwwwwwwwx
xwwwwwwwwwwwWwWW----WWWWWWWW-W-WWW-W-WW-WW-W-WWwWwwwwwwwwwwwx
xxxxxxxxxxxxWwWxxxxxxxxxxxxxxxxxxxxxxxWwWxxxxxWwWxxxxxxxxxxxx
           xWwWxxxxxxxxxxxxxxxxxxxxxxxWwWxxxxxWwWxxxxxxxx!!.xx
           x-wWxxxxQQQQxxxDDDDxxxxxxxxWwWxxxxx-wWxxxx!xx!!...xx
           xWwWxxxxx++xxxxx++xxxxxxxxx-wWxxxxxWwW--W-!!.......x
           x-WWW-W..............<xxxxxWw-xxxxxWwWWW-!!........x
           x-WWWW--.............<xxxxxWwWxxxxxWwWW-!xxxx.....Ax
           xWwWxxxxx++xxxxx++xxxxxxxxxWwWxxxxx-wWxxxxxxxxx.<xxx
           x-wWxxxxEEEExxx$$$$xxxxxxxx-w-xxxxxWw--xxxxxxxxxxx
   xxxxxxx x-wWxxxxxxxxxxxxxxxxxxxxxxxWwWxxxxxWw-xxxxxxxxxxxx
 xxx!d!!dxxxWwWxxxxxxxxxxxxxxxxxxxxxxxWwWxxxxx-wWxxxxxxxxx!exx
xx!!!!!d!dxxWwWWWWWW---WW-W-WW-W-WWWW--wWxxxxxWwWxxxxxxxx-!!ex
x!!!!!!dxxxx-w-wwwwwwwwwwwwwwwwwwwwwww-w-xxxxxWwWWWWWWWW---!!ex
xx!!!!xxxxxxWwWW-W-WWW-W-W-WWWWW-WWWWWWw-xxxxxWw-wwwwwwww---!!x
 x!-!!!-xxxx-w-xxxxxxxxxxxxxxxxxxxxxxxWwWxxxxx-wWWWWWWW-----!!x
 xxx------xxWwWxxxxxxxxxxxxxxxxxxxxxxxWwWxxxxxWwWxxxxxxxxx-!exx
xxxxxx------WwWxxxxxxxxxxxxxxxxxxxxxxxWwWxxxxxWwWxxxxxxxxxxxxx
xwwwwww--WWwwwWWWW-W-W-W-W-WWWW-W-W-W-W-WW---WWwwwwwwwwwwwwwx
xwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwx
xwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

###############################################################################
# A sewer opening to sea by st_.
#
NAME:    sewer_sea
TAGS:    no_item_gen no_monster_gen no_rotate no_pool_fixup
ORIENT:  encompass
WEIGHT:  5
MONS:    rat, river rat w:4
KMONS:   G = sickly merfolk siren
KMONS:   H = malarious merfolk avatar
KMONS:   hJ = frilled lizard / ball python / adder
KMONS:   g = frilled lizard / ball python / dart slug / quokka
KMONS:   K = crocodile
KFEAT:   gsh = W
KFEAT:   GnHJ = w
KFEAT:   O = open_sea
SHUFFLE: 12 / 34 / 34
NSUBST:  1 = 2:1 / 1:. / * = 1.,2 = 2:2 / * = 1 2:5 .:15
NSUBST:  3 = 2:. / * = 1., 4 = 1:K / 2:. / * = 1 2:4 .:14
SUBST:   J = Jn, h = hW, g = gggW
COLOUR:  gh = lightgreen
COLOUR:  HJ = blue
COLOUR:  G = green
COLOUR:  s = cyan
KITEM:   M = potion of enlightenment q:3 pre_id
KITEM:   N = scroll of teleportation q:2 pre_id
: sewer_setup(_G)
MAP
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                        cccc       cccccccc
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO                       ccW.cc      cWW1.21c
OOOnnnnnnnnnnnnnnnnnnnOOOOOOOOOOOOOO                     cccWWW.ccccccccW..c..c
OOOnnnnnnnnnJnnnJnnnnnOOOOOOOOOOOOOO                     c<AWWWW...12....1.cc.c
OOOnnnnnnnnnnnnnnnnnnnOOOOOOOOOOOOOO                     cccccccccccccccccccc.c
OOOnnnJnnnnnJnnnscccccccccccccccccccccccccccccccc ccccccccccwhwwwwwwwWwwwww2.1c
OOOnnnnnnnnnnnns1+.....+...%Wwcccc1....1cc$$$.1McccwwWWWgWWhWWWWW..W..WW.Www2.c
OOOnnnnnnnnHnnsW.ccccccc...%*Wcccc2ccccc.c.1.W.NcccwWWccccccccccccc11cccc.gwWwcc
OOOnnnnnJnnnnnsW.ccc.1cc...%*Wcccc2cwwcc.ccccWcccwwwc.c           cccc  cc1.WWwc
OOOnnnnnnnnnJnsW1ccc.1cc...*WWccccwWgcwc.cGwwWWWWWWcc1c                  ccccccc
OOOnnnnnnnnnnssWWccc1.cc<..WwccccwgWccwc.chwgWW..1...1c
OOOnnnnnnnnsssWWhWWc.1ccccccccwwwhW.1cwWWcWWW..2ccccccc
OOOnnnnnnnsssWWWWWWWWsswwwwwwwcWh..1ccccWWgW1.2cc
OOOnnnnnnnnssshWWWWc.2cccccccccW.1.cc  cch11.ccc
OOOnnnnnnnnnnssWgccc12ccccwg22.11ccc    cccccc
OOOnnnnnnnnnnnssWcccc1ccccgWcccccc
OOOnnnnnnnnnnnnsccccc.1ccc.1c
OOOnnnnnnnnnnnnnsccccc1.11.cc
OOOnnnnnnnnnnnnnnnnnnccccccc
OOOnnnnnnnnnnnnnnnnnnnOOOOOOOOOOOOOO
OOOnnnnnnnnnnnnnnnnnnnOOOOOOOOOOOOOO
OOOnnnnnnnnnnnnnnnnnnnOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
ENDMAP

############################################################################
# 15 rooms, by co
# All rooms will always be accessible, though the room in the center requires
# finding the one guaranteed identified enlightenment potion elsewhere.
#
NAME:    sewer_co_15_rooms
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
MONS:    kobold / w:7 kobold brigand
MONS:    kobold / adder / ball python / w:7 ribbon worm / w:7 endoplasm / \
         rat / river rat w:5
MONS:    crocodile
SUBST:   . = W.., X = xx.
SUBST:   1 = 1., 2 = 222..
#      generate path to center
SHUFFLE: BC/DE/GF/IH
SUBST:   B = w, C = W
SUBST:   DGI = c, EFH = x
#      generate path to the first cave.
SHUFFLE: JK/LM
SUBST:   JK = .
SUBST:   M = x, L = c
#      generate path to the second cave.
SHUFFLE: PN/QR
SUBST:   PN = .
SUBST:   Q = x, R = c
#      generate a paths between the big rooms.
SHUFFLE: yZzSsUuTgY
SUBST:   y = w
SUBST:   hVZzSsUuTgY = W
#      loot
ITEM:    potion of enlightenment pre_id
KITEM:   - = any potion / any scroll
NSUBST:  d = 1:d / *:-
SUBST:   - = !!???-----
: kitem("? = " .. dgn.loot_potions)
: kitem("! =  " .. dgn.loot_scrolls)
: sewer_setup(_G)
MAP
xxxxxxxxxxxxcccxxxxxxxcccxxxxxxxxxxxx
xxxxxxxxxxxcccccxxxxxcccccxxxxxxxxxxx
xxxxxxxxxxcc.1.ccxxxcc...ccxxxxXXXxxx
xxxxxxxxxxc.2...ccccc...2.cxxxx.11Xxx
xxxxxxxxxxc..2..yyyyy..2..NPPP.d.1Xxx
xxxxxxxxxxc...2.ccccc.2...cxxxX.d.Xxx
xxxxxxxxxxcc...ccxxxcc...ccxxxxX.xxxx
xxxxxxxxxxxccZccxxxxxcczccxxxxxxQxxxx
xxxxxxxxxxxxcZcxxxxxxxczcxxxxxxxQxxxx
xxxxxxxxxxxxcZcxxxxxxxczcxxxxxxxQxxxx
xxcccccxxxxccZccxxxxxcczccxxxxccRccxx
xcc...ccxxcc...ccxxxcc...ccxxcc...ccx
cc.2...cccc.A...ccccc.d...cccc...2.cc
cc..2..SSSS..<.WwwwwwW....ssss..2..cc
cc...2.cccc.....ccBcc...d.cccc.2...cc
xcc...ccxxcc.W.ccxCxcc.W.ccxxcc...ccx
xxccUccxxxxccwccxx.xxccwccxxxxccuccxx
xxxcUcxxxxxxcwcxx.-1xxcwcxxxxxxcucxxx
xxxcUcxxxxxxcwDE.-<-.FGwcxxxxxxcucxxx
xxxcUcxxxxxxcwcxx1-3xxcwcxxxxxxcucxxx
xxccUccxxxxccwccxx.xxccwccxxxxccuccxx
xcc...ccxxcc.W.ccxHxcc.W.ccxxcc...ccx
cc...2.cccc.d...ccIcc.....cccc.2...cc
cc..2..TTTT....WwwwwwW.<..gggg..2..cc
cc.2...cccc...d.ccccc.....cccc...2.cc
xcc...ccxxcc...ccxxxcc...ccxxcc...ccx
xxccJccxxxxccVccxxxxxcchccxxxxcccccxx
xxxxKxxxxxxxcVcxxxxxxxchcxxxxxxxxxxxx
xxxxKxxxxxxxcVcxxxxxxxchcxxxxxxxxxxxx
xxxxKxxxxxxccVccxxxxxcchccxxxxxxxxxxx
xxxx.Xxxxxcc...ccxxxcc...ccxxxxxxxxxx
xxX.d.Xxxxc...2.ccccc.2...cxxxxxxxxxx
xxX1.d.MMML..2..YYYYY..2..cxxxxxxxxxx
xxX11.xxxxc.2...ccccc...2.cxxxxxxxxxx
xxxXXXxxxxcc...ccxxxcc.1.ccxxxxxxxxxx
xxxxxxxxxxxcccccxxxxxcccccxxxxxxxxxxx
xxxxxxxxxxxxcccxxxxxxxcccxxxxxxxxxxxx
ENDMAP

############################################################################
# Tree sewer. by co
# This sewer is structured as a tree, in the sense that there are no loops.
# At each endpoint there's monsters and loot.
# At least you won't go in circles...
#
NAME:   sewer_co_tree
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
KMONS:  1 = kobold / kobold brigand
KMONS:  2 = adder / ball python / ribbon worm / brain worm w:1
KMONS:  3 = endoplasm / rat / river rat w:5
KITEM:  1 = $ no_pickup
KITEM:  2 = $ q:1 no_pickup
KITEM:  3 = stone
: kitem("e = " .. dgn.loot_potions)
: kitem("f =  " .. dgn.loot_scrolls)
# less water in the middle, more at the endpoints.
SUBST:  ~ = WWWW., - = WW..., " = W...
NSUBST: ? = 4 = ef / 1:2 / 2:3 / * = 112233
: sewer_setup(_G)
MAP
xxxxxxxxxxxxxxcccccccccccccccccccccxxxxxxxxxxxxxx
xxxxxxxxxxxxxxc?c?c?c?cxxxc?c?c?c?cxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcWcWcWcWcxxxcWcWcWcWcxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcWcWcWcWcxxxcWcWcWcWcxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcWcWcWcWcxxxcWcWcWcWcxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx~~~x~~~xxxxx~~~x~~~xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~xxx~xxxxxxx~xxx~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~xxx~xxxxxxx~xxx~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~xxx~xxxxxxx~xxx~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~~~~~xxxxxxx~~~~~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx~~~xxxxxxxxx~~~xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx-~-xxxxxxxxx-~-xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx-~-xxxxxxxxx-~-xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx-~-xxxxxxxxx-~-xxxxxxxxxxxxxxxxx
cccccxxxxxxxxxxxx-~--xxxxxxx--~-xxxxxxxxxxxxccccc
c?WWW~xxxxxxxxxxx-~~--xxxxx--~~-xxxxxxxxxxx~WWW?c
ccccc~~~~~xxxxxxxx--~-~~~~~-~--xxxxxxxx~~~~~ccccc
c?WWW~xxx~~-----xxxx-~~~~~~~-xxxx-----~~xxx~WWW?c
cccccxxxx~~~~~~~-xxxx---~---xxxx-~~~~~~~xxxxccccc
c?WWW~xxx~~----~-xxxx~--~--~xxxx-~----~~xxx~WWW?c
ccccc~~~~~xxxx--~-xx~---~---~xx-~--xxxx~~~~~ccccc
c?WWW~xxxxxxxxx--~-~----~----~-~--xxxxxxxxx~WWW?c
cccccxxxxxxxxxxx~~-----"""-----~~xxxxxxxxxxxccccc
cxxxxxxxxxxxxxxx~~----"..."----~~xxxxxxxxxxxxxxxc
cxxxxxxxxxxxxxxx~~~~~~"A.<"~~~~~~xxxxxxxxxxxxxxxc
cxxxxxxxxxxxxxxx~~----"..."----~~xxxxxxxxxxxxxxxc
cccccxxxxxxxxxxx~~-----"""-----~~xxxxxxxxxxxccccc
c?WWW~xxxxxxxxx--~-~----~----~-~--xxxxxxxxx~WWW?c
ccccc~~~~~xxxx--~-xx~---~---~xx-~--xxxx~~~~~ccccc
c?WWW~xxx~~----~-xxxx~--~--~xxxx-~----~~xxx~WWW?c
cccccxxxx~~~~~~~-xxxx~--~---xxxx-~~~~~~~xxxxccccc
c?WWW~xxx~~-----xxxx-~~~~~~~-xxxx-----~~xxx~WWW?c
ccccc~~~~~xxxxxxxx--~-~~~~~-~--xxxxxxxx~~~~~ccccc
c?WWW~xxxxxxxxxxx-~~--xxxxx--~~-xxxxxxxxxxx~WWW?c
cccccxxxxxxxxxxxx-~--xxxxxxx--~-xxxxxxxxxxxxccccc
xxxxxxxxxxxxxxxxx-~-xxxxxxxxx-~-xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx-~-xxxxxxxxx-~-xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx-~-xxxxxxxxx-~-xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx~~~xxxxxxxxx~~~xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~~~~~xxxxxxx~~~~~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~xxx~xxxxxxx~xxx~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~xxx~xxxxxxx~xxx~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx~xxx~xxxxxxx~xxx~xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx~~~x~~~xxxxx~~~x~~~xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcWcWcWcWcxxxcWcWcWcWcxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcWcWcWcWcxxxcWcWcWcWcxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcWcWcWcWcxxxcWcWcWcWcxxxxxxxxxxxxxx
xxxxxxxxxxxxxxc?c?c?c?cxxxc?c?c?c?cxxxxxxxxxxxxxx
xxxxxxxxxxxxxxcccccccccccccccccccccxxxxxxxxxxxxxx
ENDMAP

############################################################################
# Cracked pipes. by co
# Most of the time the player will move between the pipes through cracks,
# these will be filled with rats. Only two of the paths will be generated
# each map, but all three pipes will be accessible on all instances.
#
NAME:    sewer_co_cracked_pipes
TAGS:    no_item_gen no_monster_gen no_pool_fixup no_rotate no_vmirror
ORIENT:  encompass
MONS:    frilled lizard / ball python w:6 / adder w:4
MONS:    rat w:20 / river rat w:12 / rock fish band w:2
KMONS:   3 = adder
KMONS:   4 = brain worm
: item(dgn.loot_potions)
: item(dgn.loot_scrolls)
KFEAT:   34 = W
SUBST:   . = ..W, - = .WWWW
# Generate a single path between each pipe.
SHUFFLE: BC' / DE? / FG", ''y, HI` / JK! / LM~, ``z
NSUBST:  B = 1:. / *:c, C = 1:. / *:c, H = 1:. / *:c, I = 1:. / *:c
# Fill the pipes and the other possible locations.
NSUBST:  ' = 5:W / 4:2 / 3 = 2. / *:., ` = 5:W / 4:2 / 3 = 2. / *:.
NSUBST:  y = 1:3 / *:W, z = 2:3 / *:W
SUBST:   DEFGLMKJ = c, ?"!~ = x
# Handle pipe enemies and items.
SUBST:   1 = 11..., d = dddddeeeee%
KPROP:   w = no_tele_into
COLOUR:  34 = lightgreen
: sewer_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xcccccccccccccccccccccccccccccccccccccccccccccccx
xwwwwwwwwmwWd.....1.....1--------.......1...4.<cx
xwwwwwwwwmwWd..1......1...---3---..1......4..1dcx
xccccccccccccIIIIIIccccccccccKccccccMMMcccccMMMcx
xxxxxxxxxxxxxx`xx`xxxxxxxxxxc!cxxxxxx~xxxxxxx~xxx
            xxx``xxxxxxxxxxxc!cxxxxxxx~x~xxx~xx
            xxxx`xxxxxxxxxxxc!cxxxxxxxx~x~~~xx
            xx``x`xxxxxxxxxxc!cxxxxxxxxx~x~xxx
            x`xx`xxx`xxxxxxxc!cxxxxxxxxxx~x~xx
            xx````x`x`xxxxxxc!cxxxxxxxxx~xxx~xx
            xxxxxx`x`x`xxxxxc!cxxxxxxxxxx~xxx~x
xxxxxxxxxxxxxxxxx`xxxxx`xxxxc!cxxxxxxxxxxx~~x~xxxxxxxxxxxxx
xcccccccccccccccHHHcccHHHccccJcccccccccccLLLLLLcccccccccccx
xwwwwwwwwmwWd....1..1....---------4...1...1...dWwmwwwwwwwwx
xwwwwwwwwmwWd.1....1..1..---------..1.......1.dWwmwwwwwwwwx
xccccccccccCCCccCCCccccccccccEccccccccccGGGcGGGcccccccccccx
xxxxxxxxxxxx'xxxx'xxxxxxxxxxc?cxxxxxxxxxx"xxx"xxxxxxxxxxxxx
         xxxx'xx'xxxxxxxxxxxc?cxxxxxxxxxxx"x"xx
         xxxx'x'xxxxxxxxxxxxc?cxxxxxxxxxxxx"""x
         x'''x'x'xxxxxxxxxxxc?cxxxxxxx"x"xx"xxx
         xxxx'xxxxxxxxxxxxxxc?cxxxxxxxx"xx"x"xx
          xxx''xxx'xxxxxxxxxc?cxxxxxxxx"x"xxx"x
          xx'xx'''xxxxxxxxxxc?cxxxxxxxxx"xxx"xx
          xxxx'xxx'xxxxxxxxxc?cxxxxxxxx"x"xxxxxxxxxxxxxxxxx
          xccBBBcBBBcccccccccDccccccccFFFFFcccccccccccccccx
          xc<...........1---------.1.......1..dWwmwwwwwwwwx
          xcA........1...---------.....1......dWwmwwwwwwwwx
          xcccccccccccccccccccccccccccccccccccccccccccccccx
          xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

############################################################################
# Scattered pipes. by co
# The loot is often at the end of the pipes, with guarding monsters.
#
NAME:    sewer_co_scattered_pipes
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
KMONS:   1 = kobold brigand w:5 / river rat / adder
KMONS:   2 = jackal / kobold / frilled lizard / ball python / rat
KMONS:   3 = brain worm / crocodile w:2
KMONS:   P = plant
: kitem("? = " .. dgn.loot_potions)
: kitem("! =  " .. dgn.loot_scrolls)
KFEAT:   !?%1 = W
SUBST:   1 = 1111W
SUBST:   e = !!!???%%%WWW, P = PPP..
NSUBST:  . = 54 = 2... / *:.
SUBST:   . = .W, - = ., X = x., Y = xxw
NSUBST:  B = 1:< / *:.
COLOUR:  !?%1 = lightgreen
: sewer_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxYxcccxxcccYYYxxxxxYYYxxxxxxxxxxxxxxx
xxxxxxYYwwcecwwcccwwwwYYYwwwwwYYYYwYxxxxxxxx
xxxxxYwwwwcWcwwcccwwwwwwwwwwwwwwwwwwwYxxxxxx
xxxxYwwwwwcWcwwcccwwwwwwwwwwwwwwwwwwwwYxxxxx
xxxxwwwww-cWcPPcccwwwwwwwwwwwwwwwwwwwwwYxxxx
xxxxww----cWcPPcecwwwwwwwwwwwwwwwwwwwwwYxxxx
xxxX---A<-PPPPxcWcccccccc.wwwwwwwwwwwwwwYxxx
xxx--------PxxxcWceW1WWWW..wwwwwwwwwwwwwYxxx
xxx--Pcccccccccc1cccccccc..wwwwwww...wwwwYxx
xxxPPPWWWWW1WWecWPxxexxxX..wwwwww..e..wwwYxx
xxxPPPccccccccccWcPx.xxx...wwwwww..B..wwwYxx
xxx.....XxxxxxxcWc..xxxX...wwwwww..P..wwwYxx
xxxX.....XxxxxxcWcxxxxX....wwwwww.PPP.wwwYxx
xxxxX.....XxxxxcWcxxxX....wwwwwww.cWc.wwwYxx
xxxxX........XxcWcxxX.....wwwwwwwwcWcwwwwYxx
xxxx....cWc....cWcX.......wwwwwwwwcWcwwwwYxx
xxxP....cWc.............Pccccccccwc1cwwwYxxx
xxxPP...c1c...P........P.PwwwwwwwwcWcwwwYxxx
xxxPPP..cWc..PPP.......PPccccccccwcWcwwwwYxx
xxxXPPP.cec..cWc.......P.wwwwwwwwwcWcwwwYxxx
xxxX.cccccccccWc.......P.wwwwwwwwwcWcwwwwYxx
xxxX.WWWW1WWecWc......P..wwwwwwwwwcWcwwwwxxx
xxxX.cccccccccWc.....P..wwwwwwwwwPcWc.wwwYxx
xxxXXxxX...xPP1c....P...wwwwwwwwPPPPPP..wYxx
xxxxxxx.e.xPxcWc...PPPccccccccccccPPP...Xxxx
xxxxxxxxXXxxxcWc....PPWWWWW1WWW1WWPP....Xxxx
xxxxxxxxxxxxxcWc.....PccccccccccccP.3e..Xxxx
xxxX...XxxxxxcWc........wwwwwwww........Xxxx
xxX.....Xxxx............wwwwwwww....PP..Xxxx
xxX...PcccccccccccPP....wwwwwwww...PPP.Xxxxx
xxX3ePPWWWWW1WWWWWP...wwwwwwwww....cWcXxxxxx
xxX..P.ccccccccccc.Pwwwwwwwwwww..XXcWcxxxxxx
xxxX....wwwwwwwwwwwwwwwwwwwwwww.XxxcWcxxxxxx
xxxYwwwwwwwwwwwwwwwwwwwwwwwwwwYxxxxc1cxxxxxx
xxxYwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxcWcxxxxxx
xxxYwwwwwwwwwwwwwwwwwwwwwwwwwYxxxX.cWc.Xxxxx
xxxxYwwwwwwwwwwwwwwwwwwwwwwwYxxxX..PPP..Xxxx
xxxxxwwwwwwwwwwwwwwwwwwwwwwxxxxxX..PB...Xxxx
xxxxxYwwwwwwwwwwwwwwwwwwwwYxxxxxX....e..Xxxx
xxxxxxYwwwwwwYYYYwwwYYYwwYxxxxxxxX.....Xxxxx
xxxxxxxYYYxYYxxxxYYYxxxYYxxxxxxxxxxXXXxxxxxx
ENDMAP

#############################################################
# Kobolds who escaped to the sewers to worship evil in peace
# The temple has 3 sealed chambers at the end, each with loot
# and a boss monster.
# Total loot: 8 ok items (mostly consumables), 4 star items
NAME:    kennysheep_sewer_church
TAGS:    no_item_gen no_monster_gen no_pool_fixup
ORIENT:  encompass
WEIGHT:  5
# Placed monsters, then randomly distributed monsters.
MONS:    kobold w:35 / shadow imp / ufetubus
# Randomly generated monsters.
MONS:    kobold w:50 / kobold zombie / endoplasm / dart slug / \
         dart slug zombie w:3 / ball python / adder zombie w:3 / \
         bat / bat zombie w:3
# Bosses and features for the temple, either Makhleb or Kiku
: if crawl.random2(2) == 0 then
KMONS:   3 = kobold brigand / crimson imp ; club . dart ego:atropa q:2
KMONS:   4 = kobold brigand
KMONS:   5 = crimson imp ; club . dart ego:atropa q:2
KFEAT:   B = altar_makhleb
:   single_cloud(_G, "F", "flame", false)
: else
KMONS:   3 = kobold brigand / kobold brigand zombie
KMONS:   4 = patrolling rock fish zombie
KMONS:   5 = phantom / crocodile zombie
KFEAT:   B = altar_kikubaaqudgha
SUBST:   F : VY
: end
KMONS:   6 = Grinder / shadow imp w:5, shadow imp
: item(dgn.loot_potions .. " / any scroll w:30 / any armour / any weapon")
KITEM:   456 = star_item
SHUFFLE: 456
NSUBST:  1 = 2:1 / 5:. / * = 1:13 .:15, . = 14 = 2. / *:.
NSUBST:  d = 1:* / *:d
SUBST:   W = WWWWW., - = wwwWW
: sewer_setup(_G)
MAP
                                          ccc
                                          c<c
                                         ccdcc
                                        ccd4dcc
                                        c-1.1-c
               xxxxxxxxxxxxxxxxxxxxxxxxxc-...-c
               xwwwwwwwwwwwwwwww-W.+1W-xc-...-c
               xwwwwwwwwwwwwwwww-W.x1W-xc-...-c
               x---wwwwwwwwwwwww-W.x1W-xc-...-c
               xWW--wwwwwwwwwww--W.x1W-xc-...-c
               xWWW-wwwwwwwwww--W..x.W-xcc+++cc
               xWWW----ww-ww---W...x.W-xc.....ccccccccc
               xxWxxxxWxxWxxWxxx1xxxx.xcc.cFc..c------cc
               x-W.x............1w-x...c..2.2F.+.....1dccc
               x-W............11www-...+.F.B3..+......5d<c
               x-W.x............1w-x...c..2.2F.+.....1dccc
               x-W.xxxxWxWWxxx-x1xxxx.xcc.cFc..c------cc
               x-W.xww------w-WW...x.W-xc.....ccccccccc
               x-W.xwwwwwwwwww--W..x.W-xcc+++cc
               x-W.xwwwwwwwwwww--W.x1W-xc-...-c
               x-W.xwwwwwwwwwwww-W.x1W-xc-...-c
               x-W.xwwwwwwwwwwww-W.x1W-xc-...-c
               x-W1xwwwwwwwwwwww-W.+1W-xc-...-c
xxxxxxxxxxxxxxxx-W.xxxxxxxxxxxxxxxxxxWxxc-...-c
x----------------w1xWW-wwwwwww-WWWWWWW-xc-1.1-c
xWWWWWWWWWWWWWWWww.WWW-wwwwwww--WWWWWW-xccd6dcc
x...............1.1xW-wwwwwwwwww-------x ccdcc
xxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  c<c
xx...xx                                   ccc
x.....x
x..A..x
x..<..x
xx...xx
 xxxxx
ENDMAP

#############################################################
# Jelly sewer
# Up to 5 jellies (avg 3), plus typical small sewer mobs and endoplasms
# There is usually a jiyva altar in addition to ~8 loot items.
# Unfortunately, sewer is too early to mess around with slime walls.
#
NAME:   sewer_hellmonk_slimy_pipes
TAGS:   no_item_gen no_monster_gen no_pool_fixup
ORIENT: encompass
: item(dgn.loot_potions .. " / any scroll w:30 / any armour / any weapon")
MONS:   endoplasm w:25 / rat / ball python / dart slug / adder w:5 /\
        river rat w:5 / frilled lizard / ribbon worm w:2
KMONS:  2 = jelly
SUBST:  . = W..
NSUBST: - = 32 = 1W.. / * = W..
NSUBST: ! = 54 = 1WW. / * = W.
NSUBST: 2 = 1:2 / * = 2W
NSUBST: d = 4:d / * = d..
KFEAT:  B = altar_jiyva / altar_xom w:1
: sewer_setup(_G)
MAP
              ccccc
             ccdddcc
           ccc!!2!!ccc
          cc!!!!!!!!!cc
         cc!!!!!c!!!!!ccc
  ccccc  c!!!ccccccc!!!!c
 cc!!!cc c!!ccccccccc!!!c
cc!!!!!cc!!!c!!!!ccccc!!ccccc
c!!!c!!!c!!!!!!!!<cccc!!!2ddc
c!!!cc!!!!!!!!cc!!!ccc!!!!dBc
cc!!!cc!!!!!!!!cc!!ccc!!!2ddc
ccc!!dc!!!!cc!ddc!!cc!!!!!ccc
ccd!2cc!!!!!ccdcc!!!!!!cccc
ccd!cc!!!!!!!ccc!!!!!!cc
ccccc!!!!cc!!!!!!!!cccc
ccc!!!!!cccc!!!!!!cc
cc!!!!!ccddcc!!cccc
cc!!!cccc2!!c!!c
cc--cccccc!!!!!c
c---ccccccc!!!cc
c--cccccccccccc
c--ccccccccccccccc
c--cccccc--------c
c--cccccc--------c
c--cccccc--cccc--c
c--cccccc--cccc..c
c--cccccc--cccc..c
c--cccccc--cccc..c
c--cccccc--cccc..c
c---ccccc--cccc..c
cc--ccccc--cccc..c
 c---cccc--cccc..c
 c---------cccc..ccc
 cc--------ccww..wwc
  cccccccccccw....wc
            cwA..<wc
            cw....wc
            cwwwwwwc
            cccccccc
ENDMAP
