1################################################################################
2# d_encompass.des: Encompass vaults that can place somewhere in D.
3################################################################################
4
5################################################################################
6# Zero! Nine! Eight!
7#
8NAME:    hangedman_slaughterboxes
9TAGS:    no_pool_fixup no_monster_gen no_item_gen patrolling uniq_d_encompass
10ORIENT:  encompass
11DEPTH:   Depths:2-
12PLACE:   D:$, Depths:$
13WEIGHT:  1 (D:$), 2 (Depths:$), 10
14MONS:    fungus, plant
15KMONS:   S = 0 band
16KMONS:   # = 9 band
17KMONS:   = = draconian annihilator / draconian knight / draconian monk
18KFEAT:   ^ = stone_arch
19KFEAT:   - = enter_depths
20KFEAT:   = = enter_zot
21SHUFFLE: :;, `~, 34, 67, !?, XZ / yz
22SUBST:   % = %:40 $:20 ., * = *:30 %, | = |:30 *
23SHUFFLE: ABCDE / BADCE / AGHIC / ACGHE, BDF
24SUBST:   ACF = ., BDGHI = x, E : .x
25SHUFFLE: JKLMN / KJMLN / JPQRL / JLPQN, KMO
26SUBST:   JLO = ., KMPQR = x, N : .x
27SHUFFLE: cdefg / dcfeg / cijke / ceijg, dfh
28SUBST:   ceh = ., dfijk = x, g : .x
29SHUFFLE: nopqr / onqpr / ntuvp / nptur, oqs
30SUBST:   nps = ., oqtuv = x, r : .x
31SUBST:   X = xx', y= x'', Z = xx., z = x..
32SUBST:   ;` = ., :~ = x, T = TTV, U = TUU
33SUBST:   7? = ., 36! = 0, Y : 09, 5 = 09, 4 = 9
34SUBST:   " : WW', _  = C, @ = G
35NSUBST:  ' = 7:S / 2:# / 6 = S:3 .:2 / *:.
36: if you.absdepth() > 20 then
37: kmons('9 = place:Depths:' .. you.depth() - 1 .. ' 9')
38SUBST:   & : a:45 c:8 vb x:2, a : c:15 vb
39MARKER:  ^ = lua:props_marker { portal=1 }
40:    if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
41SUBST:   ) = =, >]} = .
42:    end
43: else
44SUBST:   & : a:80 x:15 c:3 v:1 b:1, a : c:38 v:2 b:2
45:    if you.where() == dgn.level_name(dgn.br_entrance("Depths")) then
46SUBST:   }] = ., ) = -, > = <
47:    end
48: end
49MAP
50   xxxxxxxxxxxxxxx      xxxxx       xxxxx
51  xxxxxxxxxxxxxxxxx    xxxxxxx    xxxxxxaaaaaaaaaaaaaaa
52 xxxZZZZZZZZZZZZxxxxxxxxxXXXxxxxxxxxxZZaaaaaaaaaaaaaaaaa
53xxxZ............ZxxxxxxXX'''XXxxxxxZZ..aaalalalalalalaaaa
54xxZ..`x~x`x~x`x..ZZXXXX'''x'''XXZZZ....aalllllllllllllaaaa
55xxZ.`x........`....'''''''x''''''......aal%%%%*****|||laaa
56xxZ.x..~xxx`x.x....'x'''x'''x'''x...{..aal%........38|llaa
57xxZ.~.~x''''`.~...x'''x'''x'''x''.x..[.aal%.&4&&..&&3|laaa
58xxZ.x.x'`~`'x.x....'x'''x'''x'''x...(..aal%.48&&.&&&.*llaa
59xxZ.`.x'~0~'x.`....''''''''''''''......aal%.&&&...&..*laaa
60xxZ.x.x'`~`'x.x..aaaaaaaaaaaaaaaaaaaaaaaal%.&&.|.....*llaa
61xxZ.~.`''''x~.~.aaaaraaaaaaaEaaaaaaaaaaal&&.....|.&&.*laaa
62xxZ.x.x`xxx~..x.aa9...0.&.0..67aalllllll&&&+.....&&&.%llaa
63xxZ.`........x`.aa.nop.&+&.ADC6aal%%%%%%&&.m+...&&84.%laaa
64xxZ.x`x~x`x~x`..ar.qrq..&..BEB.Eal%90&...+m.m+..&&4&.%llaa
65xxZ.............aa.pon.&+&.CDA.aal%0.&.0..+m.m+......%laaa
66xxxZ.......aaaaaaa....9.&.....0aal%&&......+m.&&%%%%%%llaa
67 xxxZ.....aaaaNaaaa.a.aaaa.&.&.aal%......<..+&&&lllllllaaa
68 xxxZ.BAD.aa9....aaa+a+a0a&+&+&aaaaa+a+a5....&&laaaaaaaaaax
69  xxX'CEA'aa.JKL..aaa....a.&.&.aaaa.a.aaa..0.%laaaaaaaaaaxx
70  xxX'DCB'aN.MNM.a+acde..a...!?.&......a+....%laa.......Zxx
71  xxX'''''aa.LKJ..a.fgf.%a.nop!&+&.]1U..a..&&%laa..)....Zxx
72  xxX'''''aa....9a+.edc0%a.qrq..&..1@1.a+.&.0%laa.>.>..Zxxx
73  xxX'LKJ'aa.&.&.aa...08*a.pon.&+&.U1}..a.&09%laa......Zxx
74  xxX'MNM'aa&+&+&a0..%%*aa9.....&......aa%%%%%laa..x..Zxxx
75 xxxX'JKL'aa.&.&.aaaaaaaa+aaaaaaa..&.&.aallllllaa.....Xxx
76 xxX''''''aa....0.&.....0aa&...+.a&+&+&aaaaaaaaaa'x'x'Xxx
77 xxX''''''aa.ABC.&+&.JKL.aY&.&.a+a.&.&.aaaaaEaaaa'''''Xxx
78 xxX'CBA''aE.DED..&..MNM.a..efc..a...!?.&.0..67aa''x''Xxx
79 xxX'DED''aa.CBA.&+&.LKJ.a.&dgf&.a.nqp!&+&.ABC6aa''''''Xxx
80 xxX'ABC''aa9.....&.0....a%0cde..a.oro..&..DED.Ea'x'x''Xxxx
81 xxX''''''aaaaEaaaaa.&.&.a*80&.&&a.pqn.&+&.CBA.aa'''''''Xxx
82 xxX''''''aaaaaaaaaa&+&+&a|*%..Yaa9.....&.....0aa''x'xx'Xxx
83 xxX'pon''aawwwwwwaa.&.&.aaaaaaaa+aaaaaaaa.&.&.aa'''''''Xxx
84 xxX'qrq''aaw2112waa....5.&.....0aa*%%..0a&+&+&aa'x'x''Xxxx
85 xxX'nop''aaw..T.Wa..DCB.&+&.JML.a*80...aa.&.&.aa''''''Xxx
86 xxX''''''aaw....W+a.AEC..&..KNK.a%0cfe.+a9...0aa''x''Xxx
87 xxX''''''aaw.2..Wa..BAD.&+&.LMJ.a%.dgd.a..nqp.aa'''''Xxx
88 xxxX'edc'aaw....W+a......&.0....a..efca+a.oro.ra'x'x'Xxx
89  xxX'fgf'aaw...@waaa.a.aaaa.&.&.a....aaa..pqn.aa'''''Xxx
90  xxX'cde'aaw._..wwa+a+aaaaa&+&+&a0a+a+aaa....9aa..x..Zxxx
91  xxX'''''aaw....@wwWWWWwwaa.&.&.aaaa.a.aaaaraaaa.....Zxxxx
92  xxX'''''.aW......@....2waa....0.&.9....aaaaaaa.......Zxxx
93  xxX'cde'.+W.._.......T1waa.ADC.&+&.JML.aa.............Zxx
94  xxZ'fgd'.+W....._..2..1waE.BEB..&..KNK.Na..;x:x;x:x;x.Zxx
95 xxxZ.efc..aww..........2waa.CDA.&+&.LMJ.aa.;x........;.Zxx
96xxxxZ......aawWWWwwwwwwwwwaa9.....&.....9aa.x..:xxx;x.x.Zxx
97xxxX'''2'..aaa++aaaaaaaaaaaaaaEaaaaaaaNaaaa.:.:x'''';.:.Zxx
98xxX''''''........aaaaaaaaaaaaaaaaaaaaaaaaa..x.x';:;'x.x.Zxx
99xxX''''''2....''''''''''''''''''''''''''....;.x':0:'x.;.Zxx
100xxX'2'^'''''.cde''efc''''''''''''LMJ''BAD...x.x';:;'x.x.Zxx
101xxX'''""'''2.fgd''dgd''pqn''CDA''KNK''CEA...:.;''''x:.x.Zxx
102xxX''^""^'''.efc''cfe''oro''BEB''JML''DCB...x.x;xxx:..x.Zxx
103xxX'''^'''''..'''''''''nqp''ADC'''''''''....;........x;.Zxx
104xxX'''''2'''ZZZXXXXXXX''''''''''XXXXXXXXZZ..x;x:x;x:x;..Zxx
105xxxX'''''''XxxxxxxxxxxXXXXXXXXXXxxxxxxxxxxZ............Zxxx
106 xxxXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxZZZZZZZZZZZZxxx
107  xxxxxxxxxxx        xxxxxxxxxxxxx       xxxxxxxxxxxxxxxx
108   xxxxxxxxx                              xxxxxxxxxxxxxx
109ENDMAP
110
111###############################################################################
112#  This vault exercises varied old ideas for the Vaults branch:
113#  a primarily humanoid-based monster set, a focus on placing groups,
114#  and a pattern-based layout emphasizing lots of distinct rooms.
115#  Of course, HangedMan twisted these ideas thoroughly.
116#  Many thanks to elliott for writing the band placement lua!
117#
118NAME:    hangedman_spin_cycle
119TAGS:    no_monster_gen no_item_gen no_trap_gen patrolling uniq_d_encompass
120ORIENT:  encompass
121DEPTH:   Depths:2-
122PLACE:   D:$, Depths:$
123WEIGHT:  1 (D:$), 2 (Depths:$), 10
124KMONS:   - = plant
125KMONS:   _ = demonic plant
126KMONS:   mo = vault guard
127KMONS:   p = floating eye
128KMONS:   q : great orb of eyes w:7 / guardian serpent w:3
129KMONS:   r = ettin / deep troll shaman / stone giant / frost giant
130KMONS:   t = draconian knight / draconian scorcher / draconian annihilator
131{{
132local bands = {
133    [65 - you.absdepth() * 3] =
134        { "cyclops", "tengu warrior", "centaur warrior", },
135    [42 - you.absdepth() * 2] =
136        { "kobold demonologist", "tengu conjurer", "deep elf pyromancer",
137          "deep elf zephyrmancer", "necromancer", "yaktaur", "Azrael",
138          "Kirke", },
139    [26 - you.absdepth()] =
140        { "glowing orange brain", "spriggan berserker", "wizard",
141          "skeletal warrior", "salamander tyrant", "rakshasa", },
142    [you.absdepth() * 2 - 37] =
143        { "deep elf death mage", "spriggan air mage", "deep troll shaman", },
144    [you.absdepth() * 2 - 42] =
145        { "spark wasp", "hell knight", "naga sharpshooter", "vampire mage",
146          "orc warlord", "vampire knight", "stone giant",
147          "deep elf high priest", "spriggan defender", },
148    [you.absdepth() - 18] =
149        { "lich", "ancient champion", "tengu reaver", "Margery",
150          "Saint Roka", "Sojobo", },
151}
152local kmonsters = {}
153for weight, monsters in pairs(bands) do
154    if weight > 0 then
155        for _, mons in ipairs(monsters) do
156            if not you.uniques(mons) then
157                table.insert(kmonsters, mons .. " band w:" .. weight)
158            end
159        end
160    end
161end
162util.sort(kmonsters)
163kmons("s = " .. table.concat(kmonsters, " / "))
164}}
165KITEM:   ? = any ring randart w:390 / ring_of_the_octopus_king
166KITEM:   ! = ring of slaying / ring of wizardry / any good_item ring no_uniq w:75
167KITEM:   | = | / any good_item
168KFEAT:   ^ = permanent teleport trap
169KFEAT:   ~ = teleport trap
170KFEAT:   aD = stone_arch
171KFEAT:   A = enter_hell
172KFEAT:   & = enter_pandemonium
173KFEAT:   @ = enter_abyss
174KFEAT:   B = enter_depths
175KFEAT:   C : C / any shop
176KFEAT:   Z = enter_zot
177SHUFFLE: <d` / {e1 / (f2 / [g3, >h4 / }i5 / )j6 / ]k7, (f2 / )j6, 15
178: if you.absdepth() > 17 then
179SUBST:   ( = D, ) = C
180MARKER:  C = lua:props_marker { portal=1 }
181MARKER:  D = lua:props_marker { portal=1 }
182:     if crawl.random2(you.depth()-15) > (you.depth()-18) then
183SUBST:   A&@ = a, _ = -, l = W
184:     else
185SHUFFLE: aA&@
186:     end
187:     if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
188NSUBST:  (D = Z / D
189SUBST:   f = ', 2 = t
190:     end
191: else
192SUBST:   A&@ = a, _ = -, l = W
193:     if you.where() == dgn.level_name(dgn.br_entrance("Depths")) then
194NSUBST:  ( = B / T
195SUBST:   f = ', 2 = r
196:     end
197: end
198SUBST:   {} = **|||, ) = C, [ = !, ] = ?
199NSUBST:  < = { / ( / [, > = } / ) / ]
200SUBST:   d = 0, e = 009, f = %, g = 0, h = 0, i = 009, j = %, k = 0
201SUBST:   ` = >, 1 = 9988s, 2 = 009, 3 = s, 4 = `, 5 = 998ss, 6 = 009, 7 = s
202SHUFFLE: })]` / {([>, ?!, mo / pq, pq / pq / pq / qp / pp / qq
203SHUFFLE: LM / LM / LM / LM / LM / LM / ML / ML / MM
204SHUFFLE: NO / NO / NO / NO / NO / NO / ON / ON / OO
205SHUFFLE: PQ / PQ / PQ / PQ / QP, RS / RS / RS / SR
206SHUFFLE: EF / GH / Iu / yz
207SUBST:   LNPR : x, MOQS : ~, J : ~xxx, K : ~xxxx, c : x:7 c:1, v : v:7 c:1
208SUBST:   Iy = D, uz = a
209NSUBST:  ~ = 2:~ / ~. / 75 = ~ .:4490 / 225 = ~ .:9990 / .
210COLOUR:  "-_ = green
211COLOUR:  '`089rs%*|!? = white
212FTILE:   ^"aAFHuz@&-_U = floor_grass
213: if crawl.coinflip() then
214FTILE:   '`<{([>})]089rst%*|!?BCTDEGIZy = floor_vault
215: else
216FTILE:   '`<{([>})]089rst%*|!?BCTDEGIZy = floor_pebble_darkgray
217: end
218MARKER:  E = lua:transp_loc("spin_cycle_entry")
219MARKER:  F = lua:transp_dest_loc("spin_cycle_entry")
220MARKER:  G = lua:transp_dest_loc("spin_cycle_exit")
221MARKER:  H = lua:transp_loc("spin_cycle_exit")
222MAP
223                          vvvvvvv
224                         vv'%<%'vv
225                 vvvv    vd'''''dv    vvvv
226                vv%'vvvvvv'''`'''vvvvvv'%vv
227               vv{''evvcccc+ccc+ccccvvg''[vv
228               v%'1'''cc...........cc'''3'%v
229               v'''cc+c.......N.....c+cc'''v
230               vve'c.....L~~~~OO~......c'gvv
231                vv'+....~MM~~~~N~~~....+'vv
232          xxxx xcccc..~~~~L~~~~OO~~~~..ccv  xxxx
233         xxJJxxx~~~..~~~~~MM~~~~N~~Q~~..ccxxxKKxx
234         xJJJJxx~~~~px~~~~~L~~~~OO~~x~~~~~xxKKKKx
235         xJJJJx~~~~~xm~~~~~MM~~~~N~~~P~~~~~xKKKKx
236         xxJJ~~~~~~~~~~~~~~.L...~~~~~~~~~~~~~KKxx
237    vvvv  xxx~www~~~~~~~~~.......~~~~~~~~www~xxxx
238   vv%'vv xx~~www~x~~~.....c+c+c....~~~x~www~~~xx vvvvv
239  vv(''fvvc~~~ww~R~~~.....cc'''cc.....~~R~ww~~~~cvv'%vvv
240  v%'2'''cc~~~~~RS~~..c+ccc''4''ccc+c..~SR~~~~~~cvf''(vv
241  v'''cc+c.~~~~x~~...cc''kch'''hci''cc..~~x~~~~~c'''2'%v
242  vvf'c....~~~~~~....+'7''cc%>%cc''5'+..~~~~~~~.c+cc'''v
243   vv'+...~~P~~~..c+cck''%bbbEbbb%''ic...~~~~xq....c'fvv
244   vvcc..~~x~~~..cc'jbbb%]bbnnnbb}%bbc+c..~~~ox~...+'vv
245   vcc...~Q~~~~..+'6'bbbbbbblllbbbbbbj'cc..~~~~~~..ccvv
246   vc....~~~~~~..c'''%bbbbbbl^lbbbbbb'6'+..~~~~~~...ccv
247 vvvc...~~~ON~~..cj'%)bblllllFllllbb%'''c..~~~~~~....cv
248vvg'c..~~ONO~~..ccccbbbbla""""""Albb)%'jc..~~~~~~~...cvvv
249v'''+..ONO~~~..cc'icbbbbl"""U"_""lbbbbcccc..~~~~~ML..c'evv
250v%''c.NO~~~~~..+'''%bnlll"_""""""lbbbbck'cc..~~MLM~..+'''v
251v['3c..~~~~~ML.c'5'}Gnl^H""""""U"lllnb%'''+..MLM~~~..c''%v
252v%''c..~~~MLM..+'''%bnlll"U""""""u^lnI]'7'c.LM~~~~~..c1'{v
253v'''+..~MLM~~..cc'icbbbbl""""""_"lllnb%'''+..~~~~~ON.c''%v
254vvg'c..LM~~~~~..ccccbbbbl""_"U"""lbbbbck'cc..~~~ONO..+'''v
255 vvvc...~~~~~~~..ch'%>bbl@""""""&lbbbbcccc..~~ONO~~..c'evv
256   vc....~~~~~~..c'''%bbllllzlllllbb>%'hc..~~NO~~~~..cvvv
257   vcc...~~~~~~..+'4'bbbbbbl^lbbbbbb%'''c..~~~~~~~...cv
258   vvcc..~~~~~~..cc'hbbbbbblllbbbbbbb'4'+..~~~~Q~...ccv
259  vvv'+...~xo~~~..c+cbb%]bbnnnbb}%bbbh'cc..~~~x~~..ccvv
260  vvd'c....qx~~~~...ck''%bbbybbb%''icc+c..~~~P~~...+'vvv
261  v'''cc+c.~~~~~~~..+'7''cc%)%cc''5'+....~~~~~~....c'dvv
262  v%'`'''c~~~~~x~~..cc''kcj'''jci''cc...~~x~~~~.c+cc'''v
263  vv<''dvc~~~~~~RS~..c+ccc''6''ccc+c..~~SR~~~~~cc'''`'%v
264   vv%'vvc~~~~ww~R~~.....cc'''cc.....~~~R~ww~~~cvvd''<vv
265    vvvv cxx~~www~x~~.....c+c+c.....~~~x~www~~xx vv'%vv
266          xxx~www~~~~~~~~.......~~~~~~~~~www~xxx  vvvv
267         xxKK~~~~~~~~~~~~~..L..~~~~~~~~~~~~~~JJxx
268         xKKKKx~~~~~P~~~N~~~MM~~~~~~mx~~~~~xJJJJx
269         xKKKKxx~~~~~x~~OO~~~L~~~~~~xp~~~~xxJJJJx
270         xxKKxxxxc..~~Q~~N~~~MM~~~~~~..~~~xxxJJxx
271          xxxx  vcc..~~~~OO~~~L~~~~~..ccccc xxxx
272               vv'+....~~~N~~~MM~~....+'vv
273              vve'c.....~~OO~~~L~.....c'gvv
274              v'''cc+c.....N.......c+cc'''v
275              v%'1'''cc...........cc'''3'%v
276              vv{''evvcccc+ccc+ccccvvg''[vv
277               vv%'vvvvvv'''2'''vvvvvv'%vv
278                vvvv    vf'''''fv    vvvv
279                        vv'%(%'vv
280                         vvvvvvv
281ENDMAP
282
283################################################################################
284# Giving players the runaround...
285
286default-depth:
287
288NAME: grunt_runaround
289TAGS: no_monster_gen uniq_d_encompass
290PLACE: Depths:$
291DEPTH: D:$, Depths:2-
292WEIGHT: 1 (D:$), 2 (Depths:$), 10
293ORIENT: encompass
294SUBVAULT: B : grunt_runaround_doors_1
295SUBVAULT: C : grunt_runaround_doors_2
296SUBVAULT: D : grunt_runaround_doors_3
297SUBVAULT: E : grunt_runaround_doors_4
298: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
299KFEAT:  Z = stone_wall
300TILE:   Z = wall_zot_magenta
301COLOUR: Z = lightmagenta
302SUBVAULT: F : grunt_runaround_zot
303NSUBST: < = 1:{ / 1:[ / 1:( / 2:< / *=A
304: elseif you.where() == dgn.level_name(dgn.br_entrance("Depths")) then
305KFEAT:  Z = metal_wall
306SUBST:  9 = 0
307SUBVAULT: F : grunt_runaround_depths
308NSUBST: < = 1:{ / 1:[ / 1:( / 2:< / *=A
309: else
310KFEAT: Z = metal_wall
311SUBVAULT: F : grunt_runaround_loot
312NSUBST: < = 1:{ / 1:[ / 1:( / 1:] / 1:) / *=A
313: end
314{{
315local room_centres = { 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
316                       'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
317                       'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W' }
318for i = 1, #room_centres do
319  subst(room_centres[i] .. ' : .:21 w l c v b:2')
320end
321}}
322#KMASK: 09 = !no_monster_gen
323SUBST: 0 = 0.
324SUBST: 9 = 90
325KMONS: 0 = 0 band
326KMONS: 9 = 9 band
327KFEAT: G = granite_statue / fountain_blue / fountain_sparkling w:1 / \
328           floor w:21
329MARKER: A = lua:props_marker { portal=1 }
330KFEAT:  A = floor
331MAP
332                  cccccccccccccccc
333                ccc.......<......ccc
334             cccc..................cccc
335           ccc..c..0.dddGddGddd.0..c..ccc
336          cc....BB................BB....cc
337         cc...0..c.cBBccccccccBBc.c..0...cc
338        cc......cccc.....cc.....cccc......cc
339       cc..kk.ccc...HH...CC...II...ccc.ee..cc
340      cc<.Gk.BB..HHGH..0.CC.0..IGII..BB.eG.<cc
341     cc..kk.cc...H.......cc.......I...cc.ee..cc
342    cc..Gk.cc..0....cCCccccccCCc....0..cc.eG..cc
343   cc..kk.ccc.....ccc..........ccc.....ccc.ee..cc
344   c...k.cccCC..CCc.c..0.QQ.0..c.cCC..CCccc.e...c
345  cc....Bc..CCccc...DD..QGGQ..DD...cccCC..cB....cc
346  c..0.cB....ccc..0..c........c..0..ccc....Bc.0..c
347  c....c..0..cc.PP...cDDccccDDc...RR.cc..0..c....c
348 cccB.cc....Cc.PG..DDc...ZZ...cDD..GR.cC....cc.Bccc
349 c..Bcc.OO..C..P..cc...9.EE.9...cc..R..C..JJ.ccB..c
350cc....c.O..cc.0..ccZ..9G.EE.G9..Zcc..0.cc..J.c....cc
351c..0.cc.G..c....DcZEE....ZZ....EEZcD....c..G.cc.0..c
352c....B.OO.cccD..D..EEZZEEZZEEZZEE..D..Dccc.JJ.B....c
353c..j.B.O..C..Dccc...ZZZFFFFFFZZZ...cccD..C..J.B.f..c
354c..j.c....C....D..9.ZZFFFFFFFFZZ.9..D....C....c.f..c
355c..j.c..0.c.0..D.9G.EFFFFFFFFFFE.G9.D..0.c.0..c.f..c
356c..G.c....c..W.c....EFFFFFFFFFFE....c.S..c....c.G..c
357c<.j.ccCCcc.WG.cZEEZZFFFFFFFFFFZZEEZc.GS.ccCCcc.f..c
358c..j.ccCCcc.WG.cZEEZZFFFFFFFFFFZZEEZc.GS.ccCCcc.f.<c
359c..G.c....c..W.c....EFFFFFFFFFFE....c.S..c....c.G..c
360c..j.c..0.c.0..D.9G.EFFFFFFFFFFE.G9.D..0.c.0..c.f..c
361c..j.c....C....D..9.ZZFFFFFFFFZZ.9..D....C....c.f..c
362c..j.B.N..C..Dccc...ZZZFFFFFFZZZ...cccD..C..K.B.f..c
363c....B.NN.cccD..D..EEZZEEZZEEZZEE..D..Dccc.KK.B....c
364c..0.cc.G..c....DcZEE....ZZ....EEZcD....c..G.cc.0..c
365cc....c.N..cc.0..ccZ..9G.EE.G9..Zcc..0.cc..K.c....cc
366 c..Bcc.NN..C..V..cc...9.EE.9...cc..T..C..KK.ccB..c
367 cccB.cc....Cc.VG..DDc...ZZ...cDD..GT.cC....cc.Bccc
368  c....c..0..cc.VV...cDDccccDDc...TT.cc..0..c....c
369  c..0.cB....ccc..0..c........c..0..ccc....Bc.0..c
370  cc....Bc..CCccc...DD..UGGU..DD...cccCC..cB....cc
371   c...i.cccCC..CCc.c..0.UU.0..c.cCC..CCccc.g...c
372   cc..ii.ccc.....ccc..........ccc.....ccc.gg..cc
373    cc..Gi.cc..0....cCCccccccCCc....0..cc.gG..cc
374     cc..ii.cc...M.......cc.......L...cc.gg..cc
375      cc<.Gi.BB..MMGM..0.CC.0..LGLL..BB.gG.<cc
376       cc..ii.ccc...MM...CC...LL...ccc.gg..cc
377        cc......cccc.....cc.....cccc......cc
378         cc...0..c.cBBccccccccBBc.c..0...cc
379          cc....BB................BB....cc
380           ccc..c..0.hhhGhhGhhh.0..c..ccc
381             cccc..................cccc
382                ccc......<.......ccc
383                  cccccccccccccccc
384ENDMAP
385
386NAME: grunt_runaround_doors_1
387TAGS: grunt_runaround_doors_1 allow_dup unrand
388SHUFFLE: ABCDEFGH
389SHUFFLE: IJKLMNOPQRSTUVWX
390SUBST: ABCDEFGIJ : +, HKLMNOPQRSTUVWX : c
391CLEAR: _
392MAP
393            AA                BB
394                II        JJ
395_
396_
397         XX                      KK
398_
399_
400_
401_
402    W                                  L
403    W                                  L
404_
405H                                          C
406H                                          C
407_
408_
409 V                                        M
410 V                                        M
411_
412_
413_
414_
415_
416_
417_
418_
419 U                                        N
420 U                                        N
421_
422_
423G                                          D
424G                                          D
425_
426    T                                  O
427    T                                  O
428_
429_
430_
431_
432         SS                      PP
433_
434_
435                RR        QQ
436            FF                EE
437ENDMAP
438
439NAME: grunt_runaround_doors_2
440TAGS: grunt_runaround_doors_2 allow_dup unrand
441SHUFFLE: ABCDEFGH
442SHUFFLE: IJKLMNOPQRSTUVWX
443SUBST: ABCDEFGIJ : +, HKLMNOPQRSTUVWX : c
444CLEAR: _
445MAP
446                  AA
447                  AA
448_
449              XX      II
450_
451     HH  WW                JJ  BB
452     HH                        BB
453_
454_
455     V                          K
456     V                          K
457_
458_
459_
460   U                              L
461   U                              L
462_
463_
464GG                                  CC
465GG                                  CC
466_
467_
468   T                              M
469   T                              M
470_
471_
472_
473     S                          N
474     S                          N
475_
476_
477     FF                        DD
478     FF  RR                OO  DD
479_
480              QQ      PP
481_
482                  EE
483                  EE
484ENDMAP
485
486NAME: grunt_runaround_doors_3
487TAGS: grunt_runaround_doors_3 allow_dup unrand
488SHUFFLE: ABCDEFGH
489SHUFFLE: IJKLMNOPQRSTUVWX
490SUBST: ABCDEFGIJ : +, HKLMNOPQRSTUVWX : c
491CLEAR: _
492MAP
493       AA        BB
494_
495         II    JJ
496      XX          KK
497_
498_
499   W                  L
500H  W                  L  C
501H                        C
502  V                    M
503  V                    M
504_
505_
506_
507_
508  U                    N
509  U                    N
510G                        D
511G  T                  O  D
512   T                  O
513_
514_
515      SS          PP
516         RR    QQ
517_
518       FF        EE
519ENDMAP
520
521NAME: grunt_runaround_doors_4
522TAGS: grunt_runaround_doors_4 allow_dup unrand
523SHUFFLE: ABCDEFGH
524SHUFFLE: IJKLMNOP
525SUBST:   ABCDEFGI : +, HJKLMNOP : Z
526: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
527KFEAT:  Z = stone_wall
528TILE:   Z = wall_zot_magenta
529COLOUR: Z = lightmagenta
530: else
531KFEAT:  Z = metal_wall
532: end
533CLEAR: _
534MAP
535        AA
536        AA
537  HH          BB
538  HH  PP  II  BB
539_
540_
541   O          J
542   O          J
543GG              CC
544GG              CC
545   N          K
546   N          K
547_
548_
549  FF  MM  LL  DD
550  FF          DD
551        EE
552        EE
553ENDMAP
554
555NAME: grunt_runaround_loot
556TAGS: grunt_runaround_loot allow_dup unrand
557SHUFFLE: }>de
558SUBST: d = %, e = A
559NSUBST: % = 4:| / 8:* / *=%
560KMONS: 9 = 9 band
561KMONS: 8 = 8 band
562MAP
563  ......
564 ..9..9..
565..8.%%.8..
566.9.%%%%.9.
567..%%}>%%..
568..%%de%%..
569.9.%%%%.9.
570..8.%%.8..
571 ..9..9..
572  ......
573ENDMAP
574
575NAME: grunt_runaround_depths
576TAGS: grunt_runaround_depths allow_dup unrand
577SHUFFLE: O3hi
578SUBST: hi = .
579NSUBST: 1 = 1:2 / *=1
580KFEAT: O = enter_depths
581MONS: tengu warrior band w:15 / tengu conjurer band w:15 / \
582      deep troll earth mage band / hell knight band / vampire knight band
583MONS: ettin w:20 / stone giant w:20 / fire giant / frost giant / \
584      fire dragon w:12 / ice dragon w:8 / titan
585MONS: caustic shrike w:5 / very ugly thing band w:20
586MAP
587  ......
588 ...cc...
589..1....1..
590..........
591.c..Oh..c.
592.c..i3..c.
593..........
594..1....1..
595 ...cc...
596  ......
597ENDMAP
598
599NAME: grunt_runaround_zot
600TAGS: grunt_runaround_zot allow_dup unrand
601COLOUR: .1defghijO = magenta
602FTILE: .1defghijO = floor_hall
603SHUFFLE: defg
604SHUFFLE: Ohij
605SUBST: hij = .
606NSUBST: 1 = 1:2 / *=1
607KFEAT: O = enter_zot
608KMONS: d = golden dragon
609KMONS: e = quicksilver dragon
610KMONS: f = storm dragon
611KMONS: g = shadow dragon
612MONS: base draconian
613MONS: nonbase draconian
614MAP
615  ......
616 ..1..1..
617..d....e..
618.1......1.
619....Oh....
620....ij....
621.1......1.
622..f....g..
623 ..1..1..
624  ......
625ENDMAP
626
627##############################################################
628NAME:   kennysheep_town
629TAGS:   uniq_d_encompass
630ORIENT: encompass
631DEPTH:  D:8-11
632WEIGHT: 5
633KMONS:  op = plant
634KMONS:  P = bush
635KMONS:  1 = merfolk
636KMONS:  2 = orc warrior / kobold brigand / two-headed ogre / troll / gnoll sergeant
637KMONS:  3 = orc priest / orc wizard / centaur / gnoll shaman
638KMONS:  4 = orc / hound / kobold / goblin / hobgoblin / gnoll
639KMONS:  5 = yak / hog / bullfrog w:40
640KMONS:  6 = wyvern w:6 / manticore w:3 / black bear w:19
641KITEM:  o5 = gold / nothing w:1000
642SUBST:  M = tww.!, p = pP!!!!!
643NSUBST: 1 = 1:1 / *:., H = 20:H / 5:% / 160:. / * = .:25 %:1 4
644NSUBST: F = 5:5 / 5 = 55o / * = o:100 R:57
645NSUBST: ' = 2:6 / 3 = 66... / *:., " = 2:6 / 3 = 66... / *:.
646NSUBST: ` = 3:6 / 4 = 66... / *:., - = 1:6 / 2 = 6.. / *:.
647NSUBST: } = 1:] / 1:) / 1:} / * = **23..
648TILE:   x = wall_pebble_brown
649FTILE:  !pPt = floor_grass / floor_dirt w:1
650FTILE:  5oR = floor_dirt
651SUBST:  ! = .
652MAP
653xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
654xxxxxxxxxx'''''''''''xxxxxxwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
655xxxxxx''''''''''''''''''xxxxwwwwwwwxxxxxxxxxxxxxxxxxxxxx""""""""xxxxxxxxxxxxxxxx
656xxxx'''''''xx'}''xxx'''''xxxxwwwwwwxxxxxxxxxxxxxxxxx"""""xxxxxx""""""""xxxxxxxxx
657xxx''''xxxxxxx*'*xxxxx''''xxxwwwwwwxxxxxxxxxxxxxxxx""xx"xxxxxxxxxxxxx""""xxxxxxx
658xxx!'xxxxxxxxxxxxxxxxxxx'!xxxxwwwwwxxxxxxxxxxxxx!x""xxx"""xxxxxxxxxxxxxx""xxxxxx
659xtt!!xxxxxxttttttxxxxxxt!!ttttwwwwwxxxxxxttttttt!""xxxxxx!!!xxxxxxxx*xx"""xxxxxx
660xtt!!tttttttttttttttttt!!tttttwwwwww!!ptttttttttp!!xxxxtttt!!xxxxxxxx""""xxxxxxx
661xtt!!tttttttttttttttttt!tttttt!wwwwww!ppttttttttpp!tttttttt!ptttxxxxxxxx"""xxxxx
662xttt!!tttttpppptttttttt!tppppt!wwwwwww!pttpptttttp!tttttttt!ttttxxxxxxxxxx"""xxx
663xttt!!tptpppppppptttttp!pp!!!!!wwwwwwwwppppppppttp!ttttttttt!ttttxxxxxxxxxxx*xxx
664xtttt!!ppppwwwppppppppp!!!!!!!!!wwwwwwww!!!!!!ppp!pttttttttt!ptttttttxxxxxxx}xxx
665xtttp!!!wwwwwwwwppw!!!!!!wwwwwwwwwwwwwwwww!!!!!!!!!ptttttttt!!ptttttttxxxxxxxxxx
666xtttp!!!wccmmccwwwwwwwwwwccmmccwwwwwwwwwwwwwwwwwwww!pptttttttt!pttttttttxxxxxxxx
667xttpp!!!wcHHHHcRRRRwRRRRRcHHHHcwww!wwwwwwwwwwwwwwww..!ptttttttt!pttttttttpxxxxxx
668xtttp!!!wmH3HHcRRRRRRRRRRcHH3Hmww!!!!wwwwwwwwwwwwwwww.!ppppptpp!!ppppppptp!!xxxx
669xtttp!!!wmHHHHcRRRRRRRRRRcHHHHmww!!!!!!wwwwwwwwwwwwwwww!!!!!!!!!!!!!!!!!!!!!xxxx
670xtttp!!!wcHHHHccccccccccccHHHHcw!!!!!!.!!!!!!!!wwwwwwww.FFFFFFFFFFFFFFFFFFF!!xxx
671xtttp!!!wcccHHHHHHHHHHHHHHHHcccw!!!!!...!!!!!!!!!wwwwwww!!!!!!!!!!!!!!!!!!!!!xxx
672xttpp!!!wRRcHcccccc++ccccccHcRRww!!!..G..!!!!!!!!wwwwwwwFFFFFFFFFFFFFFFFFFF!!!!x
673xttp!!!!wRRcHc|**c2HHHHHH2cHcRRww!!cc...cc!!!!!!wwwwwwww!!!!!!!!!!!!!!!!!!!!!!!x
674xttp!!!!wRRcHc***+HHHHHH3HcHcRRw!!.cc...cc.!!!!!wwwwwwwwFFFFFFFFFFFFFFFFFFF!!!!x
675xttp!!!wRRRcHc|**c2HHHHHH2cHcRRw!...........!!!!wwwwwwww!!!!!!!!!!!!!!!!!!!!!!!x
676xttpp!!wwRRcHccccccccccccccHcRR!..G...C...G..!!wwwwwwwwwwFFFFFFFFFFFFFFFFFF!!!!x
677xtttpp!!wcccHHHHHH2HH2HHHHHHcccw!...........!!!wwwwwwwww!!!!!!!!!!!!!!!!!!!!!!!x
678xttttp!!wcHHHHccccHHHHccccHHHHcw!!.cc...cc.!!!!wwwwwwwwwFFFFFFFFFFFFFFFFFFF!!!!x
679xttttp!!wmHHHHcRRcHHHHcRRcHHHHmw!!!cc...cc!!!!wwwwwwwwww!!!!!!!!!!!!!!!!!!!!!!!x
680xttttp!!wmH3HHcRRcc++ccRRcHH3Hmw!!!!..G..!!!!wwwwwwwwwwwFFFFFFFFFFFFccccccc!!!!x
681xtttpp!!wcHHHHcRRRR..RRRRcHHHHcww!!!!...!!!!wwwwwwwwwwww!!!!!!!!!!!!cHHH}Hc!!!!x
682xtttppp!wccmmccRRRw..RwRRccmmccw!!!!!...!!!wwwwwwwwwwwwwFFFFFFFFFFFFcHHHHHc!!!!x
683xtttttppwwwwwwwwwww..wwwwwwwwwww!!!!!...!!wwwwwwww!!wwww.!!!!!!!!!!!c++cccc!!!!x
684xttttttpp!!!www!ww!..!!!!!!!!!!!!!!!!...!wwwwccc!!!!!wwwwFFFFFFFFFFFF..!!!!!!!!x
685xtttttttppppp!!!!!!..!cccc!!!!!!!!!!!...wwwwccHcc!!!!wwww!!!!!!!!!!!!..!!!!!!!tx
686xttttttttttttp!!!!!..!cH}c!!!!!!!!!!!...wwwccHHHcc!!wwwww!F!F!F!F!F!F..cccc!!!tx
687xttttttttttpp!!!!!!..!cHHc!!!!!!!!!!!...wwwcHH}HHc!!wwwwwwF!F!F!F!F!F..+HHc!tttx
688xttttttttppp!!!!!!!..!c+cc!!!!!!cccc!...wwwccHHHcc!!wwwwwwF!F!F!F!F!F..cH}c!tttx
689xtttttttp!!!!!!!!!!.....!!!!!!!!c}Hc!...wwwwccHc+.!!wwwww!F!F!F!F!F!F..cccc!tttx
690xttttttp!!!cccccc.......!!!!!!!!cHHc!...wwww!ccc..!!wwwww!F!F!F!F!F!F..!!!!!tttx
691xttttttp!!!cHHHH+....!!!!!cccc!!cc+c!...wwww!!!!..!!wwwww!F!F!F!F!F!F..!!!tttttx
692xttttttp!!!cH}HHc!!..!!!!!cH}c!!!..!!...wwww!!!!..!!wwwww!F!F!F!F!F!F..!!ttttttx
693cccctt...!!cHHHHc!!..!!!!!cHHc!!!..!!...wwww!!!!..!!wwwww!F!F!F!F!F!F..t!ttttttx
694cHHct.....!cHHHHc!!.3!!!!!c+cc!!!..!!...wwww!!!!..!wwwww!!F!F!F!F!F!F..t!!tttttx
695c}H+..ttp..cccccc!!.T..................................................tt!!ttttx
696cccctttpp!.............................................................tt!!!tttx
697 xtttttp!!!..........!!!!!!..!!!!..!!!!!wwww!!!!!!wwwwww!!!...!!!!!!!tttt!t!!ttx
698 xtttttp!!!!cc+c!!!..!!!!!cc+c!!c+cc!!!!wwwww!!!!!wwwww!!!!...!!!!!!!ttt!ttt!ttx
699 xttttpp!!!!cHHc!!!..!!!!!cHHc!!cHHc!!!wwwwww!!!!wwwwww!!!c+++c!!!!!!ttt!ttt!ttx
700 xttttp!!!!!c}Hc!!!c+cc!!!c}Hc!!cHHc!!!wwwwww!!!wwwwww!!!cc...cc!!!!!ttt!ttt!ttx
701xxxttpp!!!!!cccc!!!cHHc!!!cccc!!cH}c!!wwwwwww!!wwwwwww!!cc.....cc!!!!ttt!ttt!ttx
702xxxxpp!!!!!!!!!!!!!c}Hc!!!!!!!!!cccc!!wwwwwwwwwwwwwwww!!c...{...c!!!tttt!!tt!ttx
703xxxx!!!!!!!!!!!!!!!cccc!!!!!!!!!!!!!MwwwwwwwwwwwwwwwwM!!c.......c!!tttttt!t!!ttx
704xxxx!!xxx!!!!!!!!!!!!!!!!!!!!!!!!!!!MwwwwwwwwwwwwwwwMM!!c..(.[..c!!tttttt!t!tttx
705xxxx``xxxx!!!!!!!!!!!!!!!!!!!!!!!!!MwwwwwwwwwwwwwwwMM!!!cc.....cc!!ttttttt!ttttx
706xxxxx`xxxx!!!!!!!!!!!!!!!!!!!!!!MM!MwwwwwwwwwwwwwwMM!MMM!cc...cc!!ttttttt!!!tttx
707xxxxx``xxx!!x!!!!!!!M!M!!!!!!!MMMwMMwwwwwwwwwwwwwMM!MwwMM!ccccc!!ttttttt!!t!ttxx
708xxxxxx`xxx``xxxMMMMMMwM!!!!!!!MwwwMMMwwwwwwwwwwwMM..MwwwM!!!!!!!!ttttttt!tt!txxx
709xxxxxx`xx```xxxxwwwwwwMMMMMM!!MwwM.!MwwwwwwwwwMMM....MMMM!!!!!!!!tttttt!!tt!txxx
710xxxxxx``````.xxxwwwwMMMMwwwwM!MMMM.MwwwwwwwwMMM..MMMM...!!!!!!!!!tt!!!!!ttt!txxx
711xxxxxxx```xx.`xxxxxMM!.!MMwMw!!....MwwwwwwwMM..MMwwwM..MMM!MM!!!!!!!!!ttttt!txxx
712xxxxxxx``xxxx``xxxx..MMM!....!wwMM.MwcccccwM.wwwwwwwM.wwww!wMM!!!!!tttttttt!!xxx
713xxxxxx``xxxxxx`xxxxx.MwwMMwM!wwwwwM.ccwwwccM.MwwwwMMM.wwwM!MwMM!tttttttttxx!!xxx
714xxxxxx`xxxxxxxx`xxxxx.MwwwM.....ww.ccwwwwwcc.MMMMMM..MM....MwwMMttttttttxxx!!-xx
715xxxxx``xxxxxxx```xxxxx.Mww.MMMMM..Mcww*1..wcM......MMwwwwM..!wwMttttttttxxx!--xx
716xxxxx`xxx`````xx`xxxxx..MM!MwwwwMM.+W.*}*.W+.M.MMwwwwwwwwMM!!!MMttttttttxxx---xx
717xx```````xxxxxxx`xxxxxxxwwM.Mwwwww.cw.1*1wwcwM.MwwwwwwxxwwM!!xxxxxxxxxxxxx----xx
718x````xxxxxxxxxxx``xxxxxxwwM...MwwMMccwwwwwccwMMMwxxxxxxxwwMxxxxxxxxxxxxxxx-----x
719x```xxxxxxxxxxxx`````xxxxxxxxxxxxxxxccwwwccwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxx---}-x
720x`}`xxxxxxxxxxxxx```}`xxxxxxxxxxxxxxxcccccwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxx----x
721x*``xxxxxxxxxxxxxx```*xxxxxxxxxxxxxxxxxxxwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
722xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
723ENDMAP
724