Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DGN_COMP(6)			  Games Manual			     DGN_COMP(6)

NAME
     dgn_comp - NetHack dungeon compiler

SYNOPSIS
     dgn_comp [ file ]

     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  produces  a  dungeon	"script"
     that is to be loaded by NetHack at runtime.

     The purpose of this tool is to provide NetHack administrators and implemen-
     tors 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 levels, and %age is its  percentage
     chance of being generated (if absent, 100% chance).

     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  de-
     faults to 1.

     PROTOFILE: name

     the  prototypical	name for dungeon level files in this dungeon.  For exam-
     ple, the PROTOFILE name for the dungeon Vlad's Tower is tower.

     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 percent-
     age, as above.

     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 percentage,
     as above, and rndlevs is the number of similar levels available  to  choose
     from.

     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.

     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.

     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.

     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 di-
     rection 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 ]

     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.

GENERIC RULES
     Each  dungeon  must have a unique bonesmarker , and each special level must
     have a bonesmarker unique within its dungeon (letters may be reused in dif-
     ferent 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
     ).

     The value rand may be in the range of -1 to MAXLEVEL.

     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).

     If rand is 0 the level is located absolutely at base.

     Branches don't have a probability.  Dungeons do.  If a dungeon fails to  be
     generated during load, all its levels and branches are skipped.

     No level or branch may be chained from a level with a percentage generation
     probability.   This is to prevent non-resolution during the load.	In addi-
     tion, no branch may be made from a dungeon  with  a  percentage  generation
     probability for the same reason.

     As a general rule using the dungeon compiler:

     If a dungeon has a protofile name associated with it (eg.	tower) that file
     will be used.

     If  a special level is present, it will override the above rule and the ap-
     propriate 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 dungeon
     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.

AUTHOR
     M. Stephenson (from the level compiler by Jean-Christophe Collet).

SEE ALSO
     lev_comp36(6), nethack36(6)

BUGS
     Probably infinite.

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 redistributed.  See li-
     cense for details.

NETHACK 			   25 May 2015			     DGN_COMP(6)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dgn_comp36&sektion=6&manpath=FreeBSD+Ports+15.1.quarterly>

home | help