Added spacing for another minivault, updated depths.
Tweaked KMONS: to allow alternate monsters to be placed if a requested unique is unavailable.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1445 c06c8d41-db1a-0410-9941-cceddc491573
ILN2K6ASDZSMEHOPJ22IZLZJUO6DDGZTKAKXM3YXG6JZZHJNLX4AC R6XS2HO5QX2FJUGL5UQQRNETKCMYWTUFPHPPS5SYWK3OQA4UDUQQC KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC 442VGKMARB6LTQUEBIB5P447EI34BRJL6JALZKXLWPDHWCM6KKCQC 5P64LHKJKGKIO3FUV63KFQ2OHZ5RNRV7WXS25OHXVNYYFZAVGLMAC 7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 2TTHWHQ3ZDD3DLB3KRULTBMS3ZREJG472IBVZXIGTP7MBZWAU52QC 34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC XY77S75KH5KV54MZVAPMUC64TVRE2QM2KVJAAGJGCIBGQEC5GUTQC 7YSKYUNV34XIWRTJUHJV4QMQRTXXYDIXM5AZSPSDPAYDW4B4PU6QC MI7CWKRDXHAU7PIHLXXOSFBULRGT2OOMIMOSQLMVYOUVGABIVXGAC 25V4IA67QFLZRTBPZLHZ7R2VTFRBBQBE3IS4ASN5BJRBXPEHSALQC LS3DAZVRDCXVN2BKBC6RGCKO3R43Z7HKG4GXJWLBK4AKBL2G6QDQC OVDIHWR5FEPTBZCTEAXNPB4MYP5NUNPQMC6UM4F6SC4EBGWH3DSQC OTAXEUGHFR5A4NAUA3HDTIOQZO7E4MFX6ILDID3DHFEAOWUWRZ4QC FOCWL2MOKK6BNARCKZIN6DPTOYRFILRJLURUT2JBORS25MMVGGSQC TY6JR6MSAREXQ3JH44ILKPYBVVCBVDXWD2UA74RLIDULCU23XRHQC place_monster( not_used, mid, monster_level,monster_type_thing.generate_awake?BEH_WANDER : BEH_SLEEP,MHITNOT, true, vx, vy, false );
return (place_monster( not_used, mid, monster_level,generate_awake? BEH_WANDER : BEH_SLEEP,MHITNOT, true, vx, vy, false ));}return (false);}static bool dngn_place_one_monster(const vault_placement &place,mons_list &mons,int monster_level,int vx, int vy){for (int i = 0, size = mons.size(); i < size; ++i){if (dngn_place_monster(place, mons.get_monster(i),monster_level, vx, vy)){return (true);}
mons_spec mons = mapsp->get_mons();if (place.map.has_tag("generate_awake"))mons.generate_awake = true;dngn_place_monster(mons, level_number, vx, vy);
mons_list &mons = mapsp->get_monsters();dngn_place_one_monster(place, mons, level_number, vx, vy);
w - deep water - can be turned into shallow water; prevent this with theno_pool_fixup TAG. Also, this may receive water creatures! For entry
w - deep water - can be randomly turned into shallow water by thelevel-builder; you can prevent this conversion with the no_pool_fixup TAG.Also, water may automatically receive water creatures! For entry
@ - entry point - must be on outside and, except in ORIENT:float layouts,must always be on a particular side or sides - see templates. If you useORIENT: float, and do not use any @, the dungeon builder will connect atleast one floorspace on the edge of your map to the rest of the level; ifthere is no floorspace on the edge of your map, it will be isolated.}{ - stairs 82/86 - You must be able to reach these from each other. The
@ - entry point - must be on outside edge. If you use ORIENT: float, and donot use any @, the dungeon builder will connect at least one floorspace onthe edge of your map to the rest of the level; if there is no floorspaceon the edge of your map, it will be isolated.}{ - Stone stairs - You must be able to reach these from each other. The
Note: Due to the level maker having seen incremental improvements overthe years, there are some inconsistencies. For examples, dangerousstatues (orange, silver ice) are now genuine monsters. In particular,the 'H' and 'S' glyphs could be dispensed with (but many older vaultsuse them, of course) - especially as there's no glyph for ice statues.
# Note: Due to the level maker having seen incremental improvements over the# years, there are some inconsistencies. For examples, dangerous statues# (orange, silver ice) are now genuine monsters. In particular, the 'G' and 'S'# glyphs could be dispensed with (but many older vaults use them, of course) -# especially as there's no glyph for ice statues.## Also, the most of the other feature glyphs can be replaced with KFEAT:# lines. The same goes for some item glyphs ('O', 'P', 'R', 'Z') which could# be replaced by KITEM: lines.
Also, the most of the other feature glyphs can be replaced with KFEAT:lines. The same goes for some item glyphs ('R', 'Z') whichcould be replaced by KITEM: lines.
A simple DEPTH: declaration that does not specify a branchapplies to all branches. A map declared with depth 7-20 couldbe used in the Lair, for instance. (Lair:1 will be treated asa depth of 12 if the Lair entrance is on D:11.)You can constrain a map by branch:DEPTH: Lair:7-9(Anywhere between levels 7-9 of the Lair, inclusive.)You can apply multiple constraints (with multiple DEPTH: lines, ifnecessary, or on one line, comma-separated):DEPTH: 7-20, !12-14(Anywhere in the dungeon between depths 7-20, but not on levels12-14.)DEPTH: 7-20, !Orc(Anywhere in the dungeon between depths 7-20, but never in the OrcishMines.)DEPTH: Lair:*(Anywhere in the Lair. Can also be expressed as "DEPTH: Lair".)Maps that do not specify a DEPTH: attribute will inherit their depthconstraints from the closest preceding default-depth: line. If thereis no preceding default-depth directive in the .des file, the map willhave no DEPTH: constraint. Note that maps without a DEPTH: constraintcannot be selected as random vaults or minivaults.
Use "O" to place the stairs. Branch entries should go to splev.des.As long as a branch has very few entries, a dummy one is a must.
Use "O" to place the stairs. Branch entries should go toebranch.des. If a branch has very few entries, a dummy entry isadvisable to make sure the player doesn't get bored of the samefew entries recycled ad nauseam.
KMONS: also allows you to specify alternative monsters if theprimary monster you want to place is unavailable (because itis a unique that was already generated). For instance, if you wantto generate one of Terence, Michael or Erica or a generic human(whoever is available, in that order, you can use):KMONS: n = Terence, Michael, Erica, humanOr if you want to pick randomly:KMONS: n = Terence / Michael / Erica, human
For items like gold or fountains, you have to use the descriptionof items instead of their shortcuts. For example,KITEM: none / gold
For items like gold, you have to use the description of itemsinstead of their shortcuts. For example,KITEM: ? = nothing / gold
The entry point '@' must be present (except full-screen vaults where itmust not). For ORIENT: float maps, all @ will be connected to floors inthe rest of the map. Make sure that no part of your entry level can becut off! If no @ is present, the level builder will put one on a randomfloor space '.' at the circumference. (Sometimes this may be used forgood effect. When you give no @'s with this feature in mind, please makea comment stating this - else somebody may just add @'s later on :)
Minivaults should generally be completely surrounded by one-space offloor for accessibility. Minivaults are not handled like regularvaults in terms of entry-points: the entry-point glyph @ is ignoredfor minivaults. In general, at least one square of a minivault willbe reachable from the rest of the level, but there is no way topredict which one. If your minivault is intended to be accessible,surround it with floor.The entry point '@' must be present for all vaults (exceptfull-screen vaults and minivaults where it must not, and floatingvaults where it is optional). All @ will be connected to floor spacein the rest of the map (multiple @ close together may merge into thesame exit corridor). Make sure that no part of your entry level canbe cut off! If no @ is present in a floating vault (and there are nodoors on the edge of the map, see below), the level builder will putone or more on a random floor space '.' at the circumference. Notethat it is not possible to predict which floor spaces the levelbuilder will choose to connect; if you need predictability, useexplicit @ exits on the edge.The level-builder will also implicitly treat doors and secret doorson the edge of a map as explicit exits (the same as using @) andconnect them to the rest of the level.
Note that non-rectangular maps will be padded with rock walls for thesmallest rectangle containing them. Unfortunately.
Not using @ and allowing the level-builder to pick exits isacceptable in floating vaults, but when you use no @'s with thisfeature in mind, please add comments stating this - else somebodymay just add @'s later on. :)Non-rectangular maps will be padded (to the right) with rock walls(or with floor spaces for minivaults) for the smallest rectanglecontaining them. Unfortunately.