Zot trap sound messages were being sent to the wrong channel, fixed.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1403 c06c8d41-db1a-0410-9941-cceddc491573
OVDIHWR5FEPTBZCTEAXNPB4MYP5NUNPQMC6UM4F6SC4EBGWH3DSQC XZLW6TCNFL3HFCLJJY7O6BMP7LLRJB44ZJHJCQIYD6GPVVBLZFHQC AAAUQAV76BL63J4HPATVE67LJD4L6OES4A2XODS2OGISOFYQY3XQC OTAXEUGHFR5A4NAUA3HDTIOQZO7E4MFX6ILDID3DHFEAOWUWRZ4QC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC JGHLI3F3AEQ7XIRZUVGCA45KCONYFGMTGYIXYVIRI2FTWGVK73CAC OAPAH3WEFTT2T7NVSSENRR5JCIZYA6UZSQQ6LQEHAAXCX6FIM7HQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC WX535AVP7MD2BYA3NAU3VPV7QN6JOCE4JHDRMXKYNRIW7V2UOHJAC C52GDIYN6W4WNYL2QV7L7OKFBVLPFSBQAEBCX44PAXCZ5H7JXCJQC JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC SVUM62ARSXH6RUBFRWS6KAQC7PTNTMGSV2GPZJQQJ4GNEML2HBVQC L6O4LGZRKBURVWEY7XRVCSQLJ5RULNBEWMQJ6I2UYVWWB66FM3MQC KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC JQFQX7IWSJ4TYWVUVXAFMCPSAN67PRMNECDQI5WMON2JFMQVVUEQC LY6WZIBS6CVHJQJGFPTFGA74PGXM4MJ7GDDPGRK73E4RCXOVNUIQC U7BN4TQ36FIOAGBVWQ4A6VXFZN2GETLGCLD4E3MCBA7OQ3TXYUXQC KFJEFN377VIZ7OH2XCYOGCELNEGO4CIOOP7DNXEMX3LFKIKWXVTAC LS3DAZVRDCXVN2BKBC6RGCKO3R43Z7HKG4GXJWLBK4AKBL2G6QDQC I5N4EIR6SCLLRGKRBUKW5FKUVYK62EA5DOWIAS5XFIHZQKMCXWBAC MI7CWKRDXHAU7PIHLXXOSFBULRGT2OOMIMOSQLMVYOUVGABIVXGAC RIRJ746W5ESARX4HUEA4JRVAKXXF3WYVXUCFFONPJMMKWHQAGI2AC 7J3H7JY6AUO2UHNF6DAHDZI4O33JMTUUTYTPRM3CKNPUOF2RQOGAC 3DRML4TAWIPPWCXCCXTPWV33SZCRSC2I6DWGAEUNJF7ZOIIWA35QC A3CO4KBFTFU3ZSHWRY2OPPX3MMTFV7OUCZGL7Q4Y2FU7JO4AP7MAC QPF4HHRIRNZTEJUMRMB7EFYRF6RT6CTJECAAWRXV7EKHUEO77V7QC CN42LZS44WQESLCPIYQ5FJ3RE7TPPDREDQ4GAQYI2BJNO5NMXH6QC IOSNCCW2K2IKIORI3Y37Z7OC6ESR3KEKQDP7JMJQW7BNRBC2MX6AC HGBRLCY5HZJNSTQ4UVZ3U4HHEVITJ7P374VQ7CQ7WAN3YARCWLNQC JRYVXGKB63GQ7O2MV4FSFPW3ZW7DZ36VRBCIGPEH44J4XYV22I3AC 6UKWC6MVT24J5QBFVFMORHHMHWQMS7TP77OJSRYNCFQGKTWBCKPAC YMNWB2JPFFAEHTFKXSKBILNBPH7MLI627QUXZS462VEZJDS263DQC UPSO7EF3NRXCZ46AOOWCGK6WZU5NJB4ZUH6JOV344KSNHNV2X32AC 55F3WPRLVULKMXZPSACPON6H7SBEVNNZNQ2MOOISD2FKAQTRLYFAC EEPNZ3SHGXQ4NKLSWHI7X2WK3LU3AR2EDZZFFDGOXQQBK5LO5OYAC 25V4IA67QFLZRTBPZLHZ7R2VTFRBBQBE3IS4ASN5BJRBXPEHSALQC FOCWL2MOKK6BNARCKZIN6DPTOYRFILRJLURUT2JBORS25MMVGGSQC UFLQ2LXPSQHE3XF57FPHQZIQPJUCFHB3Y5DMNZMRHOCV4LYKJGGQC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC TY6JR6MSAREXQ3JH44ILKPYBVVCBVDXWD2UA74RLIDULCU23XRHQC 6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC ############################################################################### Random vaults, minivaults and canonical entry vaults go here; asciiart# entry vaults go in asciiart.des and "edgy" entry vaults go in tricky.des.# Special levels (including V:8!) should go to splev.des. Do NOT put special# levels here, or they could be selected when the game seeks random vaults.## Key:# ----# x - DNGN_ROCK_WALL# X - DNGN_PERMAROCK_WALL -> should always be undiggable! -- bwr# c - DNGN_STONE_WALL# v - DNGN_METAL_WALL# b - DNGN_GREEN_CRYSTAL_WALL# a - DNGN_WAX_WALL# . - DNGN_FLOOR# + - DNGN_CLOSED_DOOR# = - DNGN_SECRET_DOOR# @ - entry point - must be on outside and, except in ORIENT:float layouts,# must always be on a particular side or sides - see templates# W - shallow water# w - deep water - Entry vault makers: this may receive water creatures!# l - lava - Entry vault makers, note that this may receive lava creatures!# (Use the no_monster_gen tag to prevent both of these effects.)# >< - extra stairs - you can leave level by these but will never be placed o# them from another level# }{ - stairs 82/86 - You must be able to reach these from each other. The {# upstair is also the stair on which the player will enter the dungeon for# entry vaults.# )( - stairs 83/87# ][ - stairs 84/88# I - orcish idol (does nothing)# ^ - random trap# ~ - random trap suitable for the branch and depth the map is being used.## A - Vestibule gateway (opened by Horn).# B - Altar. These are assigned specific types (eg of Zin etc) in dungeon.cc,# in order.# C - Random Altar.# F - Typically a Granite Statue, but may be Orange or Silver (1 in 100)# G - Granite statue (does nothing)# H - orange crystal statue (attacks mind)# S - Silver statue (summons demons). Avoid using (rare).# T - Water fountain# U - Magic fountain# V - Permanently dry fountain## $ - gold# % - normal item# * - higher level item (good)# | - acquirement-level item (almost guaranteed excellent)# O - place an appropriate rune here. For portal vaults, place the portal here.# P - maybe place a rune here (50%)# R - honeycomb (2/3) or royal jelly (1/3)# Z - the Orb of Zot## d-k - item array item. See section below on ITEM: arrays for more info.## 0 - normal monster# 9 - +5 depth monster# 8 - (+2) * 2 depth monster (aargh!). Can get golden dragons and titans# this way.# 1-7 - monster array monster. See section below on MONS: arrays for more# information## A vault always has its body between MAP and ENDMAP commands. Furthermore,# several other additional commands are possible (some of them mandatory).## NAME:# ----# Each vault/level/map must have a unique name. Underscores and digits are ok.## ORIENT: (north | northwest | ... | float | encompass)# ------# Some kind of ORIENT: line is mandatory, unless you want the vault to be a# minivault, which is usually not what you want. Valid values are:# "float": The dungeon builder will put your vault wherever it wants to.# "some_direction": The vault will lie along the mentioned side of the map:# xxxxxxxxxx xxxxxxxxxxxxx# xORIENT:Nx xORIENT:NW|..# x.VAULT..x x.VAULT...|..# x--------x x---------|..# xrest....x xrest........# x...of...x x.....of.....# x...levelx x.......level# ...which brings us to padding. With any some_direction orientation, you need# 6 layers of x-padding along any level-edge that the vault borders. For# instance, if your map is ORIENT: north, you must have a 6 deep border of# rock wall (or any other kind of wall) along the northern, eastern, and# western edges of the map.# "encompass": the vault completely occupies the entire level. Padding is# needed on all 4 sides.## ITEM:# ----# These are used to help place specified items at specific places within a# vault. They create an array with up to 8 positions. What's in the first# position in the array will be used when the dungeon builder sees a "d" in# the vault definition, the second will be used for "e"s, etc. Positions are# comma-separated; several ITEM: lines are possible as well.# Positions can contain multiple possibilities, one of which the builder will# choose randomly. Separate such multiple possibilities using a slash. Note# that "nothing" (without the quotes) is a valid possibility. The random# choice is done for each individual occurence of the letter.# You can also give possibilities a "weight," which affects their chance of# being picked. The default weight is 10. The chance to pick a possibility is# [possibility's weight: / sum of all weight:s in that array position]# Modifiers:# "good_item" makes the builder try to make the item a good one.# "any" by itself gives random choice; you can combine "any" with "good_item."# "any book", "any misc" etc. gives a random item of that class.## Limitations: You can't affect stack quantity for stackable items, nor can you# affect curse status nor item race, nor can you give specific egos, nor can# give fixedarts. You also can't lay down corpses, skeletons, or chunks.## MONS:# ----# These are used to help place specific monsters at specific places in a# vault. They create an array with up to 7 positions. What's in the first# position in the array will be used when the dungeon builder sees a "1"# in the vault definition, the second for "2," etc. Note that if, for# example, you place a 3 on the map, but your MONS: line has no third# position, the 3 will be filled with RANDOM_MONSTER.# Individual monsters may be prefixed with the "generate_awake" (without# the quotes). Use this sparingly.# Note that 8, 9, 0 also place monsters (see the table above).## CHANCE:# ------# For entry vaults and any other vaults randomly picked from among a set,# this type of line affects the likelihood of the given vault being picked in# a given game. The default CHANCE: is 10. The likelihood of a vault getting# picked is:# [vault's CHANCE: / sum of all CHANCE:s of vaults of that type]# !!! Note for entry vault builders: really high values like CHANCE:5000# almost guarantee that a vault will be picked, and thus are great# for testing. !!!## TAGS:# ----# Tags go an a TAGS: line and are space-separated. Valid tags are:# "entry": this tag MUST be there for a vault to be pickable as an entry vault.# "generate_awake": Monsters placed (using MONS, KMONS) in this vault will be# generated awake.# "no_item_gen": Prevents random item generation in the vault. Items# explicitly placed by the vault are not affected.# "no_monster_gen": Prevents random monster generation at the time of# the vault's creation. Highly advised for entry vaults with# a player-hostile geography, MUST-HAVE for those with water# or lava.# "no_pool_fixup": prevents water squares next to land from being randomly# converted from deep water (the default) to shallow.# "branch_entry" eg. "orc_entry", "lair_entry" etc. If chosen, these maps# will contain the stairs for that branch. Use "O" to place# the stairs. Branch entries should go to splev.des.## FLAGS:# -----# Flags go on a FLAGS: line and are space-separated. Valid flags are:# "no_rotate": Normally, the dungeon builder can, at its whim, rotate your# vault. This flag tells it, "hey, don't do that to my vault!"# "no_hmirror": Like no_rotate, but for horizontal mirroring.# "no_vmirror": Like no_rotate, but for vertical mirroring.## SHUFFLE:# -------# This allows you to randomly permute glyphs on the map. There are two ways:# SHUFFLE: 123w (i.e. list of glyphs, NOT slash-separated)# could, for example, swap all occurences of "1" with "2",# as well as swapping all "3" with "w" (or any other of the 23# possibilities).# SHUFFLE: 12/3w (i.e. list of slash-separated blocks of same size)# will either do nothing or swap all "1" with "3" and then also# swap "2" with "w" everywhere.## Several SHUFFLE: lines can be used, and mixed with SUBST:, and the shuffles# and substitutions will be applied in order. You can also put multiple# SHUFFLEs on one line, comma-separated. Shuffles cannot use , or /. All spaces# are stripped before shuffling.## SUBST:# ------# The SUBST: directive allows you to specify a placeholder symbol that is# replaced with a random glyph from a set. For instance:# SUBST: ? = TUV# will replace occurrences of ? with one of TUV.# SUBST: ? = T U V# does the same thing - whitespace is not significant.# SUBST: ? = T:20 U V# makes T twice as likely to be used as U or V (the default weight# is 10). Note that there has to be at least one space before and after# T:20 and that whitespace in T:20 is not permitted.# SUBST: ? : TUV# replaces occurrences of ? with one of TUV, and guarantees that all# occurrences of ? will get the same replacement symbol.## The placeholder and replacement symbols can be any non-space, printable# character, including : and =, apart from commas - "SUBST: = = +=:123def" is# valid.## SUBST: lines can safely replace symbols with themselves:## SUBST: w = wW## Multiple SUBST: lines can be used, and mixed with SHUFFLE:, and will be# applied in order. Multiple substitutions can be performed on one line, using# commas.## KFEAT:# -----# The KFEAT: directive allows you to specify a placeholder symbol that is# replaced with another symbol, named feature, trap, or shop. Eg.:## KFEAT: Z = C / needle trap / antique armour shop / altar of Zin## Replaces occurrences of Z with C (random altar), a needle trap, an# antique armour shop, or an altar of Zin. Different instances of Z may# receive different replacements. To force a single replacement for all Z,# use:## KFEAT: Z : C / needle trap / antique armour shop## You'll notice that 'Z' is the symbol of the Orb of Zot. Kxxx directives# allow you to assign arbitrary definitions to any symbol.## The placeholder used by KFEAT can be shared by KITEM and KMONS. See below.# If the placeholder is shared, all defined Kxxxx operations for the# placeholder are performed.## KMONS:# -----# KMONS: allows you to specify a placeholder symbol that indicates the# position of a monster (or monsters).## KMONS: ? = orc priest / deep elf priest## Using KMONS: allows you to exceed the 7 slot limit for monsters. It is also# useful if you want to place a monster on a non-floor square (used in# association with a KFEAT:). Eg:## KFEAT: Z = W# KMONS: Z = rat## (Places a rat on a shallow water square for all occurrences of Z.)## KITEM:# -----# KITEM: places the specified item at all occurrences of the placeholder. It# can be combined with KFEAT and KMONS for the same placeholder. Eg:## KITEM: ? = potion of healing / potion of restore abilities### Note that a lot of the vaults are in there mainly to add some# interest to the scenery, and are not the lethal treasure-fests you# find in Angband (not that there's anything wrong with that)## Guidelines for creating new vault maps:# ---------------------------------------## If your map is not a minivault or a floating vault, make sure the side(s)# forming the border have a rock wall padding at least 6 deep. For instance,# if your map is ORIENT: north, you must have a 6 deep border of rock wall# (or any other kind of wall) along the northern, eastern, and western edges# of the map. If you're doing a fullscreen map (encompass), you must pad all# around the map with 6 layers of wall. For ORIENT: encompass maps, you# don't need to explicitly include the padding provided you make the map# small enough that the padding can be provided automatically.## You do not have to place all of the stairs unless the level is full screen,# in which case you must place all except the extra stairs (> and <). The <># stairs can be put anywhere and in any quantities but do not have to be# there. Any of the other stairs which are not present in the vault will be# randomly placed outside it. Also generally try to avoid rooms with no exit.## You can use the templates below to build vaults. The entry point '@' must# be present (except full-screen vaults where it must not and orient:float# maps, where it is optional - the builder will randomly convert '.' spaces# on edges to entry points if needed) and be on an edge of the vault.## Minivaults are handled very differently from regular vaults and special# levels. They're placed *after* normal map generation, whereas normal# vaults are placed before generating the rest of the level. There's no way# to guarantee generation of a minivault on a particular level, whereas# vaults can be forced to appear using a PLACE: attribute.## I think that's all. Have fun!#
################################################################################ vaults.des - entry vaults, random vaults, minivaults, pan vaults# (entries for branches should go to splev.des,# some entry vaults are better put in tricky.des or asciiart.des)
x...x....xxxxxx...xx...x....x...xx...x....x.....[{(.....xxxxxx...xx...x....x...xx...xx...x........xx...xx...xx...xxxxx...xx...xxxxxxx.........xx...x.....xx....x.....
x...x....xlllxx...xx...x....x...xx...x....x...k.[{(.m...xffffx...xx...x....x...xx...xx...x....e...xx...xx...xx...xxnxx...xx...xxxxxxx....c....xx...x.....xx....x.....
xxx....xxx.....x.......xxx....xxxxxxx.....xxxx..x....xxxx.....xxxxxxxxx.......xxxxx.xxx.......xxxxxxxxxxxxx.......x.........xxxxxxxxxxxxxxxxxxx....x......xxxxxxxxxxx
xxx....xxx.....d.......xxx....xxxxxxx.....xxxx..d....xxxx.....xxxxxxxxx.......xxxxxaxxx.......xxxxxxxxxxxxx.......b.........xxxxxxxxxxxxxxxxxxx....b......xxxxxxxxxxx
ENDMAP###################################################################### Three rhombiNAME: david_entry_012TAGS: entry no_monster_genSHUFFLE: WYZ{/wyz(SUBST: Z=x, Y=x, W=@, C==+xSUBST: z=@, y=+, w=xMAPxxxZxxxxxxxxxxxxxYxxxxxxxxxxxxx.xxxx.xxxxxxx...xx.x+xxxxx..{..+xx.xxxxxx...xxx...xxxxxx.xxx.....xxxxxCxx...(...Wxxx.xxx.....xxxx...xxx...xxxx..[..+xx.xxxxxx...xx.x+xxxxxxx.xxxx.xxxxxxxxxxxxxxxxxxx
# A shrine (no altar)NAME: david_entry_013TAGS: entry no_monster_gen no_pool_fixupSHUFFLE: AB/CD, lwSUBST: A=@, B=+, C=x, D=lMAPxxxxxxxxCxxxxxxxxxlllllllDlllllllxxlllll.....lllllxxll....WWW....llxxl...WWW.WWW...lxAB..WWW.{..WW..lxxl...WWW.WWW...lxxll....WWW....llxxlllll.....lllllxxlllllllllllllllxxxxxxxxxxxxxxxxxxENDMAP#####################################################################
..xcl.C.=....cx..xcl...c....cx..xcllllc....cx..xcclllc...]cx..xcccccccccccx@{xxxxxxxxxxxxxENDMAPNAME: david_entry_057_e_altarTAGS: entryORIENT: floatSHUFFLE: {[MONS: gnoll / orc priest, large zombie / giant beetleCHANCE: 2MAP@.............@..............[..xxxxxxxxxxxxx..xcccccccccccx..xcclllc.2..cx..xcllllc....cx..xcl...c1...cx
SHUFFLE: YS/nNSUBST: n=., N=@SHUFFLE: XR/nNSUBST: n=., N=@SHUFFLE: WQ/nNSUBST: n=., N=@SHUFFLE: VP/nNSUBST: n=., N=@SHUFFLE: UO/nNSUBST: n=., N=@SUBST: Z=x,Y=x,X=x,W=x,V=x,U=x,T=x,S=x,R=x,Q=x,P=x,O=x
SUBST: u=x, v=x, w=x, y=x, z=xSUBST: U=x, V=x, W=x, Y=x, Z=x
xxxxxxxxxx@xxxxxxxxxxxxxxxxxxxOxxxxxxxxxxxxxxxxxxxx..xxxxxxxxx1xxxxxxUxxxxxxxxxxxxxxxxxxxxxxx..xxxxxx111xxxxxUxxxxxxxxxxxxxZZZxxxxxxxxx.xxxxxx1xxxxxxUxxxxxxxxxxTZZxZxZxx555xx.xxxxxxx1xxxxxUxxxxxxxxxxxxxxxxxxZxx5xxx.xxx..x1xxxxxUxxxxxxxxxxxxxxxxxxxZxx5xxxx......xxxxxUUxxxxxxxxxxxxxxxxxxxZxxx5xx...2...cccxxxUxxxxxxxxxxxxxxxxxxZxxxx....2224..+$cxxUxxxxxxxxxxxxxxxxxxxxZ.......2ll22.cccxxxUxxxxxxxxxxxxxxxxxxxxx......3222.xxxxxxxUxxxxxxxxxxxxxxxxxxxxxYxxxx2.......xx...xVVVVxxxxxxxxxxxxxxxxYxxxx.......xx..xxxxxxxxVxxxxxxxxxxxxxYYxxxxxXxxxxx.xxWxxxxxxxxxxVVxxxxxxxxYxYxxxxxxXxxxxxxx.xxWxxxxxxxxxVxxxxxxxYYYYxxxxxxxxXXXXXxxxxxxWxxxxxxxVxxxxxxxxYxxxxxxxxxxxxxxxXXxxxxxxWWxxxxxxVVxxxxxSxxxxxxxxxxxxxxxxxXxxxxxxxxWxxxxxxxVVVVPxxxxxxxxxxxxxxxxXXxxxxxxxxxxWxxxxxxxxxxxxxxxxxxxxxxxXXXXxxxxxxxxxxxxWxxxxxxxxxxxxxxxxxxxxxxRxxxxxxxxxxxxxxxxQxxxxxxxxxxx
xxxxxxxxxxSxxxxxxxxxxxxxxxxxxxUxxxxxxxxxxxxxxxxxxxxssxxxxxxxxx1xxxxxxuxxxxxxxxxxxxxxxxxxxxxxxssxxxxxx111xxxxxuxxxxxxxxxxxxxzzzxxxxxxxxxsxxxxxx1xxxxxxuxxxxxxxxxxZzzxzxzxx555xxsxxxxxxx1xxxxxuxxxxxxxxxxxxxxxxxxzxx5xxx.xxx..x1xxxxxuxxxxxxxxxxxxxxxxxxxzxx5xxxx......xxxxxuuxxxxxxxxxxxxxxxxxxzxxxx5xx...2...cccxxxuxxxxxxxxxxxxxxxxxxzxxxx....2224..+$cxxuxxxxxxxxxxxxxxxxxxxxz.......2ll22.cccxxxuxxxxxxxxxxxxxxxxxxxxx......3222.xxxxxxuxxxxxxxxxxxxxxxxxxxxxxyxxxx2.......xxuuxxvvvvxxxxxxxxxxxxxxxxyxxxx.......xx..vxvvxxxxvxxxxxxxxxxxxxyyxxxxxrxxxxx.xxwxxvxxxxxxxvvxxxxxxxxyxyxxxxxxrxxrxxxx.xxwxxxxxxxxxvxxxxxxxyyyyxxxxxxxxrrxrrxxxxxxwxxxxxxxvxxxxxxxxyxxxxxxxxxxxxxrxrrxxxxxxwwxxxxxxvvxxxxxYxxxxxxxxxxxxxxxxxrxxxxxxxxwxxxxxxxvvxvVxxxxxxxxxxxxxxxxrrxxxxxxxxxxwxxxxxxxxvxxxxxxxxxxxxxxrrrrxxxxxxxxxxxxwxxxxxxxxxxxxxxxxxxxxxxRxxxxxxxxxxxxxxxxWxxxxxxxxxxx
DEPTH: 5-12MONS: giant beetle w:20 / giant cockroach w:30 / butterfly w:20 / bumblebee / giant centipede / giant mite w:30 / giant mosquito / giant blowfly / scorpion / redback w:5
DEPTH: 5-12SUBST: 1 = 1:70 2:60 3:25MONS: giant beetle w:20 / giant cockroach w:30 / butterfly w:20MONS: bumblebee / giant centipede / giant mite w:30 / giant mosquitoMONS: giant blowfly / scorpion / redback w:5
ENDMAP############################################################################## Oklob assaultNAME: oklob_1DEPTH: 16-27ORIENT: floatMONS: plant, oklob plantSUBST: ? = 1 2:5 'SHUFFLE: '"SUBST: ' : w .:5SUBST: " = .MAP........................................'''''...........''???''.........''?????''........''?????''.........''???''...........'''''........................................
NAME: vault_1ORIENT: north
NAME: oklob_2DEPTH: 18-27ORIENT: floatMONS: plant, oklob plantSHUFFLE: ]})yY / defzZSUBST: '=12w, "=ww.SUBST: d=|*, e=|*, f=|*, y=., Y=@, z=x, Z=xSHUFFLE: xxxcMAPyyyyyyYyyyyyyxxxx.]}).xxxxx'ww.....ww'xx'"......."'xx'"......."'xx'"......."'xx'"......."'xx'"......."'xx'ww.....ww'xxxxxxx+xxxxxxENDMAP############################################################################## Oklob shooting rangeNAME: oklob_3DEPTH: 21-27ORIENT: floatSHUFFLE: ab" / AB'SUBST: a=[, b=(, A=., B=., "=., ':>', '=>.SHUFFLE: [{SUBST: x : y:1 x:5 .:30SUBST: x = x:2 .SHUFFLE: xcvSUBST: y = xMONS: oklob plant / w:2 plantMAPxxxxxxxxxxxxxxxxxxx...1...xxxxxx...........xxxx...........xxx......"......xx......'......xx1...aA{Bb...1xx......'......xx......"......xxx...........xxxx...........xxxxxx...1...xxxxxxxxxxxxxxxxxxxENDMAP
#############################################################################NAME: vault_1ORIENT: northMONS: shapeshifter, shapeshifter, glowing shapeshifterMONS: silver statue, nothingSUBST: E=E.SHUFFLE: abcd, $*, |ABCDE, nm, 45SUBST: A=., B=., C=., D=*, E=%, n=9, m=0SUBST: a = = x:8, b = = x:30, c=x, d=xSUBST: * = * |:1SHUFFLE: opqSUBST: o=+SHUFFLE: pqrsSUBST: p=+, q=+, r=x, s=xSHUFFLE: xxxxc
xxxxxxxxxxxx....x........x........x.................................xxxxxxxxxxxxxxxxxxxxxx|=8...x........+........x......x....x1...x2...x2...x3...x...xxxxxxxxxxxxxxxxxxxx|x....x........x........x....................................xxxxxxxxx
xxxxxxxxxxxx....xE.......x........x.................................xxxxxxxxxxxxxxxxxxxxx%E+3...x........+........x......x....x1...x2...x2...x3...x..Dxxxxxxxxxxxxxxxxxxx%Ex....x........x.......Ex..................................DDxxxxxxxxx
xxxxxxxxx.......+........3........xx+xx................................xxxxxxxxxxxxxxxxxx.......x.................x...x..x....x1...x2...x2...x3...x...xxxxxxxxxx
xxxxxxxxx.......+........8........xx+xx..............................DDxxxxxxxxxxxxxxxxxx.......x.................x...x..x....x1...x2...x2...x3...x..Dxxxxxxxxxx
xxxxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.........................x.S.x...xxxxxx..................|||||xxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxxxx...x...x......xxxxxx..................||xxxxxxxxxxxxxxxxxx....x...$$$$x****.999x...x...x.........xxxxxx.................xxxxxxxxxxxxxxxxxx....+...$$$$x****....x...x...+............xxxxxx.........8....xxxxxxxxxxxxxxxxxx....x...$$$$x****....+...x...x...............xxxxxx...........xxxxxxxxxxxxxxxxxx....x...$$$$x****....x...x999x..................xxxxxx........xxxxxxxxxxxxxxxxxx....xxxxxxxxxxxxxxxxxx...x...xxx...................xxxxxx.....xxxxxxxxx
xxxxxxxxxx+xxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxaxaxaxbxbxbxcxcxcxxxxxxxxxxxxxxxxxxxxxx.........................x.4.x...xxxxxxEEE...............|||||xxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxx...x...x......xxxxxx..................||xxxxxxxxxxxxxxxxxx...x....$$$$x****.mmmx...x...x.........xxxxxx.................xxxxxxxxxxxxxxxxxx...+....$$$$x****....x...x...+............xxxxxx.........8....xxxxxxxxxxxxxxxxxx...x....$$$$x****....+...x...x...............xxxxxx...........xxxxxxxxxxxxxxxxxx...xnnn.$$$$x****....x...x999x..................xxxxxx........xxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxx...x...xxx...................xxxxxx.....xxxxxxxxx
xxxxxxxxxxxxx+xxxxxxxx+xxxxxxx+xxxx...xxxxxx+xxxxxxxx+xxxxxxxx+xxxxxxx=xxxxxxxxxxxxxxxxxx.........x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxx.........x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxx.........x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxx....1....x...2...x...3...x...x....3....x....2...x......1......xxxxxxxxxxxxxxxxxx.........x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxx.........x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxx.........x.......x.......x...x.........x........x.............xxxxxxxxx
xxxxxxxxxxxxxx+xxxxxxx+xxxxxxx+xxxx...xxxxxxoxxxxxxxxpxxxxxxxxqxxxxxdxdxxxxxxxxxxxxxxxxxxxx.......x.......x.......x...x.........xE.......x.............xxxxxxxxxxxxxxxxxxxx.......x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxxxx.......x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxxxx...1...x...2...x...3...x...x....3....r....2...s......1......xxxxxxxxxxxxxxxxxxxx.......x.......x.......x...x.........x........x.............xxxxxxxxxxxxxxxxxxxxE.....ExE.....ExE.....Ex...x.........x........x.............xxxxxxxxxxxxxxxxxxxxAAAAAAAxBBBBBBBxCCCCCCCx...xE.......ExE.......x............Exxxxxxxxx
# splev.des: special levels definitions.## If you want to define random vaults and minivaults, they should go# to vaults.des.## Key:# ----# x - DNGN_ROCK_WALL# X - DNGN_PERMAROCK_WALL -> should always be undiggable! -- bwr# c - DNGN_STONE_WALL# v - DNGN_METAL_WALL# b - DNGN_GREEN_CRYSTAL_WALL# a - DNGN_WAX_WALL# . - DNGN_FLOOR# + - DNGN_CLOSED_DOOR# = - DNGN_SECRET_DOOR# @ - entry point - must be on outside and, except in ORIENT:float layouts,# must always be on a particular side or sides - see templates# W - shallow water# w - deep water - Entry vault makers: this may receive water creatures!# l - lava - Entry vault makers, note that this may receive lava creatures!# (Use the no_monster_gen tag to prevent both of these effects.)# >< - extra stairs - you can leave level by these but will never be placed o# them from another level# }{ - stairs 82/86 - You must be able to reach these from each other. The {# upstair is also the stair on which the player will enter the dungeon for# entry vaults.# )( - stairs 83/87# ][ - stairs 84/88# I - orcish idol (does nothing)# ^ - random trap# ~ - random trap suitable for the branch and depth the map is being used.## A - Vestibule gateway (opened by Horn).# B - Altar. These are assigned specific types (eg of Zin etc) in dungeon.cc,# in order.# C - Random Altar.# F - Typically a Granite Statue, but may be Orange or Silver (1 in 100)# G - Granite statue (does nothing)# H - orange crystal statue (attacks mind)# S - Silver statue (summons demons). Avoid using (rare).# T - Water fountain# U - Magic fountain# V - Permanently dry fountain## $ - gold# % - normal item# * - higher level item (good)# | - acquirement-level item (almost guaranteed excellent)# O - place an appropriate rune here. For portal vaults, place the portal here.# P - maybe place a rune here (50%)# R - honeycomb (2/3) or royal jelly (1/3)# Z - the Orb of Zot## d-k - item array item. See section below on ITEM: arrays for more info.## 0 - normal monster# 9 - +5 depth monster# 8 - (+2) * 2 depth monster (aargh!). Can get golden dragons and titans# this way.# 1-7 - monster array monster. See section below on MONS: arrays for more# information## A vault always has its body between MAP and ENDMAP commands. Furthermore,# several other additional commands are possible (some of them mandatory).## NAME:# ----# Each vault/level/map must have a unique name. Underscores and digits are ok.## ORIENT: (north | northwest | ... | float | encompass)# ------# Some kind of ORIENT: line is mandatory, unless you want the vault to be a# minivault, which is usually not what you want. Valid values are:# "float": The dungeon builder will put your vault wherever it wants to.# "some_direction": The vault will lie along the mentioned side of the map:# xxxxxxxxxx xxxxxxxxxxxxx# xORIENT:Nx xORIENT:NW|..# x.VAULT..x x.VAULT...|..# x--------x x---------|..# xrest....x xrest........# x...of...x x.....of.....# x...levelx x.......level# ...which brings us to padding. With any some_direction orientation, you need# 6 layers of x-padding along any level-edge that the vault borders. For# instance, if your map is ORIENT: north, you must have a 6 deep border of# rock wall (or any other kind of wall) along the northern, eastern, and# western edges of the map.# "encompass": the vault completely occupies the entire level. Padding is# needed on all 4 sides.## ITEM:# ----# These are used to help place specified items at specific places within a# vault. They create an array with up to 8 positions. What's in the first# position in the array will be used when the dungeon builder sees a "d" in# the vault definition, the second will be used for "e"s, etc. Positions are# comma-separated; several ITEM: lines are possible as well.# Positions can contain multiple possibilities, one of which the builder will# choose randomly. Separate such multiple possibilities using a slash. Note# that "nothing" (without the quotes) is a valid possibility. The random# choice is done for each individual occurence of the letter.# You can also give possibilities a "weight," which affects their chance of# being picked. The default weight is 10. The chance to pick a possibility is# [possibility's weight: / sum of all weight:s in that array position]# Modifiers:# "good_item" makes the builder try to make the item a good one.# "any" by itself gives random choice; you can combine "any" with "good_item."# "any book", "any misc" etc. gives a random item of that class.## Limitations: You can't affect stack quantity for stackable items, nor can you# affect curse status nor item race, nor can you give specific egos, nor can# give fixedarts. You also can't lay down corpses, skeletons, or chunks.## MONS:# ----# These are used to help place specific monsters at specific places in a# vault. They create an array with up to 7 positions. What's in the first# position in the array will be used when the dungeon builder sees a "1"# in the vault definition, the second for "2," etc. Note that if, for# example, you place a 3 on the map, but your MONS: line has no third# position, the 3 will be filled with RANDOM_MONSTER.# Individual monsters may be prefixed with the "generate_awake" (without# the quotes). Use this sparingly.# Note that 8, 9, 0 also place monsters (see the table above).## CHANCE:# ------# For entry vaults and any other vaults randomly picked from among a set,# this type of line affects the likelihood of the given vault being picked in# a given game. The default CHANCE: is 10. The likelihood of a vault getting# picked is:# [vault's CHANCE: / sum of all CHANCE:s of vaults of that type]# !!! Note for entry vault builders: really high values like CHANCE:5000# almost guarantee that a vault will be picked, and thus are great# for testing. !!!## TAGS:# ----# Tags go an a TAGS: line and are space-separated. Valid tags are:# "entry": this tag MUST be there for a vault to be pickable as an entry vault.# "generate_awake": Monsters placed (using MONS, KMONS) in this vault will be# generated awake.# "no_item_gen": Prevents random item generation in the vault. Items# explicitly placed by the vault are not affected.# "no_monster_gen": Prevents random monster generation at the time of# the vault's creation. Highly advised for entry vaults with# a player-hostile geography, MUST-HAVE for those with water# or lava.# "no_pool_fixup": prevents water squares next to land from being randomly# converted from deep water (the default) to shallow.# "branch_entry" eg. "orc_entry", "lair_entry" etc. If chosen, these maps# will contain the stairs for that branch. Use "O" to place# the stairs. Branch entries should go to splev.des.## FLAGS:# -----# Flags go on a FLAGS: line and are space-separated. Valid flags are:# "no_rotate": Normally, the dungeon builder can, at its whim, rotate your# vault. This flag tells it, "hey, don't do that to my vault!"# "no_hmirror": Like no_rotate, but for horizontal mirroring.# "no_vmirror": Like no_rotate, but for vertical mirroring.## SHUFFLE:# -------# This allows you to randomly permute glyphs on the map. There are two ways:# SHUFFLE: 123w (i.e. list of glyphs, NOT slash-separated)# could, for example, swap all occurences of "1" with "2",# as well as swapping all "3" with "w" (or any other of the 23# possibilities).# SHUFFLE: 12/3w (i.e. list of slash-separated blocks of same size)# will either do nothing or swap all "1" with "3" and then also# swap "2" with "w" everywhere.## Several SHUFFLE: lines can be used, and mixed with SUBST:, and the shuffles# and substitutions will be applied in order. You can also put multiple# SHUFFLEs on one line, comma-separated. Shuffles cannot use , or /. All spaces# are stripped before shuffling.## SUBST:# ------# The SUBST: directive allows you to specify a placeholder symbol that is# replaced with a random glyph from a set. For instance:# SUBST: ? = TUV# will replace occurrences of ? with one of TUV.# SUBST: ? = T U V# does the same thing - whitespace is not significant.# SUBST: ? = T:20 U V# makes T twice as likely to be used as U or V (the default weight# is 10). Note that there has to be at least one space before and after# T:20 and that whitespace in T:20 is not permitted.# SUBST: ? : TUV# replaces occurrences of ? with one of TUV, and guarantees that all# occurrences of ? will get the same replacement symbol.## The placeholder and replacement symbols can be any non-space, printable# character, including : and =, apart from commas - "SUBST: = = +=:123def" is# valid.## SUBST: lines can safely replace symbols with themselves:## SUBST: w = wW## Multiple SUBST: lines can be used, and mixed with SHUFFLE:, and will be# applied in order. Multiple substitutions can be performed on one line, using# commas.## KFEAT:# -----# The KFEAT: directive allows you to specify a placeholder symbol that is# replaced with another symbol, named feature, trap, or shop. Eg.:## KFEAT: Z = C / needle trap / antique armour shop / altar of Zin## Replaces occurrences of Z with C (random altar), a needle trap, an# antique armour shop, or an altar of Zin. Different instances of Z may# receive different replacements. To force a single replacement for all Z,# use:## KFEAT: Z : C / needle trap / antique armour shop## You'll notice that 'Z' is the symbol of the Orb of Zot. Kxxx directives# allow you to assign arbitrary definitions to any symbol.## The placeholder used by KFEAT can be shared by KITEM and KMONS. See below.# If the placeholder is shared, all defined Kxxxx operations for the# placeholder are performed.## KMONS:# -----# KMONS: allows you to specify a placeholder symbol that indicates the# position of a monster (or monsters).## KMONS: ? = orc priest / deep elf priest## Using KMONS: allows you to exceed the 7 slot limit for monsters. It is also# useful if you want to place a monster on a non-floor square (used in# association with a KFEAT:). Eg:## KFEAT: Z = W# KMONS: Z = rat## (Places a rat on a shallow water square for all occurrences of Z.)## KITEM:# -----# KITEM: places the specified item at all occurrences of the placeholder. It# can be combined with KFEAT and KMONS for the same placeholder. Eg:## KITEM: ? = potion of healing / potion of restore abilities### Note that a lot of the vaults are in there mainly to add some# interest to the scenery, and are not the lethal treasure-fests you# find in Angband (not that there's anything wrong with that)## Guidelines for creating new vault maps:# ---------------------------------------## If your map is not a minivault or a floating vault, make sure the side(s)# forming the border have a rock wall padding at least 6 deep. For instance,# if your map is ORIENT: north, you must have a 6 deep border of rock wall# (or any other kind of wall) along the northern, eastern, and western edges# of the map. If you're doing a fullscreen map (encompass), you must pad all# around the map with 6 layers of wall. For ORIENT: encompass maps, you# don't need to explicitly include the padding provided you make the map# small enough that the padding can be provided automatically.## You do not have to place all of the stairs unless the level is full screen,# in which case you must place all except the extra stairs (> and <). The <># stairs can be put anywhere and in any quantities but do not have to be# there. Any of the other stairs which are not present in the vault will be# randomly placed outside it. Also generally try to avoid rooms with no exit.## You can use the templates below to build vaults. The entry point '@' must# be present (except full-screen vaults where it must not and orient:float# maps, where it is optional - the builder will randomly convert '.' spaces# on edges to entry points if needed) and be on an edge of the vault.## Minivaults are handled very differently from regular vaults and special# levels. They're placed *after* normal map generation, whereas normal# vaults are placed before generating the rest of the level. There's no way# to guarantee generation of a minivault on a particular level, whereas# vaults can be forced to appear using a PLACE: attribute.
# splev.des: special levels definitions, including branch ends,# the Ecumenical Temple versions, pan levels and branch entries############################################################################################################################################################ Vestibule of Hell and Geryon
xxxxxxxxxc.......?..?.......8.....XXX...1...XXX.....8.......?..?.......cxxxxxxxxxxxxxxxxxcc.............?.........XX..1...1..XX.........?.............ccxxxxxxxx
xxxxxxxxxc.......?..?.....8.8.....XXX...1...XXX.....8.8.....?..?.......cxxxxxxxxxxxxxxxxxcc.8...........?.........XX..1...1..XX.........?...........8.ccxxxxxxxx
xxxxxxxxxcc.....8...8............ccccccccccccccc............8...8.....ccxxxxxxxxxxxxxxxxxxcc...................ccccccccccccccccccc...................ccxxxxxxxxx
xxxxxxxxxcc.....8.8.8..8.........ccccccccccccccc........8...8.8.8.....ccxxxxxxxxxxxxxxxxxxcc...............8...ccccccccccccccccccc...8............8..ccxxxxxxxxx
xxxxxxxxxxcc.....8..8.......cc1...ccccccccccccc...1cc.......8..8.....ccxxxxxxxxxxxxxxxxxxcc............8.8...ccc...ccccccccccc...ccc...8.8............ccxxxxxxxxxxxxxxxxxc....8....8..........ccc...............ccc..........8....8....cxxxxxxxxxxxxxxxxxc.......8....8...8.5.cxcc.............ccxc.5.8...8....8.......cxxxxxxxxxxxxxxxxxc..8.......8.........cxxc.............cxxc.........8.......8..cxxxxxxxxxxxxxxxxxc.....8........8.....cxxcc.1...1...1.ccxxc..............8.....cxxxxxxxxxxxxxxxxxc...8...8...8.....8..cxxxc...........cxxxc..8.....8...8...8...cxxxxxxxxxxxxxxxxxc...............8....cxxcc...........ccxxc....8...............cxxxxxxxxxxxxxxxxxcc...5..8....8......ccxxc.............cxxcc......8....8..5...ccxxxxxxxxxxxxxxxxxxcc.......8....8...ccxxcc.............ccxxcc...8....8.......ccxxxxxxxxx
xxxxxxxxxxcc...8.8..8.8.....cc1...ccccccccccccc...1cc.......8..8.8.8.ccxxxxxxxxxxxxxxxxxxcc.8...8......8.8...ccc...ccccccccccc...ccc...8.8.8..8.......ccxxxxxxxxxxxxxxxxxc.8..8....8.8........ccc...............ccc.....8....8..8.8....cxxxxxxxxxxxxxxxxxc..8..8.8....8.8.8.5.cxcc.............ccxc.5.8.8.8....8.8...8.cxxxxxxxxxxxxxxxxxc..8.....8.8.......8.cxxc.............cxxc8........8.....8.8..cxxxxxxxxxxxxxxxxxc.8...8......8.8.....cxxcc.1...1...1.ccxxc......8.......8.....cxxxxxxxxxxxxxxxxxc8..8...8.8.8.8...8.8cxxxc...........cxxxc8.8..8..8.8.8...8.8.cxxxxxxxxxxxxxxxxxc.....8.........8....cxxcc...........ccxxc....8.8.............cxxxxxxxxxxxxxxxxxcc...5..8..8.8....8.ccxxc.............cxxcc8.....8....8..5.8.ccxxxxxxxxxxxxxxxxxxcc8......8....8.8.ccxxcc.............ccxxcc.8.8....8....8..ccxxxxxxxxx
# Can be rotated!ORIENT: encompass
SHUFFLE: ABCD[, Ww/Yy/Zz, Uu/Vv, Qq/Rr/SsSUBST: W=', w=c, Y=T, y=+, Z=T, z=+SUBST: U=', u=c, V=T, v=+SUBST: Q=', q=c, R=T, r=+, S=T, s=+SHUFFLE: ])}defSUBST: d=", e=", f="SUBST: T = ^ .SUBST: ' = ^ ':100SUBST: ' = 1:5 2:5 3:1 .:89SUBST: " = ^ ":50SUBST: " = 2:3 3:1 .:96# Number of ' symbols is 211+3=214, hence statistically in the lower# circumference we'll have 10.7 mummies, another 10.7 guardian mummies# and 2.1 mummy priests.# Number of " symbols is 205+3=208, hence the upper circumference# has in mean 4.0 mummy priests and 8.3 guardian mummies.
xxxxxxxxxxxxxxcc{...c......c.....3....c........c.......ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.....^c^........^c......2^c.......ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c...2.^+..2.....2^+^..2....+.......ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc.3.^c^.....c^.........c^2.....^c^......ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc...^+^.....c..........c........c...2...ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccc+ccccccccccccccccccccccccccccccc....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc..^.c.............................c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.............................c..3.ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c..ccc4.................4ccc..c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c..ccc...................ccc..c..2.ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c..ccc.........1.........ccc..c)..}ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc.3..c..ccc.....2.......2.....ccc..cccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.............................c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.............................c^2..ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c........c...........c........+....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc]...c.............................c^2..ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccc.....3........(........3.....c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.............................c.^.^ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc...^c........c...........c........ccc+cccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....+.............................c..^.ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc...^c.............................c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c..ccc.....2.......2.....ccc..c..2.ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccc..ccc.........1.........ccc..c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c..ccc...................ccc..c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc...^+..ccc4.................4ccc..c2...ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.............................c....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccc.............................c..2.ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....c.............................ccc+cccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc....+cccc+ccccccccccccccc+ccccccccc.^.^ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc.1.^^.c.^..c............c^.......c.3...ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc...2..c.1..c.....1.1....c.....2..c.....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc......c....c..1......1.^c..2.....c...2.ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc..3...c.1..c...1...1..1^+........c.....ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc......c....c[...........c.......3c.....ccxxxxxxxxxxxxx
xxxxxxxxxxxxxxcc""""c""""""c"""""{""""c""""""""c"""""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c"""""TcT""""""""TcT""""""TcT""""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c"""2"T+T""""""""T+T""2"""T+T""""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc"""TcT""""TcT""""""""TcT""""""TcT""""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""TT+T"""""c""""""""""c""""""""c"""""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccc+ccccccccccccccccccccccccccccccc""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""TTc.............................c"3""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c.............................c""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""3"c..ccc4.................4ccc..c"""fccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c..ccc...................ccc..c""""ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c..ccc.........1.........ccc..c)""}ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c..ccc.....2.......2.....ccc..cccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c.............................c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcce"""c.............................cT'''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc""""c........c...........c........+T'''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc]""dc.............................cT'''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccc.....3........(........3.....c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc''''c.............................c'QQQccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'''Tc........c...........c........cccqcccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'''T+.............................c'QQQccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'''Tc.............................c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'ZZZc..ccc.....2.......2.....ccc..c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccczcc..ccc.........1.........ccc..c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'ZZZc..ccc...................ccc..c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccA'''c..ccc4.................4ccc..c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'YYYc.............................c''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccycc.............................cRRR[ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'YYYc.............................ccrccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc''''ccccc+ccccccccccccccc+cccccccccRRR'ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc''''''c'TTTc''''''''''''cTT''''''c'''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'''''WcW''UcU''''''''''VcV''''''ScS''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'''''WwW''UuU''''''''''VvV''''''SsS''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxcc'''''WcW''UcU''''''''''VcV''''''ScS''''ccxxxxxxxxxxxxxxxxxxxxxxxxxxxccB'''''c''''cC'''''''''''c''''''''c''''Dccxxxxxxxxxxxxx
xxxxxxxxxxxxxxcccccccc....cc................cc....cccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccc.......cc22222222222222cc......$cccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccc....^.....cc............cc..^.....$ccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccc.^.........cc..........cc.....^.^.$ccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc$...^...^..^.cc........cc..........$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc$$$...........cc222222cc.^........$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc|$$$...........c......c.....^...$$$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc||$$$$...^.....c......c^......$$$$$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc|||||$$.....^..c......c......$$$$$$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccc|||||$........c......c...^.$$$$$$$$ccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccc||||$$..^....c......c.....$$$$$$$cccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccc||||$.......c......c.....$$$$$$ccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccc|||$$....^.c......c.^.^$$$$$$cccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccc|||$^....cc..{...cc...$$$$$ccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccccc||$.....cc...(..cc..$$$$$cccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccc|$...cccc..[...cccc$$$$ccccccccccxxxxxxxxxxxxx
xxxxxxxxxxxxxxcccccccc""""cc................cc""""cccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccc"""""""cc22222222222222cc"""""'$cccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccc""""""""""cc............cc"""""""'$ccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccc'""""""""""cc..........cc""""""""'$ccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc$''""""""""""cc........cc"""""""""'$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc$$$'""""""""""cc222222cc""""""""''$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc|$$$''"""""""""c......c"""""""''$$$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc||$$$$'""""""""c......c""""""'$$$$$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxccc|||||$$'"""""""c......c"""""'$$$$$$$$cccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccc|||||$'"""""""c......c""""'$$$$$$$$ccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccc||||$$'""""""c......c""""'$$$$$$$cccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccc||||$'""""""c......c""""'$$$$$$ccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccc|||$$'"""""c......c"""'$$$$$$cccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccc|||$'""""cc..{...cc""'$$$$$ccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxccccccccc||$'""""cc...(..cc"'$$$$$cccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccc|$'""cccc..[...cccc$$$$ccccccccccxxxxxxxxxxxxx
..........................................llxxxx.........................................llllxxx......................!!!................lll2xxx....................!!!!!!!...............llllxx..................!!!!!!!!!!!...............lllx...............!!!!!!!!!!!!!!!!!.............llx..............!!!!!!!!!?!!!!!!!!!.............lx.............!!!!!!!!!???!!!!!!!!!.............x............!!!!!!!!!?????!!!!!!!!!........................!!!!!!!!!???????!!!!!!!!!......................!!!!!!!!!????O????!!!!!!!!!......................!!!!!!!!!???????!!!!!!!!!........................!!!!!!!!!?????!!!!!!!!!.............x............!!!!!!!!!???!!!!!!!!!..............x.............!!!!!!!!!?!!!!!!!!!...............xx.............!!!!!!!!!!!!!!!!!................xxxx3.............!!!!!!!!!!!...................xxxxx3..............!!!!!!!.....................xxxx13................!!!.......................xxxxxx3.........................................xxxxxxxxxx......................................
.....................'''''...............-llxxxx..................'''''''''''...........-llllxxx...............'''''''!!!'''''''........-lll2xxx............''''''''!!!!!!!''''''''......-llllxx...........'''''''!!!!!!!!!!!'''''''.......-lllx..........'''''!!!!!!!!!!!!!!!!!'''''........llx.........'''''!!!!!!!!!?!!!!!!!!!'''''........lx........'''''!!!!!!!!!???!!!!!!!!!'''''........x.......'''''!!!!!!!!!?????!!!!!!!!!'''''...............''''!!!!!!!!!???????!!!!!!!!!''''...............'''!!!!!!!!!????O????!!!!!!!!!'''...............''''!!!!!!!!!???????!!!!!!!!!''''...............'''''!!!!!!!!!?????!!!!!!!!!'''''........x.......'''''!!!!!!!!!???!!!!!!!!!'''''.........x........'''''!!!!!!!!!?!!!!!!!!!'''''..........xx._......'''''!!!!!!!!!!!!!!!!!'''''...........xxxx3......'''''''!!!!!!!!!!!'''''''............xxxxx3......''''''''!!!!!!!''''''''.............xxxx13_........'''''''!!!'''''''................xxxxxx3_..........'''''''''''...................xxxxxxxxxx...........'''''......................xxxxxxxxxxxx....................................