1# Guidelines for specific types of vaults 2 31. [Guidelines for D:1 arrival vaults](#guidelines-for-d1-arrival-vaults) 42. [Guidelines for faded altar and overflow temples](guidelines-for-faded-altar and-overflow-temples) 53. [Guidelines for creating serial vaults](#guidelines-for-creating-serial-vaults) 64. [Guidelines for creating ghost vaults](#guidelines-for-creating-ghost-vaults) 75. [Guidelines for no_tele_into](#guidelines-for-no_tele_into) 8 9## Guidelines for D:1 arrival vaults 10 11Arrival vaults should provide atmosphere and a nice starting point. The idea 12is neither to get a grip on most of D:1 nor to hand out starting gear. 13Playing Crawl a bit will show you a number of arrival vaults, which live in 14[crawl-ref/source/dat/des/arrival/](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/arrival) 15 16### We need more arrival vaults! 17 18We love new arrival vaults, and it is easy to make new ones. Coding abilities 19are not required. If you are completely new to making maps, have a look at 20simple.des. After that, glance through 21[crawl-ref/docs/develop/levels/introduction.txt](https://github.com/crawl/crawl/blob/master/crawl-ref/docs/develop/levels/introduction.txt), 22which will allow you to make 23your own maps already! Once you are familiar with this, you may look at more 24complicated vaults and read the more 25[advanced documentation](https://github.com/crawl/crawl/tree/master/crawl-ref/docs/develop/levels). 26Crawl also employs vaults in many other places; check the various `.des` files 27in 28[crawl-ref/source/dat/des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des) 29for what is going on. New maps are always welcome. 30 31### Some guidelines for arrival vault creators 32 33* Try to come up with small maps. 34* Avoid placing guaranteed items. 35* The same holds for any features which might trigger start-scumming, like 36 altars. 37* Also avoid ASCII art. It probably won't work in Tiles anyway. 38* Also avoid monsters-behind-glass-wall vaults. We already have enough of these. 39* Note that at the start of the game, the dungeon builder removes all 40 monsters in view of the player. Zero experience monsters like plants 41 are exempt. 42* Arrival vaults should have multiple entry points, escape hatches, or enough 43 space to permit tactics. 44 45### Naming conventions 46 47Entry vaults should be NAMEd as follows: 48 49``` NAME: nick_arrival_name ``` 50 51where "nick" is the name/nick of the vault designer and "name" is a somewhat 52descriptive label for the vault. Avoid numbers, please. 53 54The actual maps can be found in the following files: 55 56| File | Contents | 57|-------------|--------------------------------| 58| simple.des | Particularly simple maps: no more than five header lines! | 59| small.des | Small maps with neither lua nor complicated syntax. | 60| twisted.des | Maps which either use a lot of lua or heavy `SUBST`ing etc. | 61| large.des | Sizes of about 30x30 and up. | 62 63If a map is both big and complex, file under twisted.des. 64If a map is both plain and small, file under simple.des. 65 66## Guidelines for faded altar and overflow temples 67 68A faded altar vault is placed with very high probability on D:1-3. 69Overflow temples are specific vaults used by the dungeon builder to guarantee 70altars to temple gods that did not get an altar in the Ecumenical Temple. In 71general these should avoid placing significant challenges and leave the altar 72accessible without need for flight or blinks, as the purpose is to provide the 73player with a guaranteed altar. Both classes of vaults are seen often in the 74game and we need a lot of them! These maps are good candidates for a starting 75vaultmaker who wants to try something other than an arrival vault. 76 77For overflow temples, see the comments at the start of 78[crawl-ref/source/dat/des/altar/overflow.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/altar/overflow.des) for the specific tagging scheme to use for overflow temples, either generic or devoted to particular gods. 79 80Ecumenical altars are faded, so the player can't tell which god the altar is 81devoted to until they worship. Good lore ideas revolve around ruins and decay, 82but there are plenty of other creative possibilities. The vaults are in 83[crawl-ref/source/dat/des/altar/ecumenical.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/altar/ecumenical.des) 84 85### General style guidelines for faded altar and overflow temples 86 87* Try to come up with small maps. 88* Avoid placing guaranteed items. 89* Don't use out-of-depth monsters or a large number of in-depth monsters. 90* Avoid ASCII art. It probably won't work in Tiles anyway. 91 92### General style guidelines for overflow temples 93 94* If your vault places a single specific altar and is a plausible mini vault 95 tag it `uniq_altar_GODNAME` as well as the overflow temple tags 96* Whenever possible, don't add a depth specification to such a vault. 97* If a specific monster is necessary for theme, then constrain the vault to 98 that monster's depth. 99* If your vault is decor (even if it does not have the decor tag, if there 100 are no depth-scaling monsters to fight, and no serious loot), 101 include `: interest_check(_G)` to ensure the vault is tagged appropriately. 102 103## Guidelines for creating serial vaults 104 105Sometimes, we want flavour (or also other) vaults to be placed several times, 106so as to make the level feel more coherent; this is called a **serial vault**. 107The lua calls for such serial vaults are in the files in the folder 108[crawl-ref/source/dat/des/serial/](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/serial). 109Each serial vault has its own file. 110 111The vaults eventually could be just copies of one map, or (much better) come 112from a list of thematically linked maps. This is mostly for flavour, although 113it may be interesting to created serial vaults around threats. 114 115In general, we don't want more than one serial vault on a level. Use the 116 117``` TAGS: luniq_serial ``` 118 119in the serial vault's header map for this. 120 121Often, it will be fine to allow the individual maps comprising a serial vault 122to be chosen by the level builder as usual minivaults. If you want to do that, 123there are two ways to proceed: 124 125* A default-depth line before all maps. 126* Or non-empty `DEPTH` statements in each map definition. (You can still do 127* this even if there is a default-depth. It allows you tweak the depths for 128 specific maps.) 129 130If you want to disable all or some the maps for from normal minivault 131placement, you can: 132 133* Give them no `DEPTH` line when you have no preceding default-depth. 134* Explicitly remove them with an empty depth line like this: 135 136``` DEPTH: ``` 137 138## Guidelines for creating ghost vaults 139 140Ghost vaults are vaults that place a player ghost, which is an undead monster 141with properties derived from a player who died. These vaults should place some 142amount of additional loot to offer some enticement for players where the XP 143from killing the ghost isn't sufficient reward. Often these vaults place 144monsters in addition to the ghost. Ghost vaults usually place one ghost, but 145may less often place multiple ghosts. 146 147### Organization and setup 148 149All ghost vaults not placing in the Vaults branch should go in 150[crawl-ref/source/dat/des/variable/ghost.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/variable/ghost.des) 151and call the lua ghost setup function the following way: 152 153``` : ghost_setup(_G) ``` 154 155This well set the common tags we want for all ghost vaults as well as the 156common CHANCE to place these vaults, as described in sections below. These 157vaults can be minivaults or have any of the usual kinds of ORIENT statements. 158 159For the Vaults branch, a ghost vault will be a vault room in 160[crawl-ref/source/dat/des/branches/vaults_room_ghost.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/branches/vaults_room_ghost.des) 161and it should call the vault lua ghost setup function: 162 163``` : vaults_ghost_setup(_G) ``` 164 165This setup will set common tags for ghost rooms and set a `vaults_ghost` tag 166recognized by the Vaults layout. Vaults calling `vaults_ghost_setup()` do not 167need to set the `vaults_ghost` tag on their own. 168 169### Basic guidelines 170 171Ghost vaults should always be sealed and ideally not diggable by monsters that 172have a dig wand or the dig spell. This means the vault should have non-rock 173outer walls and use either runed doors or transporters for entry. The vaults 174should have transparent walls so that it's always possible for the player to 175see the ghost before entering, even if the ghost is awake and wandering. 176 177For placement in early dungeon levels, relatively less additional loot is 178necessary, since ghost XP is more impactful then. However it's recommended to 179place at least some loot in early levels, and more strongly recommended for 180later depths where ghost XP provides much less incentive on its own. It's fine 181to place monsters in addition to the ghost monsters; just keep in mind that 182player ghosts are relatively difficult to kill compared to a large majority of 183crawl monsters. See the aforementioned 184[ghost.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/variable/ghost.des) 185and 186[vaults_room_ghost.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/branches/vaults_room_ghost.des) 187for examples and inspiration. 188 189### Distribution 190 191The current range of levels that place ghost vaults is: 192 193``` 194default-depth: D:3-, Lair, Elf, Orc, Snake, Shoals, Swamp, Spider, Depths, \ 195 Crypt, Zot 196``` 197 198Every ghost vault uses a common chance value defined in 199[crawl-ref/source/dat/dlua/ghost.lua](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/dlua/ghost.lua) 200that dictates the chance a level will place a ghost vault. This chance is 201currently 10%. Ghost vaults that call one of the lua setup functions mentioned 202above will have this chance set automatically and do not need their own CHANCE 203statement. 204 205To make a ghost vault relatively more or less commonly chosen among the set of 206ghost vaults, use a WEIGHT statement to set a weight other than 10, the 207default. A vault can use WEIGHT to set different weights for different 208branches/levels. See examples in 209[ghost.des](https://github.com/crawl/crawl/tree/master/crawl-ref/source/dat/des/variable/ghost.des) 210and 211[syntax.txt](https://github.com/crawl/crawl/tree/master/crawl-ref/docs/develop/levels/syntax.txt). 212 213### Custom Tags 214 215If the tags set by `ghost_setup()` or `vaults_ghost_setup()` are somehow not 216appropriate, ghost vaults can set their own tags instead of calling these 217functions. For ghost vaults not in the Vaults branch, the vault should at a 218minimum call the following function to set the CHANCE and set the 219`chance_player_ghost` tag: 220 221``` : chance_player_ghost(_G) ``` 222 223It's strongly recommended that you use this function instead of setting a 224CHANCE directly in the vault. For ghost vault rooms for Vaults, instead set the 225`vaults_ghost` tag; these vaults should not have a CHANCE statement at all. 226 227Other tags we generally require for ghost vaults are `no_tele_into` and 228`no_trap_gen`. If you use `allow_dup` in your vault, also use 229`luniq_player_ghost` to avoid multiple vault placement on the same level. 230 231 232## Guidelines for no_tele_into 233 234The `no_tele_into` KPROP prevents teleports landing you on the tagged locations. 235 236Example: 237 238``` 239NAME: example_vault 240KPROP: - = no_tele_into 241SUBST: - = . 242MAP 243xxxxxx 244+.m--x 245xxxxxx 246ENDMAP 247``` 248 249Teleports will never land the player behind the glass wall. 250 251Don't overuse this property. It's a hidden mechanic not exposed to the player. 252 253Good places to use `no_tele_into`: 254 255* Vaults which need the player to enter in a controlled manner to understand/enjoy. For example `gammafunk_steamed_eel`. 256* Teleport closets: areas the player cannot escape without a scroll of teleportation (or similar). For example `lemuel_altar_in_water`. 257* Egregiously dangerous/unfair situations. For example `chequers_guarded_unrand_ignorance` (four orange crystal statues). 258 259Bad places to use `no_tele_into`: 260 261* Any old runed door / transporter vault. It's fine for players to teleport into tough or scary situations. 262* Islands: areas the player can also reach with flight or similar tools. `no_tele_into` would be an incomplete solution. It's better to place a hatch/shaft, which solves all cases. 263