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