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

: crawl_require('dlua/vault.lua')

###############################################################################
#
# <<1>> Snake entries.
#       All must have the snake_entry tag and place an enter_snake feature.
#
###############################################################################

NAME:   dummy_snake_entry
TAGS:   snake_entry transparent
KFEAT:  O = enter_snake_pit
MAP
O
ENDMAP

NAME:   minmay_snake_entry_guardpost_small
TAGS:   snake_entry transparent
ORIENT: float
MONS:   naga
KFEAT:  O = enter_snake_pit
SUBST:  2 = 1 .:3
MAP
ccc.@.ccc
c.......c
c.2...2.c
.........
@...O...@
.........
c.1...2.c
c.......c
ccc.@.ccc
ENDMAP

NAME:   minmay_snake_entry_guardpost_medium
TAGS:   snake_entry transparent
WEIGHT: 5
MONS:   naga
KFEAT:  O = enter_snake_pit
SUBST:  2 = 1.
MAP
   ccccccc
 ccc.....ccc
cc2.......2cc
c...c2.1c...c
@...c.O.c...@
c...c1.2c...c
cc2.......2cc
 ccc.....ccc
   ccccccc
ENDMAP

NAME:   minmay_snake_entry_guardpost_large
TAGS:   snake_entry transparent
WEIGHT: 2
MONS:   naga
KFEAT:  O = enter_snake_pit
SUBST:  2 = 1.
MAP
c@ccccccc
c.......cc
c..c.c..2cc
c.........cc
c..c.c.c..2cc
c......2....cc
cc2..c1O2c..2cc
 cc....2......c
  cc2..c.c.c..c
   cc.........c
    cc2..c.c..c
     cc.......c
      ccccccc@c
ENDMAP

NAME:   minmay_snake_entry_six_corridors
TAGS:   snake_entry ruin_lair transparent
MONS:   water moccasin, black mamba
KMONS:  P = plant / fungus w:1
KFEAT:  O = enter_snake_pit
NSUBST: 1 = 3:1 / 3 = 1... / *:., 2 = 1:1 / 1:2 / 1:11222 / *:.
NSUBST: D = 2 = 112 / *:.
SUBST:  P = P:11 .
MAP
xxxx.@1xxxxxxP@xxxxx
xxxx1.PxxxxxP..xxxxx
xxxxx..xxxxx1.xxxxxx
 xxxxP..xxxx..xxxxx
 xxxxP.1xxxxD..xxxx
xxxxxx..Pxxxx1Pxxxxx
xxxxxxxD.xxxP.xxxxxx
xxxxxxxP2xx1..xxxxxx
xxxxxxxx...2.xxxxxxx
xxxxxxxP2..P2.xxxxxx
xxD1xxP..PO.P..Dxx1P
P.....1.2.2.xx.....@
@.1PxxxP..xxxx.Px1P.
xxxxxxxx.1xxxxDxxxxx
xxxxxxxx..Pxx..xxxx
xxxxxxxx..PxxP.1xxx
 xxxxxx1.Dxxxx..xxxx
 xxxxxxP.xxxxxx1..Px
xxxxxxx.1xxxxxxxP...
xxxxxx.@.Pxxxxxxxx.@
ENDMAP

NAME:   minmay_snake_entry_spellcaster
TAGS:   snake_entry transparent
WEIGHT: 2
MONS:   guardian serpent
KFEAT:  O = enter_snake_pit
MAP
xxxxxxxxx
 .......
 ...O...
 ...1...
xxxxxxxxx
ENDMAP

NAME:   guppyfry_snake_entry_island
TAGS:   snake_entry patrolling no_monster_gen transparent
MONS:   naga, water moccasin, plant
KFEAT:  O = enter_snake_pit
NSUBST: 1 = 1:1 / 1:- / * = 1--, 2 = 1:2 / 2:- / * = 2-
SUBST:  - = . W:2 3:1
MAP
   -WWWWW-
  -WWWWWWW-
 -WWW---WWW-
-WWW-----WWW-
.WW--212--WW.
@WW--1O1--WW@
.WW--212--WW.
-WWW-----WWW-
 -WWW---WWW-
  -WWWWWWW-
   -WWWWW-
ENDMAP

NAME:   guppyfry_snake_entry_garden
TAGS:   snake_entry patrolling no_monster_gen transparent
MONS:   naga, black mamba, plant
KFEAT:  O = enter_snake_pit
NSUBST: 1 = 1:1 / 1:2. / * = 1.
SUBST:  - = wW3t., " = 3.
MAP
 xxxx@xxxx
xx---.---xx
x--"".""--x
x-"tt.tt"-x
x-"t1.1t"-x
@....O....@
x-"t1.1t"-x
x-"tt.tt"-x
x--"".""--x
xx---.---xx
 xxxx@xxxx
ENDMAP

NAME:   nicolae_snake_entry_squirm
TAGS:   snake_entry patrolling transparent
KMONS:  OT = naga
KFEAT:  O = enter_snake_pit
KFEAT:  T = T
MAP
xxxxxxxxxxxxxxx
xxxxxxxxxxxx.xx
xxx...xxxxx...x
x...T..xxx....@
x.O.....x...x.@
x...T......xxx@
xxx...x...xxxxx
xxxxxxxx.xxxxxx
xxxxxxxxxxxxxxx
ENDMAP

NAME:   nicolae_snake_entry_warm_welcome
TAGS:   snake_entry patrolling transparent
KMONS:  L = lava snake
KMONS:  O = salamander
KFEAT:  O = enter_snake_pit
KFEAT:  l = l
SUBST:  ` = lx, - = l.
NSUBST: l = 2=L / 2=Ll / l
MAP
  xxxxxx
 xx`lllxx
xx`l--llxx
x.--...llx
@....O.llx
x.--...llx
xx`l--llxx
 xx`lllxx
  xxxxxx
ENDMAP

NAME:   alex1729_snake_entry_snake
TAGS:   snake_entry patrolling no_monster_gen transparent
MONS:   naga, plant w:20 / bush
KMONS:  L = salamander ; longbow | shortbow
KFEAT:  O = enter_snake_pit
KFEAT:  L = l
SUBST:  1 = 1 .:3, - = 2W..
MAP
      xxxxxxx
    xxx-.---xx
   xx-....-.-x
xxxx..O..t...x
xlLl....xx..-x
xxlxxxxxx-..xx
 xxxx xx1..xx
     xx-..tx
 xxx x-.-ttxxxx@
@.-xxx..t-----.x
 x..1-..t-ttt-.x
 xx-.....---t-.x
  xxxx-..-1--.-x
     xx-..-..-xx
      xxxxxxxxx
ENDMAP

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

default-depth: Snake

# Directly place a decorative vault 33% of the time on the latter half.
NAME:    snake_decor
TAGS:    no_dump extra allow_dup nolayout_encompass luniq
DEPTH:   Snake:3-4
CHANCE:  33%
{{
  local c = 1
  hook("post_place", function()
    dgn.place_maps{tag="snakedec", count=c}
  end)
}}

NAME:    hangedman_snake_thin_pillar_pass
TAGS:    transparent extra snakedec
WEIGHT:  6
KFEAT:   z = c
SHUFFLE: @' / @' / @' / '@
SUBST:   A : c.., B : c.., C : c.., D = cccc., E = c...., ' = .
: local Z = dgn.br_depth(you.branch())
: if crawl.x_chance_in_y(Z - you.depth(), Z) then
SUBST: zc = x
: else
TILE:  z = wall_stone_magic_shelf
: end
MAP
x@.xxxxxxxxx.@x
x......D......x
xx.cA..c..Ac.xx
 x.....D.....x
 xx.zB.c.Cz.xx
  x.........x
  xx.zC.Bz.xx
   x.......x
   xx.c.c.xx
    x.....x
    xx.E.xx
     x.'.x
ENDMAP

NAME:    hangedman_snake_wide_pillar_pass
TAGS:    transparent extra snakedec
WEIGHT:  4
KFEAT:   z = c
SHUFFLE: @' / @' / @' / '@
SUBST:   A : c.., B : c.., C : c.., D = cccc., E : c...., F : c...., ' = .
: local Z = dgn.br_depth(you.branch())
: if crawl.x_chance_in_y(Z - you.depth(), Z) then
SUBST: cz = x
: else
:   tile("z = " .. crackle_def(_G))
: end
MAP
x.xxx.@.xxxxxxxxxxxxx.@.xxx.x
x...x.A......FDF......A.x...x
xxx...c.B.....c.....C.c...xxx
  xxx...c.C...z...B.c...xxx
    xxx...c.E...E.c...xxx
      xxx...z...z...xxx
        xxx...D...xxx
          xxx.'.xxx
ENDMAP

# Somewhat vaguely inspired by a vault shape in
# a draft of evilmike's for something else entirely.
NAME:    hangedman_snake_pattern
TAGS:    transparent extra snakedec
KFEAT:   z = c
# Pillars, door positions, entrances.
SHUFFLE: XYZ, aA-+ / aA-+ / aA-+ / Aa+- / Aa+-, ABCDE
SUBST:   X : cx.., Y : zx...., Z = ., a = x, - : xx+, + : +++..
SUBST:   A : @@+, B : @@++..x, C : @+...xxx, DE = x
: tile("z = " .. crackle_def(_G))
MAP
   xxBxxxxxxxCxxxxxxxDxxxxxxxxExxxxxx
  xx...xx.........xx...xx.........xx
 xx.....xx.......xx.....xx.......xx
aa...X...xx..Z..--...X...xx..Z..aa
 AA...Y...++..Y..++...Y...++..Y..AA
  xx...Z...--..X..xx...Z...--..X..xx
   xx.....xx.......xx.....xx.......xx
    xx...xx.........xx...xx.........xx
     xxExxxxxxDxxxxxxxxCxxxxxxBxxxxxxx
ENDMAP

NAME:   nicolae_snake_squiggles
TAGS:   transparent extra snakedec
NSUBST: a = x / ., p = x / ., q = x / ., D = x / ., E = x / ., F = x / .
NSUBST: r = x / ., H = x / ., s = x / ., J = x / ., K = x / ., L = x / .
NSUBST: M = x / ., N = x / ., O = x / ., P = x / ., Q = x / ., R = x / .
NSUBST: S = x / ., y = x / ., z = x / ., ' = x / ., " = x / ., - = x / .
MAP
     .......
    ..-x.xa..
   .."x-.axp..
  ..'x"...pxq..
 ..zx'.. ..qxD..
..yxz..   ..DxE..
.Sxy..     ..ExF.
.xS..       ..Fx.
....         ....
.xR..       ..rx.
.RxQ..     ..Hxr.
..QxP..   ..sxH..
 ..PxO.. ..Jxs..
  ..OxN...KxJ..
   ..NxM.LxK..
    ..Mx.xL..
     .......
ENDMAP

NAME:  nicolae_large_snake_swirl
TAGS:  transparent luniq_snakedec_large
: if you.depth() == 1 then
SUBST: s = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST: s = [{(
: else
SUBST: s = ]})[{(
: end
MAP
xxxxxxxxxxx
@.........xxx
............xx
.............xx
..............x@......@x
..............xx.......x
...............x.......x
...............x.......x
.....xxxxx.....x......xx
...xxx.........x......x
..xx...........x......x
.xx...........xx.....xx
@x....xxxx....x......x
xx...xx......xx.....xx
x....x..s...xx.....xx
x....xx...xxx.....xx
x.....xxxxx......xx
x...............xx
x.............xxx
xx.........xxxx
 x.....xxxxx
 xx......@
  xx......
   xxx...@
     xxxxx
ENDMAP

NAME:  nicolae_coiled_stairwell_down
TAGS:  extra uniq_coiled_stairwell
DEPTH: Snake, !Snake:$
SUBST: } = }])>
MAP
  xxxxxxx
 xx.....xx
xx.xxxxx.xx
x.xx...xx.x
x.x.xxx.x.x
x.x.x}x.x.x
x.xx..x.x.x
xx.xxxx.x.x
 xx....xx.x
  xxxxxx.xx
    x...xx
   xx.xxx
   x.0.x
   x...x
   xx@xx
ENDMAP

NAME:  nicolae_coiled_stairwell_up
TAGS:  extra uniq_coiled_stairwell
DEPTH: Snake:2-
SUBST: { = {[(<
MAP
  xxxxxxx
 xx.....xx
xx.xxxxx.xx
x.xx...xx.x
x.x.xxx.x.x
x.x.x{x.x.x
x.xx..x.x.x
xx.xxxx.x.x
 xx....xx.x
  xxxxxx.xx
    x...xx
   xx.xxx
   x.0.x
   x...x
   xx@xx
ENDMAP

NAME:   nicolae_snake_nest
TAGS:   transparent snakedec luniq_snakedec_large
ORIENT: float
MAP
         .........
    ......xx..xxx..
  ...xxxxxx..xx.xx..
.....x......xx...xx..
.xx..xx...............
..xx....xxxx..xxxx..x..
 ..x..xxx..x.....xx.xx..
 ..x..x....xx.x...x..x...
 ..x....xx....xx..x..xxx.
 .xx.xx.x......x.xx....x.
 .x..x..x..xxxxx.x.....x.
 .x..x..x.xx........x.xx.
 ....x..x....x..xxx.x....
 .xx.xx.xx...x.xx.x.xxx..
 .x...x..xxx.x....x...x.
 .xx..xx.....x....x.x.x.
 ..x...x.x...x..xxx.xxx.
  .xx....xxxxx..........
  ..x...........x..xx..
   .x.xxx...xxx.x..x..
   .x...xxxxx...x..x.
   .............xxxx.
     ..xx..xxxx......
      ..xxxx..x.
       .........
ENDMAP

NAME:  nicolae_snake_serpentine_hallways
TAGS:  transparent extra snakedec
SUBST: V : V...
: decorative_floor(_G, 'V', "flower patch")
MAP
        x@@@@xxxxx
        x........xxx
       xxx.........xx
    xxxxxxxx........x
xxxxxxxxxxxxxxxx....xx
@..............xx....x
@...............xx...x
xxxxxxxxxxx......x...x
xxxxx.....xxx...xx...x
xxxV........xx.xx....x
xx...........x+x....xx
xx....x+x...........xx
x....xx.xx........Vxxx
x...xx...xxx.....xxxxx
x...x......xxxxxxxxxxx
x...xx...............@
x....xx..............@
xx....xxxxxxxxxxxxxxxx
 x........xxxxxxxx
 xx.........xxx
  xxx........x
    xxxxx@@@@x
ENDMAP

NAME:  nicolae_snake_linked_coils
TAGS:  transparent extra snakedec
SUBST: + : +x, V : V..
: decorative_floor(_G, 'V', "floral vase")
MAP
    xxxxxxxxxxxxxx
  xxx.....xxx....xxx
 xx.........+x.....xx
xx...xxxxx...xxxx...xx
@...xxxx.+xx..xxxx...@
@..xxxxx..xx..xxxxx..@
xxxxxxx..xxxx.Vxxxxxxx
xxxxxxx..xxxx..xxxxxxx
xxxxxxx..xxxx..xxxxxxx
xxxxxxx..xxxx..xxxxxxx
xxxxxxxV.xxxx..xxxxxxx
@..xxxxx..xx..xxxxx..@
@...xxxx...x+.xxxx...@
xx...xxxx...xxxxx...xx
 xx.....x+.........xx
  xxx....xxx.....xxx
    xxxxxxxxxxxxxx
ENDMAP

NAME:  nicolae_snake_single_loop
TAGS:  transparent extra snakedec
SUBST: c : cx
: tile("c = " .. crackle_def(_G))
MAP
 xxxxxxx
xx.....xx
x.......xx
@...c...xxx
@..xxx..xxxx
xxxxxx..xxxxx
xx...+..+...xx
x....+..+....x
x...xx..xx...x
x..cxx..xxc..x
x...x...xx...x
x.......x....x
xx.....xx...xx
 xxxxxxxx@@xx
ENDMAP

NAME:    nicolae_snake_double_loop
TAGS:    transparent extra snakedec
SHUFFLE: AB, CD
SUBST:   AC = ., BD = +
SUBST:   z : cxx, c : ccx
TILE:    c = wall_stone_magic_shelf
MAP
 xxxxxxx    xxxxxxx
xx.....xxxxxx.....xx
x.......xxxx.......x
@...x...xxxx...z...x
@..xxx..xxxx..xxx..x
xxxxxxBBxcxxCCxx...x
xx...A..A..D..D....x
x....A..A..D..D...xx
x...xxBBxxcxCCxxxxxx
x..xxx..xxxx..xxx..@
x...z...xxxx...x...@
x.......xxxx.......x
xx.....xxxxxx.....xx
 xxxxxxx    xxxxxxx
ENDMAP

NAME:    nicolae_snake_round_shape_thing
TAGS:    transparent extra snakedec luniq_snakedec_large
SHUFFLE: bc
SUBST:   a : x., b : x@, c : @
: decorative_floor(_G, 'V', "floral vase")
MAP
       xxbbbxx
     xxx.....xxx
    xx.........xx
    x...........x
   xx....xxx....xx
   x....xxxxx....x
   x...xxxxxxx...x
   x...xxxxxxx...x
  xx...xxxxxxx...xx
 xx.....xxxxx.....xx
xx.......xxx.......xx
c....a....V....a....c
c...aaa.......aaa...c
c....a....V....a....c
xx.......xxx.......xx
 xx.....xxxxx.....xx
  xx...xxxxxxx...xx
   x...xxxxxxx...x
   x...xxxxxxx...x
   x....xxxxx....x
   xx....xxx....xx
    x...........x
    xx.........xx
     xxx.....xxx
       xxbbbxx
ENDMAP

NAME:   nicolae_snake_biting_tails
TAGS:   transparent extra snakedec
SUBST:  g : ggG, G : GT
: snake_statue_setup(_G, "g")
MAP
xxxxx     xxxxxxx     xxxxxxx     xxxxxxx
@...xxxxxxx.....xxx xxx.....xxx xxx.....xxxxxxxx
xx....xx..........xxx.........xxx.........xx...x
 xxx.x......xxx....x....xxx....x....xxx..x.....x
   xx.g....xxxxxx.x...xxxxxxx.x...xxxxxxx.G....x
   xx.....xxxxxxxx...xxxxxxxxx...xxxxxxxx.....xx
   x....G.xxxxxxx...x.xxxxxxx...x.xxxxxx....g.xx
   x.....x..xxx....x....xxx....x....xxx......x.xxx
   x...xx.........xxx.........xxx..........xx....xx
   xxxxxxxx.....xxx xxx.....xxx xxx.....xxxxxxx...@
          xxxxxxx     xxxxxxx     xxxxxxx     xxxxx
ENDMAP

NAME:    nicolae_snake_serpentine_bazaar
TAGS:    transparent no_pool_fixup
KFEAT:   a = weapon shop
KFEAT:   p = armour shop
KFEAT:   q = antiques shop
KFEAT:   r = jewellery shop
KFEAT:   s = distillery shop
KFEAT:   y = scroll shop
KFEAT:   z = general shop
KFEAT:   - = abandoned_shop
# Odds of X non-abandoned shops: 3 = 3/8 ; 4 = 3/8 ; 5 = 3/16 ; 6 = 1/16
SHUFFLE: DEF
SUBST:   F : FSSS, S : GGGtTU, Z : GGGtTU
NSUBST:  DEF = a / p / q / r / s / y
SHUFFLE: apqrsyz-
MAP
    ............
    ..xxxxxxxx..
    .xxxxxxxxxx.
    ........Zxx.
.............xx.....
..xxxxxxxx...xxxxx..
.xxxxxxxxxx...xxxxx.
.xxF....Dxx.....Exx.
.xx......x.......xx.
.xx..ww......ww..xx.
.xx..ww......ww..xx.
.xx.......x......xx.
.xxE.....xxD....Fxx.
.xxxxx...xxxxxxxxxx.
..xxxxx...xxxxxxxx..
.....xx.............
    .xxZ........
    .xxxxxxxxxx.
    ..xxxxxxxx..
    ............
ENDMAP

NAME:    nicolae_snake_slithery_corners
TAGS:    transparent extra snakedec
SHUFFLE: DEF
SUBST:   D : ggG., E : TG., F : T., M = M..
: snake_statue_setup(_G, "g")
: decorative_floor(_G, 'M', "mop and bucket")
MAP
     ccc
c@@@ccccc@@@cc
c...ccccc...cccc
c...ccccc...ccccc
c....ccc....cccccc
cc....c....ccccccc
ccc...c...ccccccccc
ccc..DcF..ccccccccc
ccc...c...ccccc...@
cc....c...Mccc....@
c....ccc..........@
c...cccc........ccc
cE..cccccc..F..ccccc
c...cccccccccccccccc
c....ccccc..D..ccccc
cc....ccc.......ccc
 c................@
 cc........ccc....@
  ccc..E..ccccc...@
    ccccccccccccccc
ENDMAP

NAME:    nicolae_snake_slithery_hallway
TAGS:    transparent extra snakedec
SHUFFLE: DEF
SUBST:   D : ggG., E : TG., F : T.
: snake_statue_setup(_G, "g")
MAP
  cccccccccccccccccccccccccccccccccc
 cc..F..ccccc..D..ccccc..E..ccccc..@
cc.......ccc.......ccc.......ccc...@
@..................................@
@...ccc.......ccc.......ccc.......cc
@..ccccc..E..ccccc..D..ccccc..F..cc
cccccccccccccccccccccccccccccccccc
ENDMAP

NAME:   nicolae_snake_snake_lake
TAGS:   transparent extra snakedec luniq_snakedec_large uniq_snakedec_liquid
KMONS:  1 = plant
KFEAT:  1 = . w:40 / W
NSUBST: t = . / t
SUBST:  ' = 1 W .:60, t = t:80 1 . W:5
MAP
         .......   .......   .......
        .............................
    .....ttttttt...ttttttt...ttttttt..
   .....tt'''''tt.tt'''''tt.tt'''''tt..
  ..ttttt'''''''ttt'''''''ttt'''''''tt..
 ..tt'''''wwwww'''''wwwww'''''wwww'''t..
..tt'''''wwwwwww'''wwwwwww'''wwwwww''t..
..t'''wwwwwwwwwwwwwwwwwwwwwwwwwwwww''t..
..t''wwwwwwwwwwwwwwwwwwwwwwwwwwwww'''t..
..t''wwwwww'''wwwwwww'''wwwwwww'''''tt..
..t'''wwww''''.wwwww'''''wwwww'''''tt..
..tt'''''''ttt'''''''ttt'''''''ttttt..
 ..tt'''''tt.tt'''''tt.tt'''''tt.....
  ..ttttttt...ttttttt...ttttttt.....
   .............................
    .......   .......   .......
ENDMAP

# Although sometimes it's not a hallway.
NAME:  nicolae_snake_yet_another_twisty_hallway
TAGS:  transparent extra snakedec
: if crawl.one_chance_in(5) then
SUBST: x = -, . = x, @- = .
: end
SUBST: x : x:50 c:30 b, ' = .
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
@'........xxx.....xxx...........xx
@..........x.......x.............x
xxxxxxxxx..x..xxx..x..xxxxxxxxx..x
xx....xxx..x..xxx..x..xx....xxx..x
x......xx..x..xx...x..x......xx..x
x..xx......x..x...xx..x..xx......x
x..xxx....xx..x..xxx..x..xxx....xx
x..xxxxxxxxx..x..xxx..x..xxxxxxxxx
x.............x.......x..........@
xx...........xxx.....xxx........'@
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

# https://www.youtube.com/watch?v=RmzgObMCicw
NAME:  nicolae_snake_flat_spine
TAGS:  transparent extra snakedec
DEPTH: Snake
MAP
        .....................
    ......cc.cc.cc.cc.cc.cc....
......cc.c..c..c..c..c..c..cc...
..cc.c..c..c..c..c..c..c..c..cc.
..c..c..c..c..c..c..c..c..c..c..
cccccccccccccccccccccccccccccccc
..c..c..c..c..c..c..c..c..c..c..
..cc.c..c..c..c..c..c..c..c..cc.
......cc.c..c..c..c..c..c..cc...
    ......cc.cc.cc.cc.cc.cc....
        .....................
ENDMAP

################################################################################
# Gridmaze is a series of decor vaults inspired by the layout_grid_maze variant
# that have two-block-thick walls with rounded corners. The cleared notches
# around the outside edge give opportunities to connect up with the walls in
# the rest of the level.

NAME:    nicolae_snake_gridmaze_big_u
TAGS:    transparent extra snakedec luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DEFHJ, KL/MN, KL, OPQRSZ, apqrsy, z-
SUBST:   DEFHKMz = x, JLNPQRSZpqrsy- = ., Oa = _
CLEAR:   _
MAP
.....OO..........yy.....
..xxxxxxxx----xxxxxxxx..
.xxxxxxxxxx--xxxxxxxxxx.
.xx......zz..zz......xx.
.xx......zz..zz......xx.
Pxx...x..zx--xxxxx...xxs
Pxx..xx..xx---xxxxx..xxs
.xx..xx..xx......xx..xx.
.xx..xx..xx......xx..xx.
.xx..xxLLxx..xNNNxx..xx.
.xx..KxLLxK..MxNNxM..xx.
Qxx..KK..KK..MM..MM..xxr
Qxx..KK..KK..MM..MM..xxr
.xx..KxLLxxxxxxNNxM..xx.
.xx..xxLLLxxxxNNNxx..xx.
.xx..xx..........xx..xx.
.xx..xx..........xx..xx.
Rxx..xxxxxxxxxxxxxx..xxq
Rxx...xxxxxxxxxxxx...xxq
.xx..................xx.
.xx..................xx.
.xxJJJHHHHFFFFEEEEDDDxx.
..xJJxxHHxxFFxxEExxDDx..
.....SS..ZZ..aa..pp.....
ENDMAP

NAME:    nicolae_snake_gridmaze_entwining
TAGS:    extra transparent snakedec luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DE/FH, DE, JK, LM, NOPQRSZap
SUBST:   HDJL = x, FEKMOPQRSZap = ., N = _
CLEAR:   _
MAP
...PP..QQ..RR..SS..ZZ...
..xxxxxxxxxxxxxxxxxxxx..
.xxxxxxxxxxxxxxxxxxxxxx.
Oxx..................xxa
Oxx..................xxa
.xx...xxxxDDDDxxxxL..xx.
.xx..xxxxxxDDxxxxxM..xx.
Nxx..xx..EE..EE..MM..xxp
Nxx..xx..EE..EE..MM..xxp
.xxxxxx..ExDDxE..MxLLxx.
..xxxx...xxDDxx..xLLLLM.
.........xx..xx.........
.........xx..xx.........
.KJJJJx..xxFFxx...xxxx..
.xxJJxK..HxFFxH..xxxxxx.
pxx..KK..HH..HH..xx..xxN
pxx..KK..HH..HH..xx..xxN
.xx..KxxxxxFFxxxxxx..xx.
.xx..JxxxxFFFFxxxx...xx.
axx..................xxO
axx..................xxO
.xxxxxxxxxxxxxxxxxxxxxx.
..xxxxxxxxxxxxxxxxxxxx..
...ZZ..SS..RR..QQ..PP...
ENDMAP

NAME:    nicolae_snake_gridmaze_spiral
TAGS:    extra transparent luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DE/FH/JK/LM/pq, DE, NO, PQRSZa
SUBST:   DFJLNp = x, EHKMOQRSZaq = ., P = _
CLEAR:   _
MAP
.................PP.....
.qxqqqxxxxLLLLxxxxxxxx..
.pxqqxxxxxxLLxxxxxxxxxx.
.pp..pp..MM..MM......xx.
.pp..pp..MM..MM......xx.
.pxqqxp..MxLLxxxxx...xxQ
.xxqqxx..xxLLLxxxxx..xxQ
.xx..xx..xx......xx..xx.
.xx..xx..xx......xx..xx.
.xxEExx..xxOOON..xxKKxx.
.DxEExD..NxOOxx..JxKKxJ.
.DD..DD..NN..xx..JJ..JJ.
.DD..DD..NN..xx..JJ..JJ.
.DxEExD..Nxxxxx..JxKKxJ.
.xxEExx..Oxxxx...xxKKxx.
.xx..xx..........xx..xx.
.xx..xx..........xx..xx.
axx..xxxxxFFFFxxxxx..xxR
axx...xxxxxFFxxxxx...xxR
.xx......HH..HH......xx.
.xx......HH..HH......xx.
.xxxxxxxxxxFFxxxxxxxxxx.
..xxxxxxxxFFFFxxxxxxxx..
.....ZZ..........SS.....
ENDMAP

NAME:    nicolae_snake_gridmaze_squiggle
TAGS:    transparent extra luniq_snakedec_large uniq_snake_gridmaze
: if crawl.one_chance_in(3) then
SUBST:   DHK = x, EFJ = .
: elseif crawl.coinflip() then
SUBST:   EHJ = x, DFK = .
: else
SUBST:   FJK = x, DEH = .
: end
SHUFFLE: LMNOPQRSZ
SUBST:   L = _, MNOPQRSZ = .
CLEAR:   _
MAP
...NN......OO......PP...
..xxxx....xxxx....xxxx..
.xxxxxx..xxxxxx..xxxxxx.
Mxx..xx..xx..xx..xx..xxQ
Mxx..xx..xx..xx..xx..xxQ
.xx..xxxxxx..xxxxxx..xx.
.xx...xxxx....xxxx...xx.
Lxx..................xxR
Lxx..................xxR
.xxx...EKKKKH...xxxxxxx.
..xxx..xxKKxJ..xxxxxxx..
.......HH..JJ..xx.......
.......HH..JJ..xx.......
..xxxxxxx..Jxxxxx..xxx..
.xxxxxxx...Dxxxx....xxx.
Rxx..................xxL
Rxx..................xxL
.xx...xxxx....xxxx...xx.
.xx..xxxxxx..xxxxxx..xx.
Qxx..xx..xx..xx..xx..xxM
Qxx..xx..xx..xx..xx..xxM
.xxxxxx..xxxxxx..xxxxxx.
..xxxx....xxxx....xxxx..
...PP......OO......NN...
ENDMAP

NAME:    nicolae_snake_gridmaze_swirls
TAGS:    transparent extra luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DE, FH, JKLMNO
SUBST:   DF = x, EHKLMNO = ., J = _
CLEAR:   _
MAP
...NN..............MM...
..xxxxxxxx...xxxxxxxxx..
.xxxxxxxxxx...xxxxxxxxx.
Oxx......xx..........xxL
Oxx......xx..........xxL
.xxxxx...xxHHHxxxx...xx.
..xxxxx..FxHHxxxxxx..xx.
.....xx..FF......xx..xxK
.....xx..FF......xx..xxK
..xxxxx..Fxxxxxxxxx..xx.
.xxxxx...Hxxxxxxxx...xx.
Jxx..................xxJ
Jxx..................xxJ
.xx...xxxxxxxxE...xxxxx.
.xx..xxxxxxxxxD..xxxxx..
Kxx..xx......DD..xx.....
Kxx..xx......DD..xx.....
.xx..xxxxxxEExD..xxxxx..
.xx...xxxxEEExx...xxxxx.
Lxx..........xx......xxO
Lxx..........xx......xxO
.xxxxxxxxx...xxxxxxxxxx.
..xxxxxxxxx...xxxxxxxx..
...MM..............NN...
ENDMAP

NAME:    nicolae_snake_gridmaze_tees
TAGS:    transparent extra snakedec luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DE/FH/JK/LM, DE, FH, JK, NOPQRSZ
SUBST:   DFJL = x, EHKMOPQRSZ = ., N = _
CLEAR:   _
MAP
...RR......QQ......PP...
..xxxxxxxxxxxxxMMMxxxx..
.xxxxxxxxxxxxxMMMxxxxxx.
Sxx..............LL..xxO
Sxx..............LL..xxO
.xxxxx....xxxxxxxxL..xx.
..xxxxx..xxxxxxxxxM..xx.
.....xx..xx..........xxN
.....xx..xx..........xxN
.DEEExx..xxxxxxxxxH..xx.
.xxEExD...xxxxxxxxF..xx.
Zxx..DD..........FF..xxZ
Zxx..DD..........FF..xxZ
.xx..Dxxxxxxxx...FxHHxx.
.xx..Exxxxxxxxx..xxHHHF.
Nxx..........xx..xx.....
Nxx..........xx..xx.....
.xx..Kxxxxxxxxx..xxxxx..
.xx..Jxxxxxxxx....xxxxx.
Oxx..JJ..............xxS
Oxx..JJ..............xxS
.xxxxxxKKKxxxxxxxxxxxxx.
..xxxxKKKxxxxxxxxxxxxx..
...PP......QQ......RR...
ENDMAP

NAME:    nicolae_snake_gridmaze_waves
TAGS:    extra transparent snakedec luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DE, FH, JKLMNOPQ
SUBST:   DF = x, EHKLMNOPQ = ., J = _
CLEAR:   _
MAP
...NN......OO......PP...
..xxxxH...xxxx....xxxx..
.xxxxxF..xxxxxx..xxxxxx.
.xx..FF..xx..xx..xx..xx.
.xx..FF..xx..xx..xx..xx.
.xxHHxxxxxx..xxxxxx..xx.
.FHHHHxxxx....xxxx...xx.
.....................xxQ
.....................xxQ
..xxxxx.....xxxxx....xx.
.xxxxxxx...xxxxxxx...xx.
.xx...xx...xx...xx...xx.
.xx...xx...xx...xx...xx.
.xx...xxxxxxx...xxDDDxx.
.xx....xxxxx....EDDDDxE.
Mxx..................EE.
Mxx..................EE.
.xx...xxxx....xxxx...Ex.
.xx..xxxxxx..xxxxxx..xx.
.xx..xx..xx..xx..xx..xx.
.xx..xx..xx..xx..xx..xx.
.xxxxxx..xxxxxx..xxxxxx.
..xxxx....xxxx....xxxx..
...LL......KK......JJ...
ENDMAP

NAME:    nicolae_snake_gridmaze_zigzag
TAGS:    extra transparent snakedec luniq_snakedec_large uniq_snake_gridmaze
SHUFFLE: DE, FH, JK, LMNOP
SUBST:   DFJ = x, EHKMNOP = ., L = _
CLEAR:   _
MAP
.....LL..........MM.....
..xxxxxxxx....xxxxxxxx..
.xxxxxxxxxx..xxxxxxxxxx.
Pxx......xx..xx......xxN
Pxx......xx..xx......xxN
.xxHHxH..xxxxxx...xxxxx.
.FxHHxF...xxxx...xxxxx..
.FF..FF..........xx.....
.FF..FF..........xx.....
.FxHHxxxxxKKKKxxxxx...xO
.xxHHHxxxxxKKxxxxx...xxO
.xx......JJ..JJ......xx.
.xx......JJ..JJ......xx.
Oxx...xxxxxKKxxxxxEEExx.
Ox...xxxxxKKKKxxxxxEExD.
.....xx..........DD..DD.
.....xx..........DD..DD.
..xxxxx...xxxx...DxEExD.
.xxxxx...xxxxxx..ExEExx.
Nxx......xx..xx......xxP
Nxx......xx..xx......xxP
.xxxxxxxxxx..xxxxxxxxxx.
..xxxxxxxx....xxxxxxxx..
.....MM..........LL.....
ENDMAP

NAME:    regret_index_snakedec_diamondback
TAGS:    transparent extra snakedec
DEPTH:   Snake
KFEAT:   C = altar_cheibriados / altar_gozag w:5
KFEAT:   F = cache_of_fruit / cache_of_meat
SHUFFLE: '"yY`~zZ / yY'"zZ`~ / yY'"`~zZ / yY'"`~zZ / '"yYzZ`~ / '"yYzZ`~, ?!
SUBST:   '` = ., yYzZ = x, ! : bb+, - : x:5 .
NSUBST:  "~ = 1:{([])}}<<<>>>CCCFFTTUUVVpp
SUBST:   " : bbbllGGp, ~ : bbblGGGp, ?b : ccx, ^ : ^x...
TILE:    G = dngn_statue_naga / dngn_statue_archer w:6
CLEAR:   ^
: decorative_floor(_G, 'p', "garden patch")
MAP
    .@.^^                  x
   ..x..^x    ^^^^^      ..x..
  ..xxx..^^  ^^...^^  ^^..xxx..    ^^...
 ..x'.yx..^  ^..x..^  ^..x'.yx..   ^..x..
..x''.yyx..  ..xxx..  ..x''.yyx..  ..xxx..
.x'''Yyyyx....x`.zx....x'''Yyyyx....x`.zx..
xx.."?"..xx..x``.zzx..xx.."?"..xx..x``.zzx..
.xyyyY'''x--x```Zzzzx..xyyyY'''x--x```Zzzzx.
..xyy.''x..xx..~!~..xx..xyy.''x..xx..~!~..xx
 ..xy.'x....xzzzZ```x....xy.'x....xzzzZ```x.
  ..xxx..  ..xzz.``x..  ..xxx..  ..xzz.``x..
   ..x..^   ..xz.`x..^  ^..x..^  ^..xz.`x..
    ...^^    ..xxx..^^  ^^...^^  ^^..xxx..
              ..x..      ^^^^^    x^..x..
                x                  ^^.@.
ENDMAP

NAME:   nicolae_snake_am_anfang
TAGS:   transparent extra snakedec luniq_snakedec_glass
DEPTH:  Snake
: if you.depth() == 1 then
SUBST:  S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:  S = [{(
: else
SUBST:  S = ]})[{(
: end
COLOUR: n = lightgreen
TILE:   n = dngn_transparent_stone_green
MAP
xxxxx..@@@..xxxxx
xccccc.....cccccx
xc...cc...cc...cx
xcnn.........nncx
xc......S......cx
xcnn.........nncx
xc...cc...cc...cx
xccccc.....cccccx
xxxxx..@@@..xxxxx
ENDMAP

NAME:    nicolae_snake_entwined_pools
TAGS:    transparent extra snakedec no_pool_fixup uniq_snakedec_liquid
DEPTH:   Snake
SHUFFLE: DEF
SUBST:   D = ., E : .c, F = c
MAP
 ........................@
 .w...lll...www...lll..ww.
 ..w.l...l.w...w.l...lwww.
cccllFEDEFwFEDEFlFEDEFwwccc
 .lllw...w.l...l.w...w.l..
 .ll..www...lll...www...l.
 @........................
ENDMAP

NAME:   nicolae_snake_hissss
TAGS:   transparent snakedec extra luniq_snakedec_glass
DEPTH:  Snake
: if you.depth() == 1 then
SUBST:  S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:  S = [{(
: else
SUBST:  S = ]})[{(
: end
COLOUR: n = lightgreen
TILE:   n = dngn_transparent_stone_green
MAP
xxxxxxxxxxx
xxxxxxxccccc
xxxccccc...cc
xxxcc....n..ccc
xllc...........@
xxlS............@
xllc...........@
xxxcc....n..ccc
xxxccccc...cc
xxxxxxxccccc
xxxxxxxxxxx
ENDMAP

# Some abstract art installations celebrating the eternal alliance of the nagas
# and salamanders. Green crystal for the nagas, red lava for the salamanders.
# If you want to make more, note that each vault has an equal number of lava
# tiles and crystal tiles, and all crystal tiles should be visible, even when
# the lava and crystal tiles are swapped.
NAME:    nicolae_snake_nagamander_alliance_1
TAGS:    transparent snakedec extra luniq_nagamander
DEPTH:   Snake
SHUFFLE: bl
MAP
    ..........
    .llllll...
    .lbbbbl...
    .lb..bl.l.
    .lb...lll.
    .lbbb.....
.....lllb.
.bbb...lb.
.b.bl..lb.
...bllllb.
...bbbbbb.
..........
ENDMAP

NAME:    nicolae_snake_nagamander_alliance_2
TAGS:    transparent snakedec extra luniq_nagamander
DEPTH:   Snake
SHUFFLE: bl
MAP
     .......
    ....ll........
   ...lllll....bb.
  .......ll.....b.
 ...bb..lll.bbb.b.
.....b..ll..b.bbb.
.bbb.b..ll..b.....
.b.bbb.lll..bb...
.b.....ll.......
.bb....lllll...
........ll....
      .......
ENDMAP

NAME:    nicolae_snake_nagamander_alliance_3
TAGS:    transparent snakedec extra luniq_nagamander
DEPTH:   Snake
SHUFFLE: bl
MAP
  ..............
 ..bbbb..l....l..
..b....b..l..l...
.b..ll..b.l..l.b.
.b.l..l.b.l..l.b.
.b.l..l.b.l..l.b.
.b.l..l.b..ll..b.
...l..l..b....b..
..l....l..bbbb..
 ..............
ENDMAP

NAME:    nicolae_snake_nagamander_alliance_4
TAGS:    transparent snakedec extra luniq_nagamander
DEPTH:   Snake
SHUFFLE: bl
MAP
.......
..llll.
.bbbbl.
.bllbl.
.b..bl.
...bbl.
..bbll.
.bbll.........
.bll...llllll.
.bl...llbbbbl.
.bl..llbb.lbl.
.bllllbb..lbl.
.bbbbbb..bbb..
..............
ENDMAP

NAME:    nicolae_snake_nagamander_alliance_5
TAGS:    transparent snakedec extra luniq_nagamander
DEPTH:   Snake
SHUFFLE: bl
MAP
..........
...ll.....
..bbl.lb..
.lbbl.bl..
.llll.....
.....bbbb.
..bl.bllb.
..lb.bll..
.....bb...
..........
ENDMAP

# The "parade" vaults all feature a continuous wall which is broken up at random
# to make several snake-shaped walls, following each other like a snake parade.
NAME:    nicolae_snake_parade_curves
TAGS:    transparent extra snakedec luniq_snakeparade
DEPTH:   Snake
SHUFFLE: Tg
NSUBST:  D = . / c, E = . / c, F = . / c, H = . / c, J = . / c, K = . / c, \
         L = . / c, M = . / c, N = . / c
: snake_statue_setup(_G, "g")
MAP
    .......
    .ccDDc.
    .c...D.....
    .cNc.cDDDc.
.......N.....c.
.cMc...cNc.T.c.
.M.M.....N...E.....
.M.cMc.cNc.cEc.ccc.
.M...c.N...E...c.F.
.ccc.ccc.g.cEEEc.F.
...c.............F...
  .L.cLLcc.g.cHc.cFc.
  .L.L...c...H.H...F.
  .cLc.cKc.cHc.cHc.F.
  .....K...c.....H.c.
      .K.T.ccc...ccc.
      .K.....J.......
      .cKKcc.cJc.
      .....c...J.
          .cJJJc.
          .......
ENDMAP

NAME:   nicolae_snake_parade_fountainous
TAGS:   transparent snakedec extra luniq_snakeparade
DEPTH:  Snake
NSUBST: p = 3=. / 3=c. / c
KFEAT:  g = metal_statue
: local glifz = "DEFHJKLMNOPQRSZa"
: for i = 1, string.len(glifz), 1 do
:    subvault(string.sub(glifz, i, i) .. " : nico_snake_corners")
: end
: snake_statue_setup(_G, "g")
MAP
.................
..DcpcE...FcpcH..
.DDD.EEE.FFF.HHH.
.cD...EcpcF...Hc.
.p..T.......T..p.
.cJ...KcpcL...Mc.
.JJJ.KKK.LLL.MMM.
..JcpcK...Lc.cM..
........g..p.p...
..NcpcO...Pc.cQ..
.NNN.OOO.PPP.QQQ.
.cN...OcpcP...Qc.
.p..T.......T..p.
.cR...ScpcZ...ac.
.RRR.SSS.ZZZ.aaa.
..RcpcS...Zcpca..
.................
ENDMAP

NAME:  nicolae_snake_fountainsnakessubvault
TAGS:  transparent no_dump unrand nico_snake_corners allow_dup
DEPTH: Snake
MAP
 c
.c.
 c
ENDMAP

NAME:   nicolae_snake_parade_hashtag
TAGS:   transparent snakedec extra luniq_snakeparade
DEPTH:  Snake
NSUBST: a = . / c, p = . / c, q = . / c, r = . / c, s = . / c, y = . / c, \
        z = . / c, - = . / c, ` = . / c
MAP
   ............
   .caac..cppc.
   .a..a..p..p.
....c..a..c..p....
.czcc..cacc..cpcc.
.z..............c.
.z..............q.
.czzc..c--c..cqqc.
....z..-..c..q....
....c..c..`..q....
.cycc..c``c..cqcc.
.y..............c.
.y..............r.
.cyyc..cssc..crrc.
....y..s..s..r....
   .c..s..c..r.
   .ccsc..ccrc.
   ............
ENDMAP

NAME:   nicolae_snake_parade_hilbert
TAGS:   transparent snakedec extra luniq_snakeparade
DEPTH:  Snake
NSUBST: p = . / c, q = . / c, r = . / c, s = . / c, z = . / c
MAP
.............
.cqqqc.cqqqc.ccc
.q...q.q...c.p...
.cqc.cqc.ccc.cpc.
...q.....p.....p.
 cqc.crc.p.cpc.p.
 c...r.r.p.p.p.p.
 ccrrc.r.cpc.cpc.
 ......r.........
 ccrrc.r.czc.czc.
 c...r.r.z.z.z.z.
 csc.crc.z.czc.z.
...s.....z.....z.
.csc.csc.ccc.czc.
.s...s.s...c.z...
.csssc.csssc.ccc
.............
ENDMAP

NAME:    nicolae_snake_parade_liquids
TAGS:    transparent snakedec extra no_pool_fixup luniq_snakeparade
DEPTH:   Snake
SHUFFLE: DE, FH
SUBST:   D = -, F = `, EH = .
NSUBST:  p = . / c, q = . / c, r = . / c, s = . / c, z = . / c, \
         - = . / w, ` = . / w
SUBST:   w : wwwl
MAP
........................
.cpc.cpc..cqqc..cqc.ccc.
.p.p.p.p..q..q..q.ccc.r.
.p.cpc.c..q..cqqc.....r.
.p.....ccqc..F..H..crrc.
.cpcc..D..E..w``w..r....
....c..w--w..H..F..crrc.
.czzc..E..D..cssc.....r.
.z.....czzc..s..s.csc.r.
.z.czc.z..c..s..s.s.c.r.
.czc.czc..ccsc..csc.ccc.
........................
ENDMAP

NAME:   nicolae_snake_parade_weird_curve
TAGS:   transparent snakedec extra luniq_snakeparade
DEPTH:  Snake
NSUBST: a = . / c, p = . / c, q = . / c, r = . / c, s = . / c, y = . / c, \
        z = . / c
SUBST:  S = TTggS
: if you.depth() == 1 then
SUBST:  S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:  S = [{(
: else
SUBST:  S = ]})[{(
: end
MAP
   ............
 ccc.caac.cppc.
 c.cac..a.p..p.
.z.....cc.cc.p.
.z.czc.a...p.c
.czc.z.caccc.c
.....z.......q.
.cyccc.S.cqqqc.
.y.......q.....
.y.csssc.q.ccc.
.y.s...s.ccc.r.
.y.cc.cc.....r.
.y..s.c..crc.r.
.cccc.ccrc.crc.
..  ...........
ENDMAP

NAME:   nicolae_snake_parade_wet_stairs
TAGS:   transparent snakedec extra no_pool_fixup
TAGS:   luniq_snakeparade uniq_snakedec_liquid
DEPTH:  Snake
NSUBST: p = . / c, q = . / c, r = . / c, s = . / c, y = . / c, z = . / c
SUBST:  w : wwwl
: if you.depth() == 1 then
SUBST:  S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:  S = [{(
: else
SUBST:  S = ]})[{(
: end
MAP
  .........
 cppcc.cqqcc
.p...c.q...c.
.p.w.cqc.w.r.
.c..w.w.w..r.
.ccc.....crc.
...zw.S.wr...
.czc.....ccc.
.z..w.w.w..c.
.z.w.cyc.w.s.
.c...y.c...s.
 ccyyc.ccssc
  .........
ENDMAP

NAME:   nicolae_snake_parade_wheel
TAGS:   transparent snakedec extra luniq_snakeparade
DEPTH:  Snake
SUBST:  S = TTggS
NSUBST: p = . / c, q = . / c, r = . / c, s = . / c
: if you.depth() == 1 then
SUBST:  S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:  S = [{(
: else
SUBST:  S = ]})[{(
: end
: snake_statue_setup(_G, "g")
MAP
   ...@@@...
  ccpc...cpcc
 cc..p...p..cc
.c...cpc.p...c.
.s.....cpc...q.
.cssc......cqc.
@...s......q..@
@..cc..S..cc..@
@..s......q...@
.csc......cqqc.
.s...crc.....q.
.c...r.crc...c.
 cc..r...r..cc
  ccrc...crcc
   ...@@@...
ENDMAP

NAME:    nicolae_snake_parade_wiggly_rhombus
TAGS:    transparent snakedec extra luniq_snakeparade
DEPTH:   Snake
SHUFFLE: SED/HJK, DEF, HJK
SUBST:   DF : g., EJ : T., FK : G.
NSUBST:  p = . / c, q = . / c, r = . / c, s = . / c
: if you.depth() == 1 then
SUBST:   S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST:   S = [{(
: else
SUBST:   S = ]})[{(
: end
: snake_statue_setup(_G, "g")
MAP
...........
.csscc........
.s...c........
.s.D.cpppc.E..
.s.......p.....
.csc.....cpc...
...c.......p...
...c...S...c...
...r.......c...
...crc.....cqc.
.....r.......q.
 ..E.crrrc.D.q.
 ........c...q.
 ........ccqqc.
    ...........
ENDMAP

NAME:   nicolae_snake_serpentine_stairdown
TAGS:   transparent snakedec extra luniq_snakedec_glass
DEPTH:  Snake
: if you.depth() == 1 then
SUBST: S = ]})
: elseif you.depth() == dgn.br_depth(you.branch()) then
SUBST: S = [{(
: else
SUBST: S = ]})[{(
: end
NSUBST: p = c / ., q = c / ., r = c / ., s = c / .
COLOUR: n = lightgreen
TILE:   n = dngn_transparent_stone_green
MAP
 .....   .....
...cc.....cc...
..c..c..nc..c..
.q.q.c..cn.s.s.
..c....S....c..
.p.p.nc..c.r.r.
..c..cn..c..c..
...cc.....cc...
 .....   .....
ENDMAP

NAME:    nicolae_snake_slithering_moat
TAGS:    no_pool_fixup transparent extra snakedec luniq_snakedec_liquid
DEPTH:   Snake
SHUFFLE: apqrsyz-
SUBST:   a = @, pqrsyz- = w
MAP
  wsw.waw
  r.y.-.p
  w.wzw.w
  q.....q
wpw.ccc.wrw
a...ccc...s
w-w.ccc.wyw
  z.....z
  w.wqw.w
  y.r p.-
  wsw waw
ENDMAP

NAME:   nicolae_snake_striped_snake_set
TAGS:   transparent snakedec extra
DEPTH:  Snake
MAP
 ccc.@.bbb
bb.bb.cc.cc
b...b+c...c
@..cc.bb..@
..bc...bc..
..b.....c..
..bc...bc..
@..cc.bb..@
b...b+c...c
bb.bb.cc.cc
 ccc.@.bbb
ENDMAP

NAME:   nicolae_snake_to_our_wiggly_heroes
TAGS:   transparent snakedec extra
DEPTH:  Snake
KFEAT:  F = G
NSUBST: J = c / ., K = c / ., L = c / ., M = c / ., N = c / ., O = c / ., \
        P = c / ., Q = c / .
SUBST:  c : cbn, T = TTTU
TILE:   F : dngn_statue_archer
TILE:   G : dngn_statue_naga
COLOUR: n = lightgreen
TILE:   n = dngn_transparent_stone_green
MAP
   .......
   ..J.K..
   .c.c.c.
...c.J.K.c...
..c.F...G.c..
.Q.Q.....L.L.
..c...T...c..
.P.P.....M.M.
..c.G...F.c..
...c.O.N.c...
   .c.c.c.
   ..O.N..
   .......
ENDMAP

NAME:    nicolae_snake_two_snakes_lying_around
TAGS:    transparent snakedec extra
DEPTH:   Snake
SHUFFLE: DE, FH
SUBST:   DF = c, EH = .
MAP
 ..........
..cE.DD.Ec..
.c..c..c..c.
.c..c..c..c.
..cD.EE.Dc..
............
..cF.HH.Fc..
.c..c..c..c.
.c..c..c..c.
..cH.FF.Hc..
 ..........
ENDMAP

NAME:    nicolae_snake_wiggly_hallway
TAGS:    transparent snakedec extra luniq_snakedec_glass
DEPTH:   Snake
SHUFFLE: TG
SUBST:   G : GG., T : TT.
COLOUR:  n = lightgreen
TILE:    n = dngn_transparent_stone_green
MAP
      .......@@@............
    ccncc...........ccncc......
ccccc...ccncc...ccncc...ccncc...ccccc
@.....T.....ccncc.....T.....ccncc...@
@.........G.......G.......G.........@
@...ccncc.....T.....ccncc.....T.....@
ccccc...ccncc...ccncc...ccncc...ccccc
      ......ccncc...........ccncc
         ............@@@.......
ENDMAP

NAME:   nicolae_snake_wiggly_wall
TAGS:   transparent snakedec extra luniq_snakedec_glass
DEPTH:  Snake
COLOUR: n = lightgreen
TILE:   n = dngn_transparent_stone_green
MAP
           ..@..
       .............
   .........cnc.........
........cnc.c.c.cnc..........
....cnc.c.c.c.c.c.c.cnc......
cn+nc.+.c.+.c.+.c.+.c.+.cn+nc
......cnc.c.c.c.c.c.c.cnc....
..........cnc.c.c.cnc........
     .........cnc.........
         .............
             ..@..
ENDMAP

NAME:   nicolae_snake_widesinders
TAGS:   transparent snakedec extra
DEPTH:  Snake
SUBST:  p : p...
: decorative_floor(_G, '?', "garden patch")
MAP
       ....
      ..cc..
      .c..c.
      .c......
   .....c..cc..
  ..cc..c.c..c.
  .cp.cc..c......
  .c.......c..cc..
....c..cc..c.c..c.
.c..c.c..cc..c....
..cc..c.......c.
 ......c..cc.pc.
   .c..c.c..cc..
   ..cc..c.....
    ......c.
      .c..c.
      ..cc..
       ....
ENDMAP

NAME:   nicolae_snake_yet_another_squirming_detour
TAGS:   transparent snakedec extra luniq_snakedec_glass
DEPTH:  Snake
NSUBST: D = c / ., E = c / ., F = c / ., H = c / ., J = c / ., K = c / ., \
        L = c / ., M = c / ., N = c / ., O = c / ., P = c / ., Q = c / .
COLOUR: n = lightgreen
TILE:   n = dngn_transparent_stone_green
MAP
    ........
... .HcncF..n
.JccccH.FcE.c
.cJ......Ec.c.@
.n..Lccn..n.cQ.
.cK.cL...Dc.Qc.
.Kc.n..nccD..n.
@.c.cM......Pc.
  c.McN.OccccP.
  n..NcncO. ...
   ........
ENDMAP

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

NAME:   minmay_snake_pond
TAGS:   transparent no_monster_gen
KMONS:  1 = black mamba w:20 / mana viper w:5 / shock serpent w:5
KMONS:  2 = anaconda / sea snake
KFEAT:  1 = W
KFEAT:  2 = w
SUBST:  W = WWW1, w = wwwwwWWWW2
MAP
  wwww
 WwwWww
wwWWwwWw
wWwwWWww
wWwwwwWw
wwwWwWww
 wWwWww
  wwww
ENDMAP

NAME:   minmay_snake_river
TAGS:   no_monster_gen generate_awake no_descent
ORIENT: south
KITEM:  2 = * / nothing
KITEM:  3 = |
KMONS:  1 = sea snake / anaconda / nothing w:20
KMONS:  23 = sea snake / anaconda
SUBST:  w = wwW
KPROP:  12 = no_tele_into
MAP
xxxxxxxxxxxxxxxxxxxxxx..@..xxxxxxxxxxxxxxxxxxxx..@.xxxxxxxxxxxxxxxxxxx
xx211xxxxxxxxxxxxxxwwwWWWWWwwwwxxxxxxxxxxxxxwwwWWWWwwxxxxxxxxxxx112xxx
xx311wwwwxxxxxwwwwwwwwwxxxxxwwwwwwwwxxxxwwwwwwxxxxwwwwwwxxxxxxww113xxx
xx211xwwwwwwwwwwwwxxxxxxxxxxxxxwwwwwwwwwwwwxxxxxxxxxxxwwwwwwwwwx112xxx
xxxxxxxxxxwwwwwxxxxxxxxxxxxxxxxxxxwwwwwwwxxxxxxxxxxxxxxxxwwwwxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   hangedman_venom_bottle
TAGS:   patrolling transparent
WEIGHT: 5
KMONS:  123 = black mamba / nothing
KMONS:  4 = guardian serpent
KMONS:  5 = naga mage / nothing
KITEM:  1235 = potion of moonshine w:20 pre_id / scroll of poison /\
               nothing w:20
KITEM:  4 = any weapon good_item ego:venom q:1 / \
            any weapon good_item ego:venom q:2
KFEAT:  1234 = shallow_water
KMASK:  123 = no_monster_gen
COLOUR: 1234 = lightgreen
SUBST:  1 = 1 2:1 3:1
MARKER: 2 = lua:fog_machine { cloud_type = "poison gas", pow_min = 5, \
                pow_max = 30, delay = 30, size = 2, walk_dist = 2 }
MARKER: 3 = lua:fog_machine { cloud_type = "noxious fumes", pow_min = 5, \
                pow_max = 20, delay = 40, size = 3 }
MAP
     ...
    .....
   ..===..
  ..m=2=m..
  ..mm1mm..
 ..mm111mm..
..mm11111mm..
..mm11111mm..
..mm11411mm..
..mm11111mm..
..mmm111mmm..
 ..mmmmmmm..
  ....5....
   .......
ENDMAP

NAME:   nicolae_snake_lava_pool
TAGS:   transparent no_monster_gen
SUBST:  L = l1, 1 = 1....
MONS:   black mamba w:30 / anaconda / mana viper / shock serpent w:5
KMONS:  l = salamander w:30 / salamander mystic / salamander tyrant w:5 \
        / nothing w:400
KFEAT:  l = lava
MAP
    .......
  ...........
 .............
 .....111.....
.....1LLL1.....
....1LlllL1....
...1LlllllL1...
...1LlllllL1...
...1LlllllL1...
....1LlllL1....
.....1LLL1.....
 .....111.....
 .............
  ...........
    .......
ENDMAP

NAME:   nicolae_snake_springs
TAGS:   transparent no_monster_gen
SUBST:  W = w1, 1 = 1....
MONS:   black mamba w:30 / anaconda / mana viper / shock serpent w:5
KMONS:  w = sea snake / nothing w:90
KFEAT:  w = deep_water
MAP
    .......
  ...........
 .............
 .....111.....
.....1WWW1.....
....1WwwwW1....
...1WwwwwwW1...
...1WwwwwwW1...
...1WwwwwwW1...
....1WwwwW1....
.....1WWW1.....
 .....111.....
 .............
  ...........
    .......
ENDMAP

NAME:    nicolae_sea_snake_s
TAGS:    no_monster_gen
DEPTH:   Snake:2-, !Snake:$
ORIENT:  float
MONS:    naga mage, naga
KMONS:   q = w:15 sea snake / w:5 nothing
KFEAT:   q = w
SHUFFLE: {[(
SHUFFLE: (<
MAP
xxxwwwwwwwxxxxxx
@..wwwqwww.....xx
@...wwwww.......xx
@....wqw.........x
x..2.www....x....x
xx...wqw...xxx...x
 x...www...xxx...x
 x.2.wqw...xxx...x
 x...www...xxx...x
 x...wqw...xxx...x
 x.2.www...xxx...x
 x....w....xxx...x
 x.........xxx{.[x
 xx...1...xxxx...x
  xx.....xx  xx(xx
   xxxxxxx    xxx
ENDMAP

NAME:  nicolae_snake_horde_hoard
TAGS:  no_monster_gen
KITEM: s = $ / nothing w:25 / * w:1
KMONS: s = black mamba w:35 / anaconda / mana viper / shock serpent \
           / sea snake w:5 / nothing w:100
MAP
 xxxxxxx
xxsssssxxxxxx
xssssssss=..@
xssssssss=.0@
xssssssss=..@
xxsssssxxxxxx
 xxxxxxx
ENDMAP

NAME:    nicolae_cobra_stairs
TAGS:    no_pool_fixup patrolling
DEPTH:   Snake:2-, !Snake:$
ORIENT:  float
MONS:    guardian serpent, nagaraja, naga mage, naga warrior
SHUFFLE: }])
SUBST:   ) = >>)
MAP
       xxxxxxxx
     xxx......xx
   xxx..4.www.2xx
xxxx.9....w3w...x
@.....wwwwwWw...xx
@..0.ww.....1...}x
@..0.W.4.4.3.2..]x
@..0.ww.....1...)x
@.....wwwwwWw...xx
xxxx.9....w3w...x
   xxx..4.www.2xx
     xxx......xx
       xxxxxxxx
ENDMAP

NAME:   nicolae_snake_hallway
ORIENT: float
MONS:   naga, naga warrior
MONS:   naga mage w:25 / nagaraja w:5
SUBST:  A : @xx
SUBST:  B : @xx
SUBST:  C : @xx
SUBST:  T : TTTVVUY
MAP
             xxxxxx
           xxx.G.GxxxxxAAxx
xxx      xxx.G..1..Gxx.1..xxx
@Gxxx  xxx.G....1....G...T..xx
@..Gxxxx.G.2...G.G.....3...1.C
@..1.G.G.3.2.Gxxxx.G...3...1.C
@G.1...2.3.Gxxx  xxx.G...T..xx
xx.G...2.Gxxx      xxx.1..xxx
 xxx.G.Gxxx          xxBBxx
   xxxxxx
ENDMAP

# The disgraced guardian serpent Aizul has been
# demoted to watching the stairs.
NAME:    nicolae_aizul_guard
TAGS:    no_rotate no_hmirror no_vmirror transparent
DEPTH:   Snake:2-, !Snake:$
ORIENT:  float
: if you.absdepth() > 14 then
KMONS:   D = patrolling Aizul, patrolling nagaraja
KMONS:   E = guardian serpent / nagaraja
: else
KMONS:   D = patrolling Aizul, patrolling guardian serpent
KMONS:   E = naga mage / guardian serpent
: end
SHUFFLE: ]})>
SUBST:   ) = )>, z : cxx, c : ccx
NSUBST:  E = D / E
TILE:    c = wall_stone_magic_shelf
MAP
 xxx.@.xxx
xz.E...E.cx
x.........x
xE.......Ex
....].>....
@.........@
....).}....
xE.......Ex
x.........x
xc.E...E.zx
 xxx.@.xxx
ENDMAP

NAME:   nicolae_snake_shapes
TAGS:   no_pool_fixup transparent
NSUBST: 0 = 2=9 / 1=8 / 0
SUBST:  x : xcvmlwWb
MAP
      .....
   ...........
 ......xxx......
 .......0x.......
...xxx..xx..xxx...
....0x..x0...0x...
....xx..xxx..xx....
 ...x0...0x..x0....
 ...xxx..xx..xxx...
  .......x0.......
   ......xxx......
     ...........
        .....
ENDMAP

NAME:   nicolae_snakescales
ORIENT: float
SUBST:  0 = 0., 9 = 9., 8 = 8.
MAP
        xxx       xxx       xxx
       x...x     x...x     x...x
      x.....x   x.....x   x.....x
   xxx...0...xxx...9...xxx...0...xxx
  x...x.....x...x.....x...x.....x...x
 x.....x...x.....x...x.....x...x.....x
x...0...xxx...9...xxx...9...xxx...0..x
 x.....x...x.....x...x.....x...x.....x
  x...x.....x...x.....x...x.....x...x
   xxx...0...xxx...8...xxx...0...xxx
  x...x.....x...x.....x...x.....x...x
 x.....x...x.....x...x.....x...x.....x
x...0...xxx...9...xxx...9...xxx...0..x
 x.....x...x.....x...x.....x...x.....x
  x...x.....x...x.....x...x.....x...x
   xxx...0...xxx...8...xxx...0...xxx
  x...x.....x...x.....x...x.....x...x
 x.....x...x.....x...x.....x...x.....x
x...0...xxx...9...xxx...9...xxx...0..x
 x.....x...x.....x...x.....x...x.....x
  x...x.....x...x.....x...x.....x...x
   xxx...0...xxx...9...xxx...0...xx
      x.....x   x.....x   x.....x
       x...x     x...x     x...x
        xxx       xxx       xxx
ENDMAP

NAME:    guppyfry_snake_island
TAGS:    transparent
MONS:    plant
SUBST:   . = . W:1 1:1, - = . W:3 0:1 ~:1 %:1
SHUFFLE: 0~
SUBST:   ~ = .
MAP
@.WWWWWWWW.@
.WWW.....WW.
WWW--WW-00WW
WW..WWWW..WW
WWW--WWWW~WW
WWWW..WWWWWW
WWWWW--WWWWW
W~WWWW..WWWW
W--WWWW--WWW
WW..WW..WWWW
.WW----WWWW.
@.WWWWWWWW.@
ENDMAP

####

NAME:    hangedman_snake_corridor_cut
TAGS:    no_monster_gen transparent
MONS:    naga, patrolling naga mage
MONS:    anaconda / mana viper / shock serpent w:5, patrolling guardian serpent
MONS:    patrolling black mamba
SHUFFLE: hH / hH / hH, iI / iI / Ii, jJ / jJ / Jj, kK / kK / Kk
SHUFFLE: 1234 / 1234 / 1212 / 3434
SUBST:   hijk = ., H : xx., I : xx., J : xx., K : xx., % = $%
FTILE:   .1234$% = floor_mystic_chasm
FTILE:   @5 = floor_rough_lightblue
MAP
xxxxxxxxx@5@xxx
xccccccccc...xxx
xc*2%...KxJ...xxx
xc2*1...xxx.j..xxx
xc%1....JxKk....xxx
xcHxI.....kKxJ...xx
@cxxx.i1.j.xxx.j..x
5.IxHh..%..JxKk...@
@...hHxI.1%..kKxJ.5
x..i.xxx.i3.j.xxxc@
xx...IxHh..%..JxKcx
xxx....hHxI.3....cx
 xxx..i.xxx.i....cx
  xxx...IxHh.....cx
   xxx....hHxI.3%cx
    xxx..i.xxx3*4cx
     xxx...IxH%4*cx
      xxx...ccccccx
       xxx@5@xxxxxx
ENDMAP

NAME:    hangedman_snake_corridor_split
TAGS:    no_monster_gen transparent allow_dup
MONS:    naga, black mamba, naga warrior, anaconda, naga mage, guardian serpent
KFEAT:   z = c
SUBST:   X : xxc, Y : x:33 c:66 w:1, 0 = 12, z : zzzcx
SHUFFLE: 34, 56, 3456 / 3456 / 3456 / 3535 / 4646 / 3636 / 4545 / 3434 / 5656
TILE:    z = wall_stone_magic_shelf
MAP
    xxxxxxx
   xxxxxxxxx
  xxxx...xxxx
xxxxx..X..xxxx
xxxx..X%X.3xxxxx
xx1..X%..X.4xxxx
xx2YY..x..X.0.zxxxxxxxx
x..YY.xxx..YY.xzxxxxxxx.@.
..X.21xxxx.*Y...xxxxxx..X@
@X..xxxxxx...Y*.xxxx12.X..
.@.xxxxxxxzx.YY..xxx.YY..x
   xxxxxxxxz.0.X..x..YY2xx
          xxxx6.X..%X..1xx
          xxxxx5.X%X..xxxx
            xxxx..X..xxxxx
             xxxx...xxxx
              xxxxxxxxx
              xxxxxxxx
ENDMAP

NAME:    nicolae_snake_salamander_stairs
TAGS:    no_monster_gen no_descent
DEPTH:   Snake, !Snake:$
: if you.depth() < 2 then
KMONS:   1 = salamander mystic / salamander tyrant w:5
KMONS:   2 = salamander / salamander mystic w:1 / nothing w:80
: elseif you.depth() < 3 then
KMONS:   1 = salamander mystic / salamander tyrant
KMONS:   2 = salamander / salamander mystic w:2 / nothing w:50
: else
KMONS:   1 = salamander tyrant
KMONS:   2 = salamander / salamander mystic w:5 / nothing w:45
: end
KFEAT:   12 = l
SHUFFLE: ])}
NSUBST:  ' = 1 / l, D = 2=. / x, E = 2=. / x, F = @ / .
SUBST:   L = l.
MAP
 xxxxxxxxxx
xx2222L.D.EF
x.'222L.D.EF
x]''22L.D.EF
x.'222L.D.EF
xx2222L.D.EF
 xxxxxxxxxx
ENDMAP

NAME:   cheibrodos_snake_lava_hold
TAGS:   no_item_gen no_monster_gen patrolling
DEPTH:  Snake, !Snake:$
ORIENT: float
KFEAT:  DEF = lava
KMONS:  D = salamander
KMONS:  E = salamander mystic
KMONS:  F = salamander tyrant
SUBST:  E = El, H = EEEF, D = Dl
NSUBST: ' = '''l
TILE:   c = wall_stone_scorched
MAP
    ccccccccccccccc
   ccccccccccccccccc
  cccEcDcDcDcDcDcDccc
 cccEl.............ccc
 ccHl..lclclc.......cc
cccl..lccccclc..clc..c
ccHl..lc*$*ccl.clllc.+@
ccFl....$|$Gcc.lllll.+@
ccHl..lc*$*ccl.clllc.+@
cccl..lccccclc..clc..c
 ccHl..lclclc.......cc
 cccEl.............ccc
  cccEcDcDcDcDcDcDccc
   ccccccccccccccccc
    ccccccccccccccc
ENDMAP

NAME:   cheibrodos_snake_ritualist_ritual
TAGS:   no_item_gen no_monster_gen no_pool_fixup patrolling transparent
DEPTH:  Snake, !Snake:$
ORIENT: float
MONS:   naga mage / mana viper
KMONS:  - = naga ritualist
KITEM:  - = any good_item / any amulet
MAP
...........
.wwwwwwwww.
.w1.....1w.
.w.ww.ww.w.
.w.w...w.w.
@..w.-.w..@
.w.w...w.w.
.w.ww.ww.w.
.w1.....1w.
.wwwwwwwww.
...........
ENDMAP

NAME:   cheibrodos_toxic_ritual
TAGS:   no_item_gen no_monster_gen transparent
ORIENT: float
MONS:   green death, naga ritualist, naga mage, naga
NSUBST: - = 2=2 / ., _ = 2=2 / ., ' = 3 / 2=4 / 3=34 / .
NSUBST: " = | / 3=* / 4=$%
MAP
.............
..ccc...ccc..
.cc"cc.cc"cc.
.c"""ncn"""c.
.c'''''''''c.
.c'''''''''c.
.c---c=c___c.
.c-1-n.n_1_c.
.ccAcc.ccAcc.
..ccc...ccc..
......@......
ENDMAP

NAME:    nicolae_snake_attic_fulla_snakes
TAGS:    no_descent
DEPTH:   Snake, !Snake:$
ORIENT:  northeast
KITEM:   2 = *
KITEM:   3 = |
KITEM:   4 = $
KMONS:   123 = anaconda / black mamba / shock serpent / mana viper / \
         sea snake / water moccasin
KMONS:   4 = guardian serpent
SUBST:   ' = 1 .:25, c : ccx
SHUFFLE: }])
TILE:    c = wall_stone_magic_shelf
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcxxx
xxxxxxxxxx'''''xxxxxxxxxxxxx.4%%*xx
xxxxxxxx'''''''''xxxxxxxxx''.4%*|cx
xxxxxxx'''''''''''xxxxxxx'''.4%%*xx
xxxxx.'''''xxx''''''xxx'''''.xxcxxx
x.....'''xxxxxxx'''''''''''xxxxxxxx
x.}...''xxxxxxxxx'''''''''xxxxxxxxx
x.....xxxxxxxxxxxxx'''''xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP


NAME:   nicolae_snake_boneroom
TAGS:   transparent
MONS:   naga ritualist band / naga sharpshooter band / naga warrior band / \
        naga mage band / nagaraja w:5
KFEAT:  z = c
NSUBST: E = . / 1, F = . / 1, q = | / 2=* / 3=% / $.
FTILE:  .$%*|1+ : floor_mystic_chasm / floor_mosaic
TILE:   z = wall_stone_magic_shelf
MAP
xxx+xxxxxxxxxxxxxxxxxxxxxxx
xcc.ccccccccccccccccccccccx
xcc.ccc.c.c.c.c.c.c.c.c.ccx
xc...c...................cx
xcc.ccc.E.c.c..E..c.c.E.ccx
xc...c....ccc.....ccc....cx
xcc.ccc.ccc.ccc.cccqccc.ccx
xc...cq.qc...c...cq.qc...cx
xcc.ccz.zcc.c+c.ccz.zcc.ccx
xc...cq.qc...c...cq.qc...cx
xcc.cccqccc.ccc.ccc.ccc.ccx
xc....ccc.....ccc....c...cx
xcc.F.c.c..F..c.c.F.ccc.ccx
xc...................c...cx
xcc.c.c.c.c.c.c.c.c.ccc.ccx
xcccccccccccccccccccccc.ccx
xxxxxxxxxxxxxxxxxxxxxxx+xxx
ENDMAP

NAME:   nicolae_snake_bzzzt
KMONS:  1 = electric eel
KMONS:  2 = shock serpent
KFEAT:  1 = w
SUBST:  S = w', E = x'
NSUBST: w = 2=1 / 4=1www / w, ' = 2=2 / 4=2... / .
MAP
   xxxxxxx
  xxwwwwwxx
 xxwwSSSwwxx
xxwwSS'SSwwxx
xwwSS'''SSSwx
@..''EEE''Swx
@..''EEE''Swx
xwwSS'''SSSwx
xxwwSS'SSwwxx
 xxwwSSSwwxx
  xxwwwwwxx
   xxxxxxx
ENDMAP

NAME: nicolae_snake_coiling_death
TAGS: transparent
MONS: naga sharpshooter band
MONS: naga warrior band / naga mage band / naga ritualist band
MAP
       cccc  cccc  cccc
      cc..cccc..cccc..cc
    ..c....cc....cc....c
   ..c.....c.....c.....c.
  ..c.....c.....c.....c..
@..c..2..c..1..c..2..c..@
..c.....c.....c.....c..
.c.....c.....c.....c..
 c....cc....cc....c..
 cc..cccc..cccc..cc
  cccc  cccc  cccc
ENDMAP

NAME:    nicolae_snake_crotalidae_crossing
TAGS:    transparent
ORIENT:  float
KMONS:   0 = 0 / 0 band
KFEAT:   z = c
: if you.depth() == 1 then
SUBST:   S = )}]
: elseif you.depth() ~= dgn.br_depth(you.branch()) then
SUBST:   S = (){}[]
: else
SUBST:   S = ({[
: end
SHUFFLE: DE
SUBST:   D = c, E = ., 0 = 00.
TILE:    z = wall_stone_magic_shelf
MAP
@.0.cc                 cc.0.@
.....cc               cc.....
0.cE..cc             cc..cc.0
..cE...cc           cc..DEE..
c..DcE..cc         cc...c...c
cc...Dc..cc       cc...DE..cc
 cc...ED..cc     cc...Ec..cc
  cc...c...cc   cc..EcD..cc
   cc..ED...cc cc..cD...cc
    cc..cE...ccc..DE...cc
     cc..DcE..z...c...cc
      cc...Dc...DDE..cc
       cc..Dc.0.cc..cc
        cc.........cc
         cz.0.S.0.zc
        cc.........cc
       cc..cc.0.cD..cc
      cc..EDD...cD...cc
     cc...c...z..EcD..cc
    cc...ED..ccc...Ec..cc
   cc...Dc..cc cc...DE..cc
  cc..DcE..cc   cc...c...cc
 cc..cE...cc     cc..DE...cc
cc..ED...cc       cc..cD...cc
c...c...cc         cc..EcD..c
..EED..cc           cc...Ec..
0.cc..cc             cc..Ec.0
.....cc               cc.....
@.0.cc                 cc.0.@
ENDMAP

NAME:   nicolae_snake_dead_anacondas
TAGS:   no_pool_fixup transparent no_monster_gen patrolling
KMONS:  1 = anaconda zombie
KMONS:  2 = anaconda zombie w:5 / spectral anaconda / anaconda simulacrum
KFEAT:  2 = W / . w:30
NSUBST: D = 2=% / 2=* / *| / -'
# About 18.5 snek on-average.
SUBST:  ' = 2:40 W .:50, - = xwW.
MAP
  xxxxxxx
 xxxxxxxxx..@
xxxDDD--xx...x
xxDD''''-xx1.x
xxD''''''.+..x
xxD''''''-xxxx
xxD''''''-xxxx
xxD''''''.+..x
xxDD''''-xx1.x
xxxDDD--xx...x
 xxxxxxxxx..@
  xxxxxxx
ENDMAP

NAME:    nicolae_snake_ghostly_warrior_ritual
TAGS:    patrolling transparent
MONS:    naga ritualist / naga mage, naga warrior
MONS:    phantasmal warrior / spectral naga warrior w:3
SUBST:   D : bc, E : bc
NSUBST:  F = 3=2 / 3=3 / 23
MAP
..............
......EE......
..DDWWEEWWDD..
..DD......DD..
..W..F.F...W..
..W......F.W..
.EE.F.1....EE.
.EE......F.EE.
..W.F......W..
..W...F.F..W..
..DD......DD..
..DDWWEEWWDD..
......EE......
..............
ENDMAP

NAME:   nicolae_snake_guarding_the_ruins
TAGS:   patrolling transparent
MONS:   naga / salamander / nothing w:5, naga warrior band
NSUBST: D = . / x, E = . / x, F = . / x, H = . / x, J = . / x, K = . / x, \
        L = . / x, M = . / x, N = . / x, O = . / x, P = . / x, Q = . / x
SUBST:  x = x:30 .
TILE:   c : wall_stone_scorched / stone_wall_snake
MAP
cc...........cc
ccDDDcJJJcEEEcc
.D...J...J...E.
.D.1.J.1.J.1.E.
.D...J...J...E.
.cMMMcNNNcKKKc.
.M...Q...O...K.
.M.1.Q.2.O.1.K.
.M...Q...O...K.
.cMMMcPPPcKKKc.
.H...L...L...F.
.H.1.L.1.L.1.F.
.H...L...L...F.
ccHHHcLLLcFFFcc
cc...........cc
ENDMAP

# Noun, herptile (plural herptiles)
# 1. (zoology, chiefly ecology) A reptile or amphibian.
# - Wiktionary
NAME:   nicolae_snake_herptile_family_reunion
TAGS:   no_pool_fixup patrolling transparent
MONS:   anaconda / black mamba / shock serpent / mana viper / sea snake / \
        guardian serpent
MONS:   goliath frog, alligator, snapping turtle, alligator snapping turtle
MONS:   hydra
NSUBST: D = 2 / 3 / 4 / 5 / E.
SUBST:  - = x:25 .:25 w W E:5, E = 1:80 2345 .:80
MAP
                xxxxxxxx
            xxxxxx----xxxxxx
        xxxxxxxxx-..D.-xxxxxxxxx
    xxxxxxxxxxxxx-.--.-xxxxxxxxxxxxx
xxxxxx----xxxxxx-..xx..-xxxxxx----xxxxxx
xxx---....---xxx-DxxxxD-xxx---....---xxx
x--...E..E...--x-.-xx-.-x--...E..E...--x
-.E.x-....-x.D.-.E.--...-.D.x-....-x.E.-
..-xxx----xxx-.....--.6...-xxx----xxx-.@
@.-xxx----xxx-...6.--.....-xxx----xxx-..
-.E.x-....-x.D.-...--.E.-.D.x-....-x.E.-
x--...E..E...--x-.-xx-.-x--...E..E...--x
xxx---....---xxx-DxxxxD-xxx---....---xxx
xxxxxx----xxxxxx-..xx..-xxxxxx----xxxxxx
    xxxxxxxxxxxxx-.--.-xxxxxxxxxxxxx
        xxxxxxxxx-.D..-xxxxxxxxx
            xxxxxx----xxxxxx
                xxxxxxxx
ENDMAP

NAME:    nicolae_snake_mages_go_home
TAGS:    transparent
MONS:    mana viper
MONS:    naga w:20 ; any weapon ego:antimagic / \
         naga warrior ; any weapon ego:antimagic / \
         salamander ; any weapon ego:antimagic
SHUFFLE: DE/FH
SUBST:   M = 1:30 2:5 .:80, N = 2:30 1:5 .:80
SUBST:   D = c, E = %:30 *:20 .:40, FH = .:100 1 2
MAP
  xxxbbb@@@bbbxxx
 xxbbbM.N.N.Mbbbxx
xxbb.M.N.N.N.M.bbxx
xbbE..MFFFFFM..Ebbx
xbDDDDD.HFH.DDDDDbx
xbE.M.N.HFH.N.M.Ebx
xbEM.N.NHFHN.N.MEbx
xbE.M.N.HFH.N.M.Ebx
xbDDDDD.HFH.DDDDDbx
xbbE..MFFFFFM..Ebbx
xxbb.M.N.N.N.M.bbxx
 xxbbbM.N.N.Mbbbxx
  xxxbbb@@@bbbxxx
ENDMAP

NAME:    nicolae_snake_magic_snake_eye
TAGS:    patrolling transparent
MONS:    naga mage / naga ritualist / naga sharpshooter / salamander mystic
MONS:    nagaraja / salamander tyrant
MONS:    naga mage band / naga ritualist band / naga sharpshooter band / \
         salamander mystic band
ITEM:    any book, any wand / any magical staff, any jewellery / any wand
ITEM:    any scroll, any potion
KITEM:   $ = $ no_pickup
SHUFFLE: dD / eE / fF / gG, gG / hH
SUBST:   D = ., E = ., F = ., G = g.., H = h..
NSUBST:  J = 1 / 2=1.. / 3 / ., K = 2=1 / 2=1.. / 2 / 3 / .
NSUBST:  L = 2=1 / 2=1.. / 2 / 3 / .
FTILE:   .$defgh123+ = floor_mystic_chasm
: snake_statue_setup(_G, "Z")
MAP
xxxxxxx       xxxxxxx
xxxxxccccc+cccccxxxxx
xxxxcc$Ddc.ceE$ccxxxx
xxxcc$KDcc.ccEL$ccxxx
xxcc$...c...c...$ccxx
xxc..K.cc.J.cc.L..cxx
xcc....c.....c....ccx
xc..K..c..J..c..L..cx
xc.....c..J..c.....cx
xc..K..+..Z..+..L..cx
xc.....c..J..c.....cx
xc..K..c..J..c..L..cx
xcc....c.....c....ccx
xxc..K.cc.J.cc.L..cxx
xxcc$...c...c...$ccxx
xxxcc$KFcc.ccGL$ccxxx
xxxxcc$Ffc.cgG$ccxxxx
xxxxxccccc+cccccxxxxx
xxxxxxx       xxxxxxx
ENDMAP

NAME:   nicolae_snake_naga_rites
TAGS:   patrolling transparent
KMONS:  1* = black mamba w:15 / mana viper / anaconda w:5
KMONS:  2 = naga ritualist
KMONS:  3 = naga ritualist band
KITEM:  2 = |
KITEM:  * = *
# Seven 1s on-average.
SUBST:  S = 2...
FTILE:  .123*+ = floor_mystic_chasm
MAP
 xxxxxxxxxxxxx
 xxxxxcccccxxx
 xxxxxcSSScxxx
 xxxccc.c.cccxxxxxxxxxxxxx
xxxxcS..S..Scccccccccxxxxx
'Gccc.cScSc.ccc1...1cccccx
''c...S.S.S..Sc.....c%**cx
@'+.cScSc1cScS+..3..+%*2cx
''c...S.S.S..Sc.....c%**cx
'Gccc.cScSc.ccc1...1cccccx
xxxxcS..S..Scccccccccxxxxx
 xxxccc.c.cccxxxxxxxxxxxxx
 xxxxxcSSScxxx
 xxxxxcccccxxx
 xxxxxxxxxxxxx
ENDMAP

NAME:    nicolae_snake_omega
TAGS:    no_pool_fixup transparent
# It is intentional that sometimes the front doors merge into a big 1x4 door.
SHUFFLE: MNO
SUBST:   D : GTUw%0., E : GTUw%0., F : GTUw%0., H : GTUw%0., J : GTUw%0.
SUBST:   M : +, N : 0, O : ., 0 = 0009., 9 = 9998., % = %:70 *:30 .:20 |
SUBST:   w : w:50 l
MAP
  cccc.@.cc
 cc%Fcc...cc
 cE...cc.0Hc
cc..0..cc.cc
cD.9w0..c+cJ
c%9www..MNO@
c%9www..MNO@
cD.9w0..c+cJ
cc..0..cc.cc
 cE...cc.0Hc
 cc%Fcc...cc
  cccc.@.cc
ENDMAP

NAME:    nicolae_snake_salamander_fort
TAGS:    patrolling transparent
KMONS:   1 = salamander tyrant band
KMONS:   2 = salamander / salamander mystic w:5
KFEAT:   12 = l
SHUFFLE: DEFH, EFHJKLMNOPQRSZa, pqrsy
SUBST:   D : ., EFHJKpq : v, LMNOPrs : l, Q : lv, R : lv, S : lv, Z : lv
SUBST:   a : lv, y : lv, * = **|, ~ = 2 l:6
MAP
..............
.vvDDEEFFHHvv.
.v....~l....v.
.a.~l....l~.J.
.a.lvvvvvvl.J.
.Z..q****r..K.
.Zl.q.1l.r.~K.
.S~.p.ll.s.lL.
.S..p....s..L.
.R.lv..yyvl.M.
.R.~l....l~.M.
.v....l~....v.
.vvQQPPOONNvv.
..............
ENDMAP

NAME:   nicolae_snake_salamander_jacuzzi
TAGS:   transparent
KMONS:  L = salamander
KFEAT:  L = l
NSUBST: D = + / +c / +cc
SUBST:  l = Ll, E : cGl
TILE:   c = wall_stone_scorched
MAP
xx           xx
xxx         xxx
 xxxcccDcccxxx
  xccc...cccx
  ccE.....Ecc
  cc.......cc
  c...lll...c
  +...lll...D
  c...lll...c
  cc.......cc
  ccE.....Ecc
  xccc...cccx
 xxxcccDcccxxx
xxx         xxx
xx           xx
ENDMAP

NAME:  nicolae_snake_salamander_zone
TAGS:  transparent
KITEM: 2 = *
KITEM: 3 = |
KMONS: 1S = salamander
KMONS: 2 = salamander / nothing w:5
KMONS: 3 = salamander mystic
KFEAT: S = l
SUBST: l = l:170 S
MAP
          v
       ...v...
     ...llvll...
   @..lllllllll..@
   .llllllvllllll.
  ..llllvvv..llll..
  .lllvvv3v....lll.
 ..lllv222v.1..lll..
 .lllvv%%%v..1..lll.
 .lllv$$$vv.....lll.
vvvlv+vvvv+v+vvvvlvvv
 .lll.....vv.llllll.
 .lll.1...v.1.lllll.
 ..lll.1..vl...lll..
  .lll..1.vll...ll.
  ..llll..vlll.....
   .llllllvllll...
   @..lllllllll..@
     ...llvll...
       ...v...
          v
ENDMAP

# A little treat for the intersection of the "Herpetology"/"DCSS" Venn diagram
# Layout adapted from graphics of snake head scales found at
# https://www.virginiaherpetologicalsociety.com/identification-keys/ \
# id-keys-snakes/virginia_snake_identification.htm
NAME:   nicolae_snake_scaly_snakehead
TAGS:   no_pool_fixup patrolling transparent
KMONS:  12 = guardian serpent / naga w:20 / salamander / anaconda w:20 / \
             naga warrior / black mamba w:20 / mana viper / nothing w:80
KMONS:  3 = naga mage / naga ritualist / naga sharpshooter / shock serpent / \
            salamander mystic / nothing w:40
KMONS:  4 = nagaraja / salamander tyrant
KITEM:  2 = %:15 / * / |:5 / nothing w:5
NSUBST: 4 = 2=4 / 34
SUBST:  D = 13
MAP
 cccccccccccccc
 c2..c1c..2c2.ccc
ccc..c..cccc..c1ccc
c3.c.ccc.wwwcc.c.1ccc
c...c.2.cwwwc1c.cc.1c
c2.c.....cccc.c.c.cccc
ccc.4..3.c.2cc.cc.w.1c
c2c2.....c..c.D..cc.cc
c.c..D.3..ccc...c1.c.c.....l
cc.c.....c...c.2c..c..c...l.
c24.ccccc..D.cccccc.D.clll.@
cc.c.....c...c.2c1.c..c...l.
c.c..D.3..ccc...c..c.c.....l
c2c2.....c..c.D..cc.cc
ccc.4..3.c.2cc.cc.w.1c
c2.c.....cccc.c.c.cccc
c...c.2.cwwwc1c.cc.1c
c3.c.ccc.wwwcc.c.1ccc
ccc..c..cccc..c1ccc
 c2..c1c..2c2.ccc
 cccccccccccccc
ENDMAP

NAME:    nicolae_snake_shooting_gallery
TAGS:    no_pool_fixup transparent
DEPTH:   Snake, !Snake:$
ORIENT:  float
ITEM:    shortbow / orcbow / longbow w:4 / hand cannon w:1 / \
         arbalest w:6 / triple crossbow w:1
MONS:    naga sharpshooter
SUBST:   s = 1'
SHUFFLE: }])
KMASK:   1dw'+}]) = opaque
MAP
 xxxxxxxxx.@@@.xxxxxxxxx
xxxxxxxxxxx...xxxxxxxxxxx
xx.......xx...xx.......xx
xx.....................xx
xx.....................xx
xx.....................xx
xx....wwwwwwwwwwwww....xx
xx....wwwwwwwwwwwww....xx
xx....ww1'''s'''1ww....xx
xxx...ww'ccccccc'ww...xxx
.xx...ww'c'''''c'ww...xx.
@.....ww'+''s''c'ww.....@
@.....wws+''1'}csww.....@
@.....ww'+''s''c'ww.....@
.xx...ww'cdddddc'ww...xx.
xxx...ww'ccccccc'ww...xxx
xx....ww1'''s'''1ww....xx
xx....wwwwwwwwwwwww....xx
xx....wwwwwwwwwwwww....xx
xx.....................xx
xx.....................xx
xx.....................xx
xx.......xx...xx.......xx
xxxxxxxxxxx...xxxxxxxxxxx
 xxxxxxxxx.@@@.xxxxxxxxx
ENDMAP

NAME:   nicolae_snake_snakes_in_the_grass
TAGS:   transparent
KMONS:  1 = plant
KFEAT:  1 = . w:30 / W
KFEAT:  . = . w:50 / W
SUBST:  ' = 0 ':200
SUBST:  F = tt''0, - = _', ' = 1.
CLEAR:  _
MAP
    --------
  ---''''''---
 --''''''''''--
 -''''''''''''-
--''''''''''''--
-''''''''''''''-
-'''''FFFF'''''-
-'''''FttF'''''-
-'''''FttF'''''-
-'''''FFFF'''''-
-''''''''''''''-
--''''''''''''--
 -''''''''''''-
 --''''''''''--
  ---''''''---
    --------
ENDMAP

NAME:  nicolae_snake_snakewalk
TAGS:  transparent
KMONS: 0 = 0 / 0 band
KMONS: 9 = 9 / 9 band
KMONS: 8 = 8 / 8 band
KFEAT: z = c
SUBST: 0 = 00., 9 = 99.
: tile("z = " .. crackle_def(_G))
MAP
     ccccccc         ccccccc
   ccc.....ccc     ccc.....ccc
  cc....9....cc   cc....8....cc
 cc...........cc cc...........cc
cc..0.cczcc.0..ccc..0.cczcc.0..cc
cc...ccccccc...ccc...ccccccc...cc
c...ccccccccc...c...ccccccccc...c@@@ ccc
c.0.cc.ccc.cc.0.c.9.cc|ccc*cc.9.c...cc.cc
c...+...c...+...c...+...c...+...c...+...c
cc.cc...c.9.cc*ccc|cc.9.c.0.cc.ccc.cc.0.c
 ccc @@@c...ccccccccc...c...ccccccccc...c
        cc...ccccccc...ccc...ccccccc...cc
        cc..0.cczcc.0..ccc..0.cczcc.0..cc
         cc...........cc cc...........cc
          cc....8....cc   cc....9....cc
           ccc.....ccc     ccc.....ccc
             ccccccc         ccccccc
ENDMAP

NAME:  nicolae_snake_storage_room
TAGS:  patrolling transparent
KMONS: 0 = 0 / 0 band
KMONS: 9 = 9 / 9 band
KMONS: 8 = 8 / 8 band
KFEAT: z = c
SUBST: 0 = 0:50 9 .:60, 9 = 9:50 8
TILE:  z = wall_stone_magic_shelf
MAP
 cccccccc
cccccczccc
cc9..%*|cc.....@
cc.8.%*|cc......
cc..9czccc..cc..
cc..ccccc0..cc..
cc.0....0.09....
cc0....0..90....
ccccc.0.cc..0cccc
 ccccc.0cc.0cccccc
    cc9.0.0.cc||cc
    cc.9.0..cz**zc
    ccccc...cc%%cc
     ccccc..c9..cc
        cc.0..8.cc
        cc0....9cc
        cccccccccc
         cccccccc
ENDMAP

NAME:    nicolae_snake_unarmed_stairs_patrol
DEPTH:   Snake, !Snake:$
TAGS:    transparent
ORIENT:  float
MONS:    guardian serpent
MONS:    anaconda w:20 / black mamba w:20 / shock serpent / mana viper / \
         sea snake w:5
SUBST:   2 = 2:30 1:5 .:35
SHUFFLE: )]}>>
MAP
     xxxxxxxxx
  xxxxcccccccxxxx
xxxccccG222Gccccxxxx
xcccG.2.....2.Gccc.@
xc)...2.....2....c..
xc]...1..G..1....+.@
xc}...2.....2....c..
xcccG.2.....2.Gccc.@
xxxccccG222Gccccxxxx
  xxxxcccccccxxxx
     xxxxxxxxx
ENDMAP

NAME:  nicolae_snake_the_dead_are_slithering
TAGS:  transparent
DEPTH: Snake
# Only derived undead that start with "s".
KMONS: S = naga simulacrum / naga warrior simulacrum / anaconda simulacrum / \
           guardian serpent simulacrum / sea snake simulacrum
KMONS: s = naga spectre / naga warrior spectre / anaconda spectre / \
           guardian serpent spectre / sea snake spectre
SUBST: z = SSss$$....
MAP
      xxxxx
     xxx..x
    xxx...+
    xxx...x
    xxx...xxxxx
    xx.zzz.xxxxx
xx+xx.zzzzz.xxxxx
x....zzzzzzz...xx
x....zzzzzzz....x
xx...zzzzzzz....x
xxxxx.zzzzz.xx+xx
 xxxxx.zzz.xx
  xxxxx...xxx
      x...xxx
      +...xxx
      x..xxx
      xxxxx
ENDMAP

###############################################################################
#
# <<4>> Snake ending vaults
#
###############################################################################

default-depth:

# Snake Pit: the hunt
NAME:    snake_hunt
TAGS:    no_rotate
PLACE:   Snake:$
ORIENT:  northwest
MONS:    naga w:30 / salamander
MONS:    nagaraja w:20 / salamander tyrant
MONS:    guardian serpent
MONS:    naga warrior / naga sharpshooter w:5
MONS:    naga mage w:30 / naga ritualist / naga sharpshooter \
         / salamander mystic
MONS:    nagaraja / guardian serpent / salamander tyrant w:5
KITEM:   R = jade gem
KITEM:   O = serpentine rune of Zot
KFEAT:   ^ = tyrant's trap / archmage's trap
SHUFFLE: 'D / "E, 'D / 'D / FH, "E / JK
SUBST:   FHJK = x, '" = .
NSUBST:  DLE = 1:+, ^ = 1:^... / *:.
SUBST:   L = xc..++, DE = xc++
SUBST:   T : T U V .:30 b, _ : ....!x, ! = x .:2
SUBST:   1 = 1..., 2 = 2..., 3 = 3..., 4 = 44..., 5 = 55...
NSUBST:  . = 28 = 12345...... / *:., 6 = 4:6 / 2:. / * = 6.
SUBST:   - = .
SHUFFLE: 123, 45
NSUBST:  { = 1:{ / *:.
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxcccxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx'xxxccRccxxx"xxxxxxxxxxxxx
xxxxxxxxxxxxx'xx''''''c4O4c""""""xx"xxxxxxxx
xxxxxxxxxxx''''''xxxx6646466xxxx""""""xxxxxx
xxxxxxxx''''xxxxxxxx.5665665.xxxxxxxx""""xxx
xxxxxxx''xxxx''''xxx..45554..xxx""""xxxx""xx
xxxxxx''xxx''''''''xxx.666.xxx""""""""xxx""x
xxxxxx'xxx''''''''''xxxcLcxxx""""""""""xxx"x
xxxxxx''x''''''''''''xx.3.xx""""""""""""x""x
xxxxxxx'D'''''''''''''45354"""""""""""""E"xx
xxxxxxxxxx''''''''''xx.....xx""""""""""xxxxx
xxxxxxxxxxx''''''''xxxxx.xxxxx""""""""xxxxxx
xxxxxxxxxxxxx''''xxxxxx.^.xxxxxx""""xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx+xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx!.!xxxxxx..^..xxxxxx!.!xxxxxxxx
xxxxxxxxxx!..---_xx...43335...xx_---!!!xxxxx
xxxxxxxx!...---_x.11-4--3--5-22.x_---...!xxx
xxxxxxx!...2---x--11---------22--x---1...!xx
xxxxxxx!..2---_x------T...T------x_---1--!xx
xxxxxx!...2---x--2-------------1--x---1---!x
xxxxxx!..2----x---------{---------x----1---!
xxxxxx!..-----x----T---(-[---T-------------@
xxxxxx!..2----x-------ZZZZZ-------x----1---!
xxxxxxx!.-2---_x-----------------x_---1--!xx
xxxxxxx!.--2---_xx----T---T----xx_---1---!xx
xxxxxxx!.--------_xx---------xx_---------!xx
xxxxxxxx!.---------_xxx---xxx_--------..!xxx
xxxxxxxxx!-------------x-x-------------!xxxx
xxxxxxxxxx!!-------------------------!!xxxxx
xxxxxxxxxxxx!!!-----3-------3-----!!!xxxxxxx
xxxxxxxxxxxxxxx!!!!!--3-{-3--!!!!!xxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx!!!---!!!xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx!@!xxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
# Snake Pit: old level
#
NAME:   snake_pit
TAGS:   no_rotate
PLACE:  Snake:$
ORIENT: southwest
MONS:   nagaraja / salamander tyrant w:5, naga w:15 / salamander w:5
MONS:   naga mage w:30 / naga ritualist / salamander mystic / naga sharpshooter
MONS:   naga warrior / naga sharpshooter w:5
KITEM:  O = serpentine rune of Zot
KITEM:  R = jade gem
SUBST:  D = c .:1, v = x .:1, 2 = 223, 4 = 4.
NSUBST: 1 = 3:1 / *=1.., 3 = 5:3 / *=3...
MAP
xxxxxxxxxxxxxxxxxccc.@2cc2@.ccccxxxxxxxx
xxxxxxxxxxxxcccccc.............ccccxxxxx
xxxxxxxxxxccc....v.............v..cccxxx
xxxxxxxxxcc...2..v.............v..2.cxxx
xxxxxxxxxc....2..v....v.....v..v..33ccxx
xxxxxxxxxc....22.v.............vv..2.cxx
xxxxxxxxcc.......vv..v........vv..33.cxx
xxxxxxxxc....23x3.vv....T...vvv.4444.ccx
xxxxxxxxc.....4444.v.........v..333...cx
xxxxxxxxc.....334v....v........x44....cx
xxxxxxxxc......334......v.......4333..cx
xxxxxxxcc..D...........4.4..v......D..cx
xxxxxxxc...DD...........1.........DD..cx
xxxxxxxc3..DD..........4.4........DD.3cx
xxxxxxxc3..DD.......v........2....DD.3cx
xxxxxxxc1..DD.........1...1......DD..1cx
xxxxxxxcc..DD.....1.....1.....1.DDD..ccx
xxxxxxxxc...DDD......3333333....DD...cxx
xxxxxxxxc....DDDD....3333333....DD...cxx
xxxxxxxxc.....DDDDDD....R......DD....cxx
xxxxxxxxc........DDDc...O....cDD.....cxx
xxxxxxxxcc........Dc.DcccccDD.cD....ccxx
xxxxxxxxxc..........DDDcccDDDD......cxxx
xxxxxxxxxccc.....3..............3..ccxxx
xxxxxxxxxxxcccc..13............31cccxxxx
xxxxxxxxxxxxxxcccccc.......cccccccxxxxxx
xxxxxxxxxxxxxxxxxxxcccccccccxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
# Snake Pit: Coiled (minmay)
#
NAME:    minmay_snake_end_coiled
TAGS:    no_rotate
PLACE:   Snake:$
ORIENT:  southwest
MONS:    naga, naga warrior / naga sharpshooter w:5
MONS:    naga mage w:25 / naga ritualist / naga sharpshooter / \
         salamander mystic
MONS:    nagaraja / salamander tyrant w:5
KITEM:   O = serpentine rune of Zot
KITEM:   R = jade gem
KFEAT:   ^ = tyrant's trap / archmage's trap
SHUFFLE: ABC, {([
SUBST:   A = x, B : xx., C = ., c : c:20 v:5, 1 = 1., 2 = 23..., ( = (., [ = [..
NSUBST:  4 = 6:4 / * = 432.., X = 4=x / 4=. / x.., ^ = 2:^ / 2 = ^. / *:.
MAP
xxxxxxxxxxxxxxxxxxc.@..cxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxc....cxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxcc.{..ccxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxc......cxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxc..1.1.cxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxc...2..cxxxccccccccxxxxxx
xxxxxxxxxxxxcccccc..^...ccccc......cccxxxx
xxxxxxxxccccc...2.......2.......1....ccccc
xxxxxcccc.......A...4............1........
xxxccc..........A2..X..2.^.......2....(..@
xxcc...............2.2..........1.........
xxc....4.....ccccc......cccccc......cccccc
xcc...1...ccccxxxc......cxxxxccccccccxxxxx
xc...XB..ccxxxxxxc..1.1.cxxxxxxxxxxxxxxxxx
xc....4B.ccxxxxxxc...X..cxxxxxxxxxxxxxxxxx
xcc....1..ccccxxxc...2..cxxxxxxxxxxxxxxxxx
xxc..........ccccc...^..ccccccxxxxxxxxxxxx
xxcc.........................cccccxxxxxxxx
xxxccc.....4....C^.......A.......ccccxxxxx
xxxxxcccc...1...C..4X...^A..........cccxxx
xxxxxxxxccccc........X4........1......ccxx
xxxxxxxxxxxxcccccc..^...ccccc..........cxx
xxxxxxxxxxxxxxxxxc......cxxxcccc..1....ccx
xxxxxxxxxxxxxxxxxc..1...cxxxxxxcc..BX...cx
xxxxxxxxxxxxxxxxxc..X21.cxxxxxxcc.B.4...cx
xxxxxxxxxxxxxxxxxc..1...cxxxcccc..1....ccx
xxxxxxxxxxxxcccccc...^..ccccc..........cxx
xxxxxxxxccccc........4.........4......ccxx
xxxxxcccc.......A...1X..^C...2......cccxxx
xxxccc..........A^...4...C.......ccccxxxxx
xxcc.........................cccccxxxxxxxx
xxc....1.2...ccccc..^1..ccccccxxxxxxxxxxxx
xcc..4....ccccxxxc..1...cxxxxxxxxxxxxxxxxx
xc..1XB..ccxxxxxxc...2..cxxxxxxxxxxxxxxxxx
xc...4.B.ccxxxxxxc..1X..cxxxxxxxxxxxxxxxxx
xcc.......ccccxxxc...1..cxxxxxxxxxxxxxxxxx
xxc....1.2...ccccc..2^..ccccccxxxxxxxxxxxx
xxcc.................1.....4.cccccxxxxxxxx
xxxccc........1^C...4........14..ccccxxxxx
xxxxxcccc..4.2X4.C...1..^...12X.4...cccxxx
xxxxxxxxccccc.1.....2........1....4.ROcxxx
xxxxxxxxxxxxcccccccccccccccccccccccccccxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
# Salamanders (by Mu.)
# by popular request
#
NAME:   snake_pit_salamanders_mu
TAGS:   no_monster_gen no_rotate
PLACE:  Snake:$
ORIENT: north
MONS:   naga / salamander w:15
MONS:   naga mage / naga ritualist / naga sharpshooter \
        / salamander mystic w:30
MONS:   naga warrior / naga sharpshooter w:5
MONS:   nagaraja / salamander tyrant w:20, guardian serpent
MONS:   anaconda w:20 / black mamba / shock serpent / mana viper w:15
KMONS:  7 = salamander ; shortbow ego:flaming
KMONS:  D = lindwurm
KMONS:  OS = guardian serpent
KITEM:  O = serpentine rune of Zot
KITEM:  R = jade gem
KFEAT:  7 = lava
SUBST:  2 = 2..., 3 = 3..., 4 = 4..., D = Dll, S = SS6.
NSUBST: l = 8 = 7l / *:l, . = 12 = 1.. / *:.
NSUBST: 5 = 2:5 / * = 5.., 6 = 7:6 / * = 6..
MAP
              xxxxxx
              cccccc
            ccc2452ccc
           cc..2232..cc
          cc..llllll..cc
          c..DllllllD..c  ccccc
   ccccc cc.llllllllll.cccc666cc
  cc...ccc..llllllllll..cc66666cc
 cc.222.cc.llllllllllll.+666S666c
 c..443..c3llllllllllll.+66RO666c
 c.4243..+5llllllllllll.+666S666c
 c.4332..c3llllllllllll.cc66666cc
 cc.....cc..llllllllll..ccc666cc
 @cc...c+cc.llllllllll.ccccccccccc
c+ccccc+..c..DllllllD..c...+.....c
c..lllc.3.cc..llllll..cc...cl.33.c
c.3lllcc...cc..2232..cc...ccll...c
cc..lllcc...ccc2452ccc...cclll..cc
 cc..lDlcc....cccccc....cclDl..cc
  cc..lllcc.....42.....cclll..cc
   cc..lllcc....5.....cclll..cc
    cc..lllccc..42..ccclll..cc
     cc...lllcccccccclll...cc
      cc...llllllllllll...cc
       cc..llllllllllll..cc
        c....DllllllD....c
        c......llll......c
        c.2242..ll..2452.c
        c.3222..ll..2223.c
        c......llll......c
        cccc+cllllllc+cccc
         c....llllll....c
         cc.3.llllll.3.cc
          cc..4lDDl4..cc
           cc..4224..cc
            cc......cc
             cccccccc
ENDMAP

################################################################################

NAME:    grunt_snake_rune_spirals
PLACE:   Snake:$
ORIENT:  centre
MONS:    naga w:30 / salamander, naga warrior / naga sharpshooter w:5
MONS:    naga mage w:15 / naga ritualist / naga sharpshooter /\
         salamander mystic w:5
MONS:    nagaraja / guardian serpent / salamander tyrant w:5, nagaraja
KITEM:   D = serpentine rune of Zot
KITEM:   d = jade gem
: if crawl.one_chance_in(10) then
KITEM:   E = serpentine rune of Zot mimic
KITEM:   e = jade gem mimic
: else
KITEM:   eE = any good_item
: end
KFEAT:   ^ = tyrant's trap / archmage's trap
SHUFFLE: Dd / Ee
SUBST:   1 = 1.., 2 = 2..., 3 = 3.
NSUBST:  4 = 4:4 / * = 4., 5 = 6:5 / * = 54., ^ = 1:^ / 2 = ^. / *:.
MAP
        cccccccc     c.@..c       cccccccc
     cccc..1...ccc   c....c    cccc..2...ccc
   ccc.....2.....ccc c....c   cc.....3.....cc
  cc.......1.......ccc....c  cc......2......cc
  c1....ccccccc....1cc....c  c1....cccccc..51c
 cc.51ccc..2..cc..5..c....cxcc.2.ccc....cc12.cc
 c...cc...23^..cc1........cxc.5.1c.......cc...c
cc...c2....2....cc........cxc...cc.......4c...cc
c...cc52..ccc..22cc....32.cxc232c..e...4..cc...c
c...c...2ccccc25..cc......cxc...c.4.E.4c.2.c...c
c232c.^.cc.5.cc...ccc..5..ccc...cc.....c323c...c
c...c323c.....cc...ccc..5..ccc...cc.5.cc.^.c232c
c...c.2.c4.D.4.c.^.cxc......cc..52ccccc2...c.^.c
c...cc..4...d..c232cxc.23....cc22..ccc..25cc...c
cc...c4.......cc...cxc........cc....2....2c...cc
 c...cc.......c1.5.cxc........1cc..^32...cc...c
 cc.21cc....ccc.2.ccxc....c..5..cc..2..ccc15.cc
  c15..cccccc....1c  c....cc1....ccccccc....1c
  cc......2......cc  c....ccc.......1.......cc
   cc.....3.....cc   c....c ccc.....2.....ccc
    ccc...2..cccc    c....c   ccc...1..cccc
      cccccccc       c..@.c     cccccccc
ENDMAP

################################################################################

NAME:   grunt_snake_rune_pools
TAGS:   no_trap_gen no_monster_gen
PLACE:  Snake:$
ORIENT: north
# I've added a fire theme, which places salamander monsters and lava instead of
# deep water and sea snakes. --gammafunk
: if crawl.one_chance_in(3) then
MONS:   nagaraja / salamander tyrant w:20, guardian serpent
MONS:   naga warrior / naga sharpshooter w:5
MONS:   naga mage / naga ritualist / naga sharpshooter / salamander mystic w:30
MONS:   naga / salamander w:30
MONS:   guardian serpent w:15 / anaconda w:30 / black mamba / mana viper \
        / shock serpent
KMONS:  7 = salamander
KFEAT:  7 = l
SUBST:  w = l
NSUBST: 7 = 2=7 / 7llll
: else
MONS:   nagaraja, guardian serpent, naga warrior / naga sharpshooter w:5
MONS:   naga mage w:40 / naga ritualist / naga sharpshooter, naga
MONS:   guardian serpent w:15 / anaconda w:30 / black mamba / mana viper \
        / shock serpent
KMONS:  7 = sea snake
KFEAT:  7 = w
NSUBST: 7 = 2=7 / 7wwww
: end
KITEM:  R = jade gem
KITEM:  O = serpentine rune of Zot
SUBST:  4 = 45, 3 = 35, 1 = 113., 2 = 2211., 5 = 5.., 6 = 66.
MAP
          xxxxxxxxx
          ccccccccc
       cccc.7w7w7.cccc
      cc..5..www..5..cc
      c4.www1.2.1www.4c
   ccccw.w7ww.O.ww7w.wccc
  cccwwwSww7w212w7wwSwwwccc
 cc...ww.wwwwwRwwwww.ww...cc
cc......3.w7ww4ww7w.3......cc
c..cccwww.ww7w4w7ww.wwwccc..c
c..cxcc7w..2.5.5.2..w7ccxc..c
c..ccxcwwwwwcccccwwwwwcxcc..c
cc15cccww7wcc7w7ccw7wwccc51cc
 cc34ccccwcc.w7w.ccwcccc43cc
  c..cc.ccc4..1..4ccc.cc..c
  c....c..5..6.6..5..c....c
  cc.....c.3..2..3.c.....cc
   cc..c..5.......5..c..cc
    ccc.cc.........cc.ccc
      ccccccc+c+cccccccc
         ccc4...4ccc
        cc...www...cc
        c6c3.w7w.3c6c
        c6c.17w72.c6c
        c6c..w7w..c6c
        cc...www...cc
         ccc.....ccc
          ccc+++ccc
          cc.@.@.cc
ENDMAP

################################################################################

NAME:   grunt_snake_rune_serpentine_throne
PLACE:  Snake:$
ORIENT: north
KMONS:  L = vashnia / nagaraja, nagaraja
MONS:   nagaraja w:15 / naga sharpshooter / salamander tyrant w:5
MONS:   naga mage w:15 / naga ritualist / naga sharpshooter /\
        salamander mystic w:5
MONS:   naga w:30 / salamander
MONS:   anaconda / guardian serpent
MONS:   naga warrior
KITEM:  R = jade gem
KITEM:  O = serpentine rune of Zot
KFEAT:  A = altar_okawaru
NSUBST: 1 = 4:1 / *=1., 2 = 2:2 / *=2., 5 = 2:5 / *=5..
SUBST:  3 = 3.., 4 = 4., S : SG
TILE:   G = dngn_statue_naga / dngn_statue_archer w:2
: vault_metal_statue_setup(_G, "S", "dimensional conduit")
MAP
     xxxxxxx
     ccccccc
   ccc..O..ccc
  cc4.3...3.4cc
  c..1.ccc.1..c
 cc.3.ccRcc.3.cc
 c...cc.A.cc...c
cc......L......cc
c..5..G...G..5..c
c..T.2.1.1.2.T..c
c...3.S...G.3...c
c..4.2.1.1.2.4..c
c.4.3.G...S.3.4.c
c..4T2.1.1.2T4..c
c.4.3.S...G.3.4.c
c..4.2.1.1.2.4..c
c...3.G...S.3...c
cc.T.2.....2.T.cc
 c....G.5.G....c
 cc.5..5.5..5.cc
  c.....T.....c
  cc..4...4..cc
   ccc.4.4.ccc
     cc...ccxx
     x.......xx
     xx....5..xx
      xxxx...4.xx
         xxx3.1.x
   xxxxxxxx..2.4x
 xxx...5.5....3xx
xx.4....5....xxx
x.1.3xxxxxxxxx
x4.2........xx
xx3..........x
 xxxxxxx..@..xx
ENDMAP

################################################################################

NAME:   johnstein_snake_rune_scales
PLACE:  Snake:$
ORIENT: north
MONS:   naga w:30 / salamander, naga warrior / naga / salamander w:5
MONS:   naga mage w:15 / naga ritualist / naga sharpshooter /\
        salamander mystic
MONS:   guardian serpent w:20 / salamander mystic / naga ritualist
MONS:   nagaraja w:20 / naga sharpshooter / salamander tyrant
MONS:   anaconda / black mamba / mana viper / shock serpent w:5
KMONS:  Z = Vashnia w:30 / nagaraja w:20 / salamander tyrant \
            , nagaraja / salamander tyrant w:5
KITEM:  R = jade gem
KITEM:  O = serpentine rune of Zot
SUBST:  1 = 1.., 2 = 2.., 3 = 33..., 6 = 6..
NSUBST: 4 = 2:4 / *=4.., 5 = 1:ZZZ5 / 3:5 / *=5.
NSUBST: O = 1:O / 1:R / *:%.
MAP
cccccccccccccccccccccccccccccccccccccccc
c4cO..4.4...OccO...44...OccO...4.4..Oc4c
c.cc..252...cccc..5225..cccc...252..cc.c
c1.cc.131..cc..cc..33..cc..cc..131.cc.1c
c...cc....cc....cc....cc....cc....cc...c
cc...cc..cc......cc..cc......cc..cc...cc
 cc.2.c..c.2.22.2.c..c.2.22.2.c..c.2.cc
  cc.1.1....4554........4554....1.1.cc
   cc.2..c.3.33.3..cc..3.33.3.c..2.cc
    cc.1.cc.......cccc.......cc.1.cc
     cc...cc.....cc44cc.....cc...cc
      cc...cc...cc.55.cc...cc...cc
       cc...c..cc.3333.cc..c...cc
        cc.....c1.1..1.1c.....cc
         cc..................cc
          cc....c666666c....cc
           cc...cc6666cc...cc
            cc..3cc66cc3..cc
             cc..2cccc2..cc
              cc..1cc1..cc
               cc.1111.cc
                cc....cc
                 cc++cc
                 @....@
                   cc
ENDMAP

################################################################################
# This vault takes its monster theme from snake ziggurat floors.
NAME:   hellmonk_snake_rune_quicksilver_temple
PLACE:  Snake:$
ORIENT: north
MONS:   naga sharpshooter / guardian serpent / nagaraja / salamander tyrant
MONS:   quicksilver dragon
KITEM:  R = jade gem
KITEM:  O = serpentine rune of Zot
# Ten high tier monsters and ten normal spawns on average.
SUBST:  1 = ..1
NSUBST: . = 20=0. / .
TILE:   G = dngn_statue_dragon
MAP
              ccccc
             cc1O1cc
            ccG.2.Gcc
            cc..c..cc
           cc...c...cc
           cc..ccc..cc
     ccccccc1.ccccc.1ccccccc
    cccc.1cc...cRc...cc1.cccc
   cc......cc...1...cc......cc
  cc...cc...ccG...Gcc...cc...cc
 cc..ccccc.c+.......+c.ccccc..cc
cc..cc1G.ccc..cc+cc..ccc.G1cc..cc
c1..c.....c1.cc...cc.1c.....c..1c
c...cG.T..+..c1.G.1c..+..T.Gc...c
cc..c1....c..c..1..c..c....1c..cc
c...cc..1cc..cc...cc..cc1..cc...c
c....cc+cc...ccc+ccc...cc+cc....c
cc.....1....ccc...ccc....1.....cc
 cc....c...ccc..G..ccc...c....cc
  cc..cccc1ccc1...1ccc1cccc..cc
   c1..cc...ccc...ccc...cc..1c
   cc..cc...cccc+cccc...cc..cc
    c..ccc..ccc.1.ccc..ccc..c
    c...c....c.....c....c...c
    cc1......G.....G......1cc
     cccc.......T.......cccc
        cc..cc'''''cc..cc
         ccccc'''''ccccc
             cc'''cc
             cc'''cc
              G@@@G
ENDMAP
