-
-
-
-DGN_COMP(6) 1995 DGN_COMP(6)
+DGN_COMP(6) Games Manual DGN_COMP(6)
NAME
- dgn_comp - NetHack dungeon compiler
+ dgn_comp - NetHack dungeon compiler
SYNOPSIS
- dgn_comp [ file ]
+ dgn_comp [ file ]
- If no arguments are given, it reads standard input.
+ If no arguments are given, it reads standard input.
DESCRIPTION
- Dgn_comp is a dungeon compiler for NetHack version 3.2 and
- higher. It takes a description file as an argument and pro-
- duces a dungeon "script" that is to be loaded by NetHack at
- runtime.
+ Dgn_comp is a dungeon compiler for NetHack version 3.2 and higher. It
+ takes a description file as an argument and produces a dungeon "script"
+ that is to be loaded by NetHack at runtime.
- The purpose of this tool is to provide NetHack administra-
- tors and implementors with a convenient way to create a cus-
- tom dungeon for the game, without having to recompile the
- entire world.
+ The purpose of this tool is to provide NetHack administrators and
+ implementors with a convenient way to create a custom dungeon for the
+ game, without having to recompile the entire world.
GRAMMAR
- DUNGEON: name bonesmarker ( base , rand ) [ %age ]
-
- where name is the dungeon name, bonesmarker is a letter for
- marking bones files, ( base , rand ) is the number of lev-
- els, and %age is its percentage chance of being generated
- (if absent, 100% chance).
-
- DESCRIPTION: tag
-
- where tag is currently one of HELLISH, MAZELIKE, or ROGUE-
- LIKE.
-
- ALIGNMENT | LEVALIGN: [ lawful | neutral | chaotic |
- unaligned ]
-
- gives the alignment of the dungeon/level (default is
- unaligned).
-
- ENTRY: level
-
- the dungeon entry point. The dungeon connection attaches at
- this level of the given dungeon. If the value of level is
- negative, the entry level is calculated from the bottom of
- the dungeon, with -1 being the last level. If this line is
- not present in a dungeon description, the entry level
- defaults to 1.
-
- PROTOFILE: name
-
- the prototypical name for dungeon level files in this
- dungeon. For example, the PROTOFILE name for the dungeon
- Vlad's Tower is tower.
-
+ DUNGEON: name bonesmarker ( base , rand ) [ %age ]
+ where name is the dungeon name, bonesmarker is a letter for marking
+ bones files, ( base , rand ) is the number of levels, and %age is its
+ percentage chance of being generated (if absent, 100% chance).
-Dec Last change: 12 1
+ DESCRIPTION: tag
+ where tag is currently one of HELLISH, MAZELIKE, or ROGUELIKE.
+ ALIGNMENT | LEVALIGN: [ lawful | neutral | chaotic | unaligned ]
+ gives the alignment of the dungeon/level (default is unaligned).
+ ENTRY: level
+ the dungeon entry point. The dungeon connection attaches at this level
+ of the given dungeon. If the value of level is negative, the entry
+ level is calculated from the bottom of the dungeon, with -1 being the
+ last level. If this line is not present in a dungeon description, the
+ entry level defaults to 1.
-DGN_COMP(6) 1995 DGN_COMP(6)
+ PROTOFILE: name
+ the prototypical name for dungeon level files in this dungeon. For
+ example, the PROTOFILE name for the dungeon Vlad's Tower is tower.
+ LEVEL: name bonesmarker @ ( base , rand ) [ %age ]
- LEVEL: name bonesmarker @ ( base , rand ) [ %age ]
+ where name is the level name, bonesmarker is a letter for marking bones
+ files, ( base , rand ) is the location and %age is the generation per-
+ centage, as above.
- where name is the level name, bonesmarker is a letter for
- marking bones files, ( base , rand ) is the location and
- %age is the generation percentage, as above.
+ RNDLEVEL: name bonesmarker @ ( base , rand ) [ %age ] rndlevs
- RNDLEVEL: name bonesmarker @ ( base , rand ) [ %age ]
- rndlevs
+ where name is the level name, bonesmarker is a letter for marking bones
+ files, ( base , rand ) is the location, %age is the generation percent-
+ age, as above, and rndlevs is the number of similar levels available to
+ choose from.
- where name is the level name, bonesmarker is a letter for
- marking bones files, ( base , rand ) is the location, %age
- is the generation percentage, as above, and rndlevs is the
- number of similar levels available to choose from.
+ CHAINLEVEL: name bonesmarker prev_name + ( base , rand ) [ %age ]
- CHAINLEVEL: name bonesmarker prev_name + ( base , rand ) [
- %age ]
+ where name is the level name, bonesmarker is a letter for marking bones
+ files, prev_name is the name of a level defined previously, ( base ,
+ rand ) is the offset from the level being chained from, and %age is the
+ generation percentage.
- where name is the level name, bonesmarker is a letter for
- marking bones files, prev_name is the name of a level
- defined previously, ( base , rand ) is the offset from the
- level being chained from, and %age is the generation percen-
- tage.
+ RNDCHAINLEVEL: name bonesmarker prev_name + ( base , rand ) [ %age ]
+ rndlevs
- RNDCHAINLEVEL: name bonesmarker prev_name + ( base , rand )
- [ %age ] rndlevs
+ where name is the level name, bonesmarker is a letter for marking bones
+ files, prev_name is the name of a level defined previously, ( base ,
+ rand ) is the offset from the level being chained from, %age is the
+ generation percentage, and rndlevs is the number of similar levels
+ available to choose from.
- where name is the level name, bonesmarker is a letter for
- marking bones files, prev_name is the name of a level
- defined previously, ( base , rand ) is the offset from the
- level being chained from, %age is the generation percentage,
- and rndlevs is the number of similar levels available to
- choose from.
+ LEVELDESC: type
- LEVELDESC: type
+ where type is the level type, (see DESCRIPTION, above). The type is
+ used to override any pre-set value used to describe the entire dungeon,
+ for this level only.
- where type is the level type, (see DESCRIPTION, above). The
- type is used to override any pre-set value used to describe
- the entire dungeon, for this level only.
+ BRANCH: name @ ( base , rand ) [ stair | no_up | no_down | portal ] [
+ up | down ]
- BRANCH: name @ ( base , rand ) [ stair | no_up | no_down |
- portal ] [ up | down ]
+ where name is the name of the dungeon to branch to, and ( base , rand )
+ is the location of the branch. The last two optional arguments are the
+ branch type and branch direction. The type of a branch can be a two-
+ way stair connection, a one-way stair connection, or a magic portal. A
+ one-way stair is described by the types no_up and no_down which specify
+ which stair direction is missing. The default branch type is stair.
+ The direction for a stair can be either up or down; direction is not
+ applicable to portals. The default direction is down.
- where name is the name of the dungeon to branch to, and (
- base , rand ) is the location of the branch. The last two
- optional arguments are the branch type and branch direction.
- The type of a branch can be a two-way stair connection, a
- one-way stair connection, or a magic portal. A one-way
- stair is described by the types no_up and no_down which
- specify which stair direction is missing. The default
- branch type is stair. The direction for a stair can be
- either up or down; direction is not applicable to portals.
- The default direction is down.
+ CHAINBRANCH: name prev_name + ( base , rand ) [ stair | no_up | no_down
+ | portal ] [ up | down ]
-
-
-Dec Last change: 12 2
-
-
-
-
-
-
-DGN_COMP(6) 1995 DGN_COMP(6)
-
-
-
- CHAINBRANCH: name prev_name + ( base , rand ) [ stair |
- no_up | no_down | portal ] [ up | down ]
-
- where name is the name of the dungeon to branch to,
- prev_name is the name of a previously defined level and (
- base , rand ) is the offset from the level being chained
- from. The optional branch type and direction are the same
- as described above.
+ where name is the name of the dungeon to branch to, prev_name is the
+ name of a previously defined level and ( base , rand ) is the offset
+ from the level being chained from. The optional branch type and direc-
+ tion are the same as described above.
GENERIC RULES
- Each dungeon must have a unique bonesmarker , and each spe-
- cial level must have a bonesmarker unique within its dungeon
- (letters may be reused in different dungeons). If the
- bonesmarker has the special value "none", no bones files
- will be created for that level or dungeon.
-
- The value base may be in the range of 1 to MAXLEVEL (as
- defined in global.h ).
+ Each dungeon must have a unique bonesmarker , and each special level
+ must have a bonesmarker unique within its dungeon (letters may be
+ reused in different dungeons). If the bonesmarker has the special
+ value "none", no bones files will be created for that level or dungeon.
- The value rand may be in the range of -1 to MAXLEVEL.
+ The value base may be in the range of 1 to MAXLEVEL (as defined in
+ global.h ).
- If rand is -1 it will be replaced with the value
- (num_dunlevs(dungeon) - base) during the load process (ie.
- from here to the end of the dungeon).
+ The value rand may be in the range of -1 to MAXLEVEL.
- If rand is 0 the level is located absolutely at base.
+ If rand is -1 it will be replaced with the value (num_dunlevs(dungeon)
+ - base) during the load process (ie. from here to the end of the dun-
+ geon).
- Branches don't have a probability. Dungeons do. If a
- dungeon fails to be generated during load, all its levels
- and branches are skipped.
+ If rand is 0 the level is located absolutely at base.
- No level or branch may be chained from a level with a per-
- centage generation probability. This is to prevent non-
- resolution during the load. In addition, no branch may be
- made from a dungeon with a percentage generation probability
- for the same reason.
+ Branches don't have a probability. Dungeons do. If a dungeon fails to
+ be generated during load, all its levels and branches are skipped.
- As a general rule using the dungeon compiler:
+ No level or branch may be chained from a level with a percentage gener-
+ ation probability. This is to prevent non-resolution during the load.
+ In addition, no branch may be made from a dungeon with a percentage
+ generation probability for the same reason.
- If a dungeon has a protofile name associated with it (eg.
- tower) that file will be used.
+ As a general rule using the dungeon compiler:
- If a special level is present, it will override the above
- rule and the appropriate file will be loaded.
+ If a dungeon has a protofile name associated with it (eg. tower) that
+ file will be used.
- If neither of the above are present, the standard generator
- will take over and make a "normal" level.
-
- A level alignment, if present, will override the alignment
- of the dungeon that it exists within.
-
-
-
-
-
-Dec Last change: 12 3
-
-
-
-
-
-
-DGN_COMP(6) 1995 DGN_COMP(6)
+ If a special level is present, it will override the above rule and the
+ appropriate file will be loaded.
+ If neither of the above are present, the standard generator will take
+ over and make a "normal" level.
+ A level alignment, if present, will override the alignment of the dun-
+ geon that it exists within.
EXAMPLE
- Here is the current syntax of the dungeon compiler's
- "language":
-
-
- #
- # The dungeon description file for the "standard" original
- # 3.0 NetHack.
- #
- DUNGEON: "The Dungeons of Doom" "D" (25, 5)
- LEVEL: "rogue" "none" @ (15, 4)
- LEVEL: "oracle" "none" @ (5, 7)
- LEVEL: "bigroom" "B" @ (12, 3) 15
- LEVEL: "medusa" "none" @ (20, 5)
- CHAINLEVEL: "castle" "medusa" + (1, 4)
- CHAINBRANCH: "Hell" "castle" + (0, 0) no_down
- BRANCH: "The Astral Plane" @ (1, 0) no_down up
-
- DUNGEON: "Hell" "H" (25, 5)
- DESCRIPTION: mazelike
- DESCRIPTION: hellish
- BRANCH: "Vlad's Tower" @ (13, 5) up
- LEVEL: "wizard" "none" @ (15, 10)
- LEVEL: "fakewiz" "A" @ (5, 5)
- LEVEL: "fakewiz" "B" @ (10, 5)
- LEVEL: "fakewiz" "C" @ (15, 5)
- LEVEL: "fakewiz" "D" @ (20, 5)
- LEVEL: "fakewiz" "E" @ (25, 5)
-
- DUNGEON: "Vlad's Tower" "T" (3, 0)
- PROTOFILE: "tower"
- DESCRIPTION: mazelike
- ENTRY: -1
-
- DUNGEON: "The Astral Plane" "A" (1, 0)
- DESCRIPTION: mazelike
- PROTOFILE: "endgame"
-
- NOTES:
- Lines beginning with '#' are considered comments.
- A special level must be explicitly aligned. The alignment
- of the dungeon it is in only applies to non-special levels
- within that dungeon.
+ Here is the current syntax of the dungeon compiler's "language":
+
+
+ #
+ # The dungeon description file for the "standard" original
+ # 3.0 NetHack.
+ #
+ DUNGEON: "The Dungeons of Doom" "D" (25, 5)
+ LEVEL: "rogue" "none" @ (15, 4)
+ LEVEL: "oracle" "none" @ (5, 7)
+ LEVEL: "bigroom" "B" @ (12, 3) 15
+ LEVEL: "medusa" "none" @ (20, 5)
+ CHAINLEVEL: "castle" "medusa" + (1, 4)
+ CHAINBRANCH: "Hell" "castle" + (0, 0) no_down
+ BRANCH: "The Astral Plane" @ (1, 0) no_down up
+
+ DUNGEON: "Hell" "H" (25, 5)
+ DESCRIPTION: mazelike
+ DESCRIPTION: hellish
+ BRANCH: "Vlad's Tower" @ (13, 5) up
+ LEVEL: "wizard" "none" @ (15, 10)
+ LEVEL: "fakewiz" "A" @ (5, 5)
+ LEVEL: "fakewiz" "B" @ (10, 5)
+ LEVEL: "fakewiz" "C" @ (15, 5)
+ LEVEL: "fakewiz" "D" @ (20, 5)
+ LEVEL: "fakewiz" "E" @ (25, 5)
+
+ DUNGEON: "Vlad's Tower" "T" (3, 0)
+ PROTOFILE: "tower"
+ DESCRIPTION: mazelike
+ ENTRY: -1
+
+ DUNGEON: "The Astral Plane" "A" (1, 0)
+ DESCRIPTION: mazelike
+ PROTOFILE: "endgame"
+
+ NOTES:
+ Lines beginning with '#' are considered comments.
+ A special level must be explicitly aligned. The alignment of the dun-
+ geon it is in only applies to non-special levels within that dungeon.
AUTHOR
- M. Stephenson (from the level compiler by Jean-Christophe
- Collet).
+ M. Stephenson (from the level compiler by Jean-Christophe Collet).
SEE ALSO
- lev_comp(6), nethack(6)
-
-
-
-
-
-Dec Last change: 12 4
-
-
-
-
-
-
-DGN_COMP(6) 1995 DGN_COMP(6)
-
-
+ lev_comp(6), nethack(6)
BUGS
- Probably infinite.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Probably infinite.
-Dec Last change: 12 5
+COPYRIGHT
+ This file is Copyright (C) Kenneth Lorber and was last modified
+ 2018/04/25 (version NetHack-3.6.0:1.6). NetHack may be freely redis-
+ tributed. See license for details.
+NETHACK 25 May 2015 DGN_COMP(6)