mirror of
https://codeberg.org/noisytoot/notnotdnethack.git
synced 2024-11-21 16:55:06 +00:00
5901b7c7ca
Thanks, kerio!
330 lines
8.3 KiB
Text
330 lines
8.3 KiB
Text
|
|
|
|
|
|
DGN_COMP(6) 1995 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 pro-
|
|
duces 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.
|
|
|
|
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.
|
|
|
|
|
|
|
|
Dec Last change: 12 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DGN_COMP(6) 1995 DGN_COMP(6)
|
|
|
|
|
|
|
|
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 percentage, 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 percen-
|
|
tage.
|
|
|
|
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 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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
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 ).
|
|
|
|
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 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.
|
|
|
|
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 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 dungeon that it exists within.
|
|
|
|
|
|
|
|
|
|
|
|
Dec Last change: 12 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DGN_COMP(6) 1995 DGN_COMP(6)
|
|
|
|
|
|
|
|
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_comp(6), nethack(6)
|
|
|
|
|
|
|
|
|
|
|
|
Dec Last change: 12 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DGN_COMP(6) 1995 DGN_COMP(6)
|
|
|
|
|
|
|
|
BUGS
|
|
Probably infinite.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dec Last change: 12 5
|
|
|
|
|
|
|