1 .TH DGN_COMP 6 "12 Dec 1995"
2 .\" NetHack 3.6 dgn_comp.6 $NHDT-Date: 1432512786 2015/05/25 00:13:06 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $
5 dgn_comp \- NetHack dungeon compiler
12 If no arguments are given, it reads standard input.
16 is a dungeon compiler for NetHack version 3.2 and higher. It
17 takes a description file as an argument and produces a dungeon "script"
18 that is to be loaded by NetHack at runtime.
20 The purpose of this tool is to provide NetHack administrators and
21 implementors with a convenient way to create a custom dungeon for the
22 game, without having to recompile the entire world.
40 is a letter for marking bones files, (
44 ) is the number of levels, and
46 is its percentage chance of being generated (if absent, 100% chance).
59 ALIGNMENT | LEVALIGN: [
69 gives the alignment of the dungeon/level (default is unaligned).
74 the dungeon entry point. The dungeon connection attaches at this
75 level of the given dungeon.
78 is negative, the entry level is calculated from the bottom of the
79 dungeon, with -1 being the last level.
80 If this line is not present in a dungeon description, the entry level
86 the prototypical name for dungeon level files in this dungeon.
87 For example, the PROTOFILE name for the dungeon
107 is a letter for marking bones files, (
111 ) is the location and
113 is the generation percentage, as above.
132 is a letter for marking bones files, (
138 is the generation percentage, as above, and
140 is the number of similar levels available to choose from.
158 is a letter for marking bones files,
160 is the name of a level defined previously, (
166 from the level being chained from, and
168 is the generation percentage.
187 is a letter for marking bones files,
189 is the name of a level defined previously, (
195 from the level being chained from,
197 is the generation percentage, and
199 is the number of similar levels available to choose from.
206 is the level type, (see DESCRIPTION, above). The
208 is used to override any pre-set value used to describe the entire dungeon,
233 is the name of the dungeon to branch to, and (
237 ) is the location of the branch.
238 The last two optional arguments are
239 the branch type and branch direction.
240 The type of a branch can be a two-way stair connection,
241 a one-way stair connection, or a magic portal.
242 A one-way stair is described by the types
246 which specify which stair direction is missing.
247 The default branch type is
249 The direction for a stair can be either up or down; direction is not
250 applicable to portals. The default direction is
276 is the name of the dungeon to branch to,
278 is the name of a previously defined
286 from the level being chained from.
287 The optional branch type and direction are the same as described above.
290 Each dungeon must have a unique
292 and each special level must have a
294 unique within its dungeon (letters may be reused in different dungeons).
297 has the special value "none", no bones files will be created for that
302 may be in the range of 1 to
310 may be in the range of -1 to
315 is -1 it will be replaced with the value (num_dunlevs(dungeon) - base)
316 during the load process (ie. from here to the end of the dungeon).
320 is 0 the level is located absolutely at
323 Branches don't have a probability. Dungeons do. If a dungeon fails
324 to be generated during load, all its levels and branches are skipped.
326 No level or branch may be chained from a level with a percentage generation
327 probability. This is to prevent non-resolution during the load.
328 In addition, no branch may be made from a dungeon with a percentage
329 generation probability for the same reason.
331 As a general rule using the dungeon compiler:
335 name associated with it
338 that file will be used.
340 If a special level is present, it will override the above rule and
341 the appropriate file will be loaded.
343 If neither of the above are present, the standard generator will
344 take over and make a "normal" level.
346 A level alignment, if present, will override
347 the alignment of the dungeon that it exists within.
350 Here is the current syntax of the dungeon compiler's "language":
356 # The dungeon description file for the "standard" original
359 DUNGEON: "The Dungeons of Doom" "D" (25, 5)
360 LEVEL: "rogue" "none" @ (15, 4)
361 LEVEL: "oracle" "none" @ (5, 7)
362 LEVEL: "bigroom" "B" @ (12, 3) 15
363 LEVEL: "medusa" "none" @ (20, 5)
364 CHAINLEVEL: "castle" "medusa" + (1, 4)
365 CHAINBRANCH: "Hell" "castle" + (0, 0) no_down
366 BRANCH: "The Astral Plane" @ (1, 0) no_down up
368 DUNGEON: "Hell" "H" (25, 5)
369 DESCRIPTION: mazelike
371 BRANCH: "Vlad's Tower" @ (13, 5) up
372 LEVEL: "wizard" "none" @ (15, 10)
373 LEVEL: "fakewiz" "A" @ (5, 5)
374 LEVEL: "fakewiz" "B" @ (10, 5)
375 LEVEL: "fakewiz" "C" @ (15, 5)
376 LEVEL: "fakewiz" "D" @ (20, 5)
377 LEVEL: "fakewiz" "E" @ (25, 5)
379 DUNGEON: "Vlad's Tower" "T" (3, 0)
381 DESCRIPTION: mazelike
384 DUNGEON: "The Astral Plane" "A" (1, 0)
385 DESCRIPTION: mazelike
391 Lines beginning with '#' are considered comments.
393 A special level must be explicitly aligned. The alignment of the dungeon
394 it is in only applies to non-special levels within that dungeon.
397 M. Stephenson (from the level compiler by Jean-Christophe Collet).
400 lev_comp(6), nethack(6)