##############################################################################
# The old Forest branch end vaults, adjusted for Depths placement.
# Grouped here for a function use, thematic grouping, and easier reference.
# Only one of these can place per Depths, and are mutually exclusive with
# random Enchantress placement; they've also diluted with appropriate natives.

{{
function old_forest_ends(e)
    e.tags('uniq_old_forest_end no_monster_gen')
    e.depth('Depths:2-, !Depths:$')
    e.weight('6')
    e.tile('c = wall_marble')
    e.colour('c = white')
end
}}

##############################################################################
# A mockup of the Forest branch (1KB)
NAME:    spriggan_forest
TAGS:    no_pool_fixup uniq_d_encompass
ORIENT:  encompass
MONS:    spriggan ; sling . spear | rapier . robe . buckler, spriggan rider
MONS:    spriggan druid, spriggan berserker
MONS:    spriggan air mage, spriggan defender
KMONS:   7 = Enchantress
KMONS:   0 = spark wasp / caustic shrike w:1 / stone giant w:5 / \
             tengu warrior band / tengu conjurer band / \
             rakshasa / chonchon band w:5 / deep troll w:5 / \
             glowing orange brain / green very ugly thing band / guardian sphinx
KMONS:   9 = ettin ; giant club randart . giant club randart / \
             glowing shapeshifter hd:13 w:5 / quicksilver dragon w:15 / \
             tengu reaver w:5 / juggernaut w:5
KMONS:   aA = alderking
KMONS:   J = caustic shrike zombie
KMONS:   K = spriggan rider
KMONS:   L = spriggan col:white name:baker n_suf ; robe . dagger
KMONS:   M = death yak / thorn hunter w:3
KMONS:   N = spriggan ; quarterstaff . robe
KMONS:   O = chonchon / emperor scorpion / anaconda w:4
KMONS:   Q = bush
KMONS:   R = plant
KFEAT:   ~ = +
KFEAT:   u = t
KFEAT:   Ff = cache_of_fruit
KFEAT:   B7 = cache_of_baked_goods
ITEM:    dagger / short sword / rapier / flail / whip / shortbow
ITEM:    robe / cloak / hat / buckler / steam dragon scales w:1
KFEAT:   _ = altar_trog
NSUBST:  . = 10:0 / 8 = 00... / 1:9 / 1:A / 2:O / 1:3 / 1:5 / *:.
NSUBST:  6 = 1:A9 / 2 = 669 / *:6
SUBST:   T = t:20 P .:40, P = RRQ., F = F..
: old_forest_ends(_G)
SUBST:   C = c
COLOUR:  "MN = green
FTILE:   -~de$*|679A{}()[]Gu = floor_depthstone
LFLOORTILE: floor_grass_dark
veto {{
  return crawl.game_started() and you.uniques("Enchantress")
}}
MAP
tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
ttttPP.Tttt...tttttttttttttttttttttttttttttttttttttttttttttttttTTTTTttTTTTtttttt
tCCCCT.....ttt..ttttttttttttttttttttttttttttttTtTTtttttttQTtttTT.T.Ttt.T.TTTtttt
tC%4C...Tttttttt.ttttttttttttttttttttttttttttT*....QQPtt..CCCCC....CCCC.TT.Ttttt
tCF.+..Ttttttttt..ttttttttttttttttttttttcccccccccccccc....C%F1C....C.1C.t.TTtttt
tC.4C...Ttttttt.t..tttttttttttttttttttttc-6-c6--6c$*|ctT..C.1.+....+.%CT.TT.tttt
tCCCCt.Tttttt..tttt........tttttttttttttc7--~----~$*|ctt..CCCCC....CCCC.TT.Ttttt
tttT..tttttt.tttttttttttttt.ttttttttttttc-6-c6--6c$*|cttQ..................ttttt
ttTPTTtttt...ttttttttttttttt..ttttttttttcccccc~~ccccccttttCCCCC....CCCC......ttt
ttTTtttttt..ttttttttttttttttt.ttttttttttceeec....cdddcttttCBxLC....C1%C.....tttt
tttttttt...ttttttttttttttttttt.tttttttttceee~..1.~dddcttttCB$.+....+.5C..1...ttt
tttttt.tttt..ttttttttttttttttt.tttttttttceeec1...cdddcttttCCCCC....CCCC...1.tttt
tttttt.ttttt.tttttttttttttt.....ttttttttcccccc++ccccccttttt...................tt
ttttt.ttttt..ttttttttttt...tttT..tttttttcR.....1....RcCCCCCCCCC....Y.........ttt
ttt..tttttt..ttttttttt..tttttttt.tttttttcf.1......1.fcCKxKxKxKC......2......tttt
tt.ttttttt.tttttttt...ttttttttttt.ttttttcR1..5..5..1RcC.22.1..C.....22......tttt
tt.tttttt.ttttttt...1.tttttttttttt.tttttcccccc++ccccccC+CCCCCCC....2.2.....ttttt
ttt.tuuu..tttttt...22.-uutttttttttt.tttt..................................tttttt
tttt.-[u.ttttttt..1..2-)uttttttttttt.....................................ttttttt
ttttt---.ttttttt.t.1..-uutttttttttt.tt..TTttttt............Y..........ttt.tttttt
ttttttt..tttttt.tttttttttttttttttt.tttttttttttttttttt...............tttttt..-uut
ttttttttt..ttt.tttttttttttttttt....ttttttttttttttttttttt.........tttttttttttu(ut
ttttttttttt...tttttttttttttttt.tt..ttttttttttttttttttttttttt....ttttttttttttuuut
tttttttttttttt.tttttttttttttt.tttt.tttttttttttttttttttttttt.tt...ttttttttttttttt
tttttttttttttt.ttttttttttttt.WWWWt.ttttttttttttttttttttttt.ttttt...ttttttttttttt
ttttttttttttt.tttttttttttttt.Wwwwt.ttttttttttttttttttttt..ttttttt..ttttttttttttt
tttttttttttttt.ttttttttttttt.tWWWWt..tttttttttttttttt.t.ttttttttt..ttttttttttttt
tttttttttttttT.ttttttttttttt.ttWwwwwt.tttttttttttttttt.ttttttttttt..tttttttttttt
ttttttttttttt..ttttttttttttt.tttwwwwww.ttttttttttttttt.ttttttttttt..tttttttttttt
tttttttttttt...tttttttttttt.tttwwwwwwww.....tttttttttt.ttttttttttt.ttttttttttttt
ttttttttt.....ttttttttttttt.ttttwwwwwwwwwwwt.tttttttt.ttttttttttt.t.tttttttttttt
ttttttt..tt..tttttttttttttt.ttwwwwwwwwwwwwwwt.tttttt.ttttttttttt..tt....tttttttt
ttttT..tttttttttttttttttttt.ttwwwwwwwwwwwwwwt.......tttttttttttt.ttttttt...ttttt
tttt....tttttttttttttttttttt.wwwwwwwwwwwwwwww..tttttttttttttttt.ttttttttt..3tttt
ttt....T..3...tttttttttttttt.wwwwwwwwwwwwwwwt.ttttttttttttttttt.ttttttttt3..tttt
tttT---ttttttt....tttttttttt.wwwwwwwwwwwwwwt.ttttttttttttttttt.ttttttttttt..tttt
ttt.-]-.ttttttttt......ttttt.Wwwwwwwwwwwwtt.tttttttttttttttttt.ttttttttttt.ttttt
ttt.---....tttttttttttt.......WWwwwwwwwttt.tttttttttttttttt...tttttttttttttttttt
tttt...11.tttttttttttttttttttt...........ttttttttttttt.....ttttttttttttttt..tttt
ttttT.1...tttttttttttttttttttttttt.tttttttttttttttttt.ttt.ttttttttttttttttt.tttt
ttttTT.1....ttttttttttttttttttttt.tttttttttttttttttt.ttttt.ttttttttttttttt..tttt
ttttttt.tttt...ttttttttttttttttt..tttttttttttttttt..ttttttt..ttttttttttttt.ttttt
tttttt.tttttttt...ttttttttttttt.tttttttttttttttt..ttttttttttt....tttttttt.tttttt
ttttt..tttttttttt.ttttttttttttt.tttttttttttttttt.ttttttttttttttt.........ttttttt
ttttt.ttttttttttt.tttttttttttt-F-tttttttttttttt.ttttttttttttttt.ttt..t..tttttttt
tttt..tttttttttt..tttttttttttt3G3ttttttttttttt.ttttttFtttttttt.ttttttt....tttttt
ttttt.ttttttttt..ttttttttttttt*3*tttttttttttt.t.tttttt.....tt.tttttttttt...ttttt
tttt.tttttttttt.t..tttttttttttttttttttttttt..ttt.tttttttttt...ttttttttttt..ttttt
tttt.ttttttttt..ttt...ttttttttttttttttttttt.ttttt.ttttttttwwwtttttttttttt...tttt
ttttt.tttttttu-uttttt...tttttttttttttttt...tttttt.tttttttttwwttttttttttttt..tttt
ttttt.tttttttu{uttttttt......ttttttttt.....ttttt.ttttttttttttttttttttttttt.ttttt
tttt.ttttttttuuuttttttttTT..t...tttt..tttttttttt.tttttttttttttttttttttttt.tttttt
tttt.ttttttttttttttttttttt.ttttt....ttttttttttttt.ttttttttttttttttttttttt.CCCCtt
ttttt.ttttttttttttttttttt.tttttttttt.tttttttttttt..tttttttt..tt...ttttttt.+.1Ctt
tttttt.ttttttttttttttttt.tttttttttt..tttttttttttttt.tttttt.t...ttt..tttttTC1%Ctt
ttttttt.ttttttttttttttt.ttttttttttt....xxxxxtttttttt..tttt...tttttt.ttttttCCCCtt
ttttttt.tttttttttttttt.ttttttttttttT...x..4xtttttttttt....ttttttttt.tttttttxxxxx
ttttttt.tttttttttttttt.ttttttttttttT...+..Fxtttttttttttttttttttttttt.tttxxxxxxxx
txxxtt.ttttttttttt....ttttttttttttttt.tx..4xttttttttttttttttttttttttt..xxxxxxxxx
txg+"""""""tt......t.....ttttttttttttt.x*4_xttttttttttttttttttttttttt...-xxxxxxx
txxx""""""""".tttttttt..TTtttttttttttttxxxxxttttttttttttttttttttttt.....-}xxxxxx
ttt""N"""""""TTtttttttt....ttttttttttttttttttttttttttttttttttttt.....xxxxxxxxxxx
ttT""MM"MM"TTTttttttttttttt..tttttttttttttttttttttt...ttttttttt....xxxxxxxxxxxxx
tt""""M""""Tttttttttttttttttt..ttt.......ttttttttt.......tttt...xxxxxxxxJxxxJxxx
tt".MM""NTTtttttttttttttttttttt....tttt.......ttt...ttttt.......xxxxx..JxxxxJJxx
tt""M""""Ttttttttttttttttttttttttttttttt...ttt..t..ttttttttxxxxx......xx.Jxx..xx
ttt""""TTTtttttttttttttttttttttttttttttttttttttt.tttttttxxxxxxxxxx....xxx.a.xxxx
tttttttttttttttttttttttttttttttttttttttttttttttttttttttttxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
NAME:   grunt_forest_end_chambers
ORIENT: north
KMONS:  O = Enchantress patrolling
MONS:   spriggan defender, spriggan berserker, spriggan rider, spriggan air mage
MONS:   faun w:5 / satyr / manticore w:5 / stone giant w:5
MONS:   tengu warrior / ettin ; dire flail . dire flail / \
        deep troll w:5 / shapeshifter w:5 / caustic shrike zombie w:5
MONS:   tengu conjurer w:20 / chonchon band / eleionoma w:20 / \
        rakshasa / glowing orange brain w:5
KMONS:  8 = ettin ; giant club randart . giant club randart / \
            glowing shapeshifter hd:13 w:5 / quicksilver dragon / \
            tengu reaver w:5 / alderking w:15
KFEAT:  C = cache_of_fruit
NSUBST: 3 = 6:3 / 4:6 / * = 36., 7 = 4:7 / * = 77., 1 = 1:8 / 2 = 118 / *:1
SUBST:  C : CC.
: old_forest_ends(_G)
FTILE: .O1234678+CT%*| = floor_marble
veto {{
  return crawl.game_started() and you.uniques("Enchantress")
}}
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
tttttttttttttccccccccttttttttttttt
tttttttttttccc||||||cccttttttttttt
ttttttttttccC........Ccctttttttttt
tttttttttcc....3..3....ccttttttttt
tttttttttc..............cttttttttt
ttttttttcc....4....4....cctttttttt
ttttttttc%..............%ctttttttt
ttttttttc*..............*ctttttttt
ttttttttc*.3....O1....3.*ctttttttt
ttttttttc*.2....11....2.*ctttttttt
ttttttttc*..............*ctttttttt
ttttttttc%....7....7....%ctttttttt
ttttttttcc..............cctttttttt
tttttttttc..............cttttttttt
tttttttttcc....3..3....ccttttttttt
ttttcccccccc..........cccccccctttt
tttcc......ccc......ccc......ccttt
ttcc.3.3.3..cccc++cccc..3.3.3.cctt
tcc..........c''''''c..........cct
tc%..........c+'55'+c..........%ct
tc%......1....cccccc....1......%ct
tc%....T.2....cccccc....2.T....%ct
tc%...........cccccc...........%ct
tc%.7........c+'55'+c........7.%ct
tcc.7........c''''''c........7.cct
ttc.........cccc++cccc.........ctt
ttccc......cccc....cccc......ccctt
ttttccc..cccc........cccc..ccc'ttt
t'tt''cccccc....33....cccccc.t't't
tt''''t'''cc..........cct'''ttt''t
tt''''''''c............c''t''ttt't
t''t'''5''c.7...TT...7.c''''t''''t
tt''''''''c.7...TT...7.c'''''''''t
ttt't'''''c............c''t'''t''t
tt'''''t''cc..........cc'''5'''''t
tt''5''''''c..........c'''''t''5't
t''''''''''cc........cc''t''''''tt
tt''t''5''''ccc....ccc''5'''t'tttt
ttttt'''''''''c++++c''''''tttttttt
ttttttt''''''''''''''''tt'''tttttt
ttttttttttt''''''''''ttt'''''ttttt
   tttttttttttt''''ttt'''tttttt
   ttttttttttttt'''''''tttttttt
   ttttttttttttt'@''ttttttttttt
ENDMAP

################################################################################
NAME:   grunt_forest_end_winery
TAGS:   no_pool_fixup
ORIENT: northeast
MONS:   Enchantress patrolling, thorn hunter / spriggan defender
MONS:   tengu reaver / glowing shapeshifter hd:13 w:5 / alderking
MONS:   satyr w:15 / spriggan berserker w:15 / spriggan air mage, faun
MONS:   tengu conjurer ; quarterstaff . robe . longbow | arbalest / \
        glowing orange brain w:5 / rakshasa / chonchon / eleionoma
KMONS:  L = water nymph
KMONS:  P = plant
ITEM:   gold q:1 / stone q:1 no_pickup w:20
ITEM:   any potion, potion of moonshine pre_id
KFEAT:  L = deep_water
KFEAT:  F = cache_of_fruit
NSUBST: w = 2:L / *:w
SUBST:  X = xt, T = t.
FTILE:  efF124+|%*$- = floor_vines
NSUBST: 5 = 1:4 / 3:6 / 1:56 / *:5
NSUBST: 2 = 1:3 / 1:223 / *:2, e = 3:F / * = e f:35
: old_forest_ends(_G)
veto {{
  return crawl.game_started() and you.uniques("Enchantress")
}}
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Xttttttttttttttttttttttttttttttttttttttttttxx
XttTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtxx
XttT.5..................................0Ttxx
XttT..PdPdP.cccccccccccccccccccccccccccc.Ttxx
XttT..PdPdP.ce-e-e-e-e-e-e-eceeeeee+|||c.Ttxx
XttT..PdPdP.c-e-e-e-c-e-e-e-c------c|||c.Ttxx
XttT..PdPdP.ce-e2e-ece-e2e-ec------cc+cc.Ttxx
XttT..PdPdP.cc+ccccccc+cccccc---2-4c%**c.Ttxx
XttT..PdPdP5c-----4---4-----+----1-c%**c.Ttxx
XttT..PdPdP.c-------2-------+---2-4c%**c.Ttxx
XtT...PdPdP.c--wwwwwwwwwww--+------c%**c.Ttxx
XtT...PdPdP.c--wwwwwwwwwww--c------c$$$c.Ttxx
XtT...PdPdP.c-----4---4-----c------c$$$c.Ttxx
XtT...PdPdP.c---------------ceeeeee+$$$c.Ttxx
XTT...PdPdP.cc++cccccccccccccccccccccccc.Ttxx
T.......5......5............5...........5Ttxx
@TT...PPPPPPPP..PPPPPPPPPPPP..PPPPPPPPPP.Ttxx
TtT...dddddddd..dddddddddddd..dddddddddd.Ttxx
XtT...PPPPPPPP5.PPPPPPPPPPPP.5PPPPPPPPPP.Ttxx
XtT...dddddddd..dddddddddddd..dddddddddd.Ttxx
XttT..PPPPPPPP.5PPPPPPPPPPPP5.PPPPPPPPPP.Ttxx
XttT..dddddddd..dddddddddddd..dddddddddd.Ttxx
XttT..PPPPPPPP..PPPPPPPPPPPP..PPPPPPPPPP.Ttxx
XttT.....................................Ttxx
XttT.....................................Ttxx
XttTTTTTT...........TTTT...........TTTTTTTtxx
XttttttttTTTTT.TTTTTTTTTTTTTT.TTTTTTTTTTTTtxx
XXtttttttttttT.TttttttttttttT.Tttttttttttttxx
XXXXXXXXXXXXT@TXXXXXXXXXXXXXXT@TXXXXXXXXXXXxx
ENDMAP

################################################################################
NAME:   grunt_forest_end_shrine
ORIENT: float
MONS:   Enchantress patrolling
MONS:   spriggan defender w:14 / thorn hunter
MONS:   guardian sphinx w:20 / tengu reaver w:15 / alderking w:15 / \
        ettin w:5 ; giant club randart . giant club randart / caustic shrike
MONS:   spriggan air mage w:15 / spriggan druid / spriggan berserker / \
        shambling mangrove w:3 / chonchon w:5
MONS:   glowing orange brain w:5 / rakshasa w:15 / occultist / \
        eleionoma w:5 / glowing shapeshifter w:5 / stone giant w:4
KFEAT:  C = cache_of_fruit
KFEAT:  _ = altar_dithmenos / altar_uskayaw
KFEAT:  z = t
SUBST:  T = zx, C : C..
NSUBST: 2 = 1:3 / 2 = 22233 / *:2, 4 = 3:4 / 4:5 / * = 4455.
FTILE:  .-C_$*|12345G+tx = floor_grass_dark
FTILE:  @z = floor_moss
: old_forest_ends(_G)
veto {{
  return crawl.game_started() and you.uniques("Enchantress")
}}
MAP
  TTTTTTTTTTTTT
 TTtttttttttttTT
TTtt.......4.ttTT
Ttt4..........ttT
TtC.ccccccccc..tTTTTTTTz
Tt..c||c$$$$c..ttttttttz
Tt..c|-c****c.2t..4....z
Tt..cc+c2-4-+....G.G.G.@
Tt2.c-1-4-_-+..2.......@
Tt..cc+c2-4-+....G.G.G.@
Tt..c|-c****c.2t..4....z
Tt..c||c$$$$c..ttttttttz
TtC.ccccccccc..tTTTTTTTz
Ttt4..........ttT
TTtt.......4.ttTT
 TTtttttttttttTT
  TTTTTTTTTTTTT
ENDMAP
