Merge branch 'NetHack-3.7' into copperwater-hallutraps-3.7
This commit is contained in:
303
doc/Guidebook.mn
303
doc/Guidebook.mn
@@ -1,4 +1,4 @@
|
||||
.\" $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.312 $ $NHDT-Date: 1562838836 2019/07/11 09:53:56 $
|
||||
.\" $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.337 $ $NHDT-Date: 1576431522 2019/12/15 17:38:42 $
|
||||
.\"
|
||||
.\" This is an excerpt from the 'roff' man page from the 'groff' package.
|
||||
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
||||
@@ -24,7 +24,7 @@
|
||||
.ds vr "NetHack 3.7
|
||||
.ds f0 "\*(vr
|
||||
.ds f1
|
||||
.ds f2 "October 1, 2019
|
||||
.ds f2 "December 18, 2019
|
||||
.
|
||||
.\" A note on some special characters:
|
||||
.\" \(lq = left double quote
|
||||
@@ -45,6 +45,8 @@ A Guide to the Mazes of Menace
|
||||
.au
|
||||
Original version - Eric S. Raymond
|
||||
(Edited and expanded for 3.6 by Mike Stephenson and others)
|
||||
.sp 1
|
||||
\*(f2
|
||||
.hn 1
|
||||
Introduction
|
||||
.pg
|
||||
@@ -511,8 +513,8 @@ information, then let you pick another location;
|
||||
you to choose another location to examine; \(oq:\(cq will show additional
|
||||
info, if any, without asking for confirmation.
|
||||
When picking a location,
|
||||
pressing the ESC key will terminate this command, or pressing \(oq?\(cq
|
||||
will give a brief reminder about how it works.
|
||||
pressing the ESC key will terminate this command, or pressing \(oq?\(cq will
|
||||
give a brief reminder about how it works.
|
||||
.lp ""
|
||||
If the
|
||||
.op autodescribe
|
||||
@@ -693,6 +695,14 @@ Normally checks for edible item(s) on the floor, then if none are found
|
||||
or none are chosen, checks for edible item(s) in inventory.
|
||||
Precede \(oqe\(cq with the \(oqm\(cq prefix to bypass attempting to eat
|
||||
anything off the floor.
|
||||
.lp ""
|
||||
If you attempt to eat while already satiated, you might choke to death.
|
||||
If you risk it, you will be asked whether
|
||||
to \(lqcontinue eating?\(rq \fIif you survive the first bite\fP.
|
||||
You can set the
|
||||
.op paranoid_confirmation:eating
|
||||
option to require a response of \f(CRyes\fP instead of just \f(CRy\fP.
|
||||
.
|
||||
.\" Make sure Elbereth is not hyphenated below, the exact spelling matters
|
||||
.hw Elbereth
|
||||
.lp E
|
||||
@@ -2617,8 +2627,7 @@ Using a configuration file
|
||||
.hw .nethackrc defaults.nh nethack.exe nethackW.exe
|
||||
The default name of the configuration file varies on different
|
||||
operating systems.
|
||||
On MS-DOS and Windows, it is \(lqdefaults.nh\(rq
|
||||
in the same folder as nethack.exe or nethackW.exe.
|
||||
.pg
|
||||
On
|
||||
.UX ,
|
||||
Linux,
|
||||
@@ -2626,6 +2635,18 @@ and Mac OS X it is \(lq.nethackrc\(rq in the user's home directory.
|
||||
The file may not exist, but it is a normal ASCII text file and
|
||||
can be created with any text editor.
|
||||
.pg
|
||||
On Windows, it is \(lq.nethackrc\(rq in the folder
|
||||
\(lq\\%USERPROFILE%\\NetHack\\3.6\(rq. The file may not exist,
|
||||
but it is a normal ASCII text file can can be created with any
|
||||
text editor.
|
||||
After running NetHack for the first time, you should find a default
|
||||
template for the configuration file named \(lq.nethackrc.template\(rq
|
||||
in \(lq\\%USERPROFILE%\\NetHack\\3.6\(rq.
|
||||
If you had not created the configuration file, NetHack will create
|
||||
the configuration file for you using the default template file.
|
||||
.pg
|
||||
On MS-DOS, it is \(lqdefaults.nh\(rq in the same folder as nethack.exe.
|
||||
.pg
|
||||
Any line in the configuration file starting with \(oq#\(cq is treated
|
||||
as a comment.
|
||||
Empty lines are ignored.
|
||||
@@ -2642,6 +2663,7 @@ of which can be used multiple times.
|
||||
In general, the statements are
|
||||
written in capital letters, followed by an equals sign, followed by
|
||||
settings particular to that statement.
|
||||
.pg
|
||||
Here is a list of allowed statements:
|
||||
.lp OPTIONS
|
||||
There are two types of options, boolean and compound options.
|
||||
@@ -2653,7 +2675,7 @@ Some options are persistent, and apply only to new games.
|
||||
You can specify multiple OPTIONS statements, and multiple options
|
||||
separated by commas in a single OPTIONS statement.
|
||||
(Comma separated options are processed from right to left.)
|
||||
.pg
|
||||
.lp ""
|
||||
Example:
|
||||
.sd
|
||||
.ft CR
|
||||
@@ -2682,6 +2704,9 @@ HACKDIR, must be writable.
|
||||
.lp TROUBLEDIR
|
||||
The location that a record of game aborts and self-diagnosed game problems
|
||||
is kept. Defaults to HACKDIR, must be writable.
|
||||
.\"
|
||||
.\" config file entries beyond this point are shown alphabetically
|
||||
.\"
|
||||
.lp AUTOCOMPLETE
|
||||
Enable or disable an extended command autocompletion.
|
||||
Autocompletion has no effect for the X11 windowport.
|
||||
@@ -2689,7 +2714,7 @@ You can specify multiple autocompletions.
|
||||
To enable autocompletion, list the extended command.
|
||||
Prefix the command with \(lq!\(rq to disable the autocompletion
|
||||
for that command.
|
||||
.pg
|
||||
.lp ""
|
||||
Example:
|
||||
.sd
|
||||
\f(CRAUTOCOMPLETE=zap,!annotate\fP
|
||||
@@ -2705,7 +2730,7 @@ extended commands.
|
||||
You can specify multiple bindings.
|
||||
Format is key followed by the command, separated by a colon.
|
||||
See the \(lqChanging Key Bindings\(rq section for more information.
|
||||
.pg
|
||||
.lp ""
|
||||
Example:
|
||||
.sd
|
||||
\f(CRBIND=\(haX:getpos.autodescribe\fP
|
||||
@@ -2713,7 +2738,7 @@ Example:
|
||||
.lp CHOOSE
|
||||
Chooses at random one of the comma-separated parameters as an active
|
||||
section name. Lines in other sections are ignored.
|
||||
.pg
|
||||
.lp ""
|
||||
Example:
|
||||
.sd
|
||||
.ft CR \" constant-width Roman
|
||||
@@ -2725,55 +2750,73 @@ OPTIONS=role:arc,race:dwa,align:law,gender:fem
|
||||
OPTIONS=role:wiz,race:elf,align:cha,gender:mal
|
||||
.ft \" revert to previous font
|
||||
.ed
|
||||
.lp MSGTYPE
|
||||
Change the way messages are shown in the top status line.
|
||||
See the \(lqConfiguring Message Types\(rq section.
|
||||
.lp MENUCOLOR
|
||||
Highlight menu lines with different colors.
|
||||
See the \(lqConfiguring Menu Colors\(rq section.
|
||||
.lp MSGTYPE
|
||||
Change the way messages are shown in the top status line.
|
||||
See the \(lqConfiguring Message Types\(rq section.
|
||||
.lp ROGUESYMBOLS
|
||||
Custom symbols for for the rogue level's symbol set.
|
||||
See \fISYMBOLS\fP below.
|
||||
.lp SOUND
|
||||
Define a sound mapping.
|
||||
See the \(lqConfiguring User Sounds\(rq section.
|
||||
.lp SOUNDDIR
|
||||
Define the directory that contains the sound files.
|
||||
See the \(lqConfiguring User Sounds\(rq section.
|
||||
.lp SYMBOLS
|
||||
Override one or more symbols in the symbols files.
|
||||
Override one or more symbols in the symbol set used for all dungeon
|
||||
levels except for the special rogue level.
|
||||
See the \(lqModifying NetHack Symbols\(rq section.
|
||||
.pg
|
||||
.lp ""
|
||||
Example:
|
||||
.sd
|
||||
\f(CRSYMBOLS=S_boulder:0\fP
|
||||
\f(CR# replace small punctuation (tick marks) with digits\fP
|
||||
\f(CRSYMBOLS=S_boulder:0,S_golem:7\fP
|
||||
.ed
|
||||
.lp WIZKIT
|
||||
Debug mode only: extra items to add to initial inventory.
|
||||
Value is the name of a text file containing a list of item names,
|
||||
one per line, up to a maximum of 128 lines.
|
||||
Each line is processed by the function that handles wishing.
|
||||
.pg
|
||||
.lp ""
|
||||
Example:
|
||||
.sd
|
||||
\f(CRWIZKIT=\(ti/wizkit.txt\fP \" \(ti == '~'
|
||||
.ed
|
||||
.lp SOUNDDIR
|
||||
Define the directory that contains the sound files.
|
||||
See the \(lqConfiguring User Sounds\(rq section.
|
||||
.lp SOUND
|
||||
Define a sound mapping.
|
||||
See the \(lqConfiguring User Sounds\(rq section.
|
||||
.
|
||||
.pg
|
||||
Here is a short example of config file contents:
|
||||
.sd
|
||||
\ \" dummy paragraph to force some separation [.BR isn't working as intended]
|
||||
.pg
|
||||
.SD n \" suppress indentation
|
||||
Here is an example of configuration file contents:
|
||||
.ED
|
||||
.\" [conditional indentation; see description of NETHACKOPTIONS below]
|
||||
.ds sD i \" assume proportional, indentation acceptable and preferred
|
||||
.\" Check for fixed-width font; 'f' will be same width as 'F'.
|
||||
.if (\w'f'p)=(\w'F'p) .ds sD n \" if same width, suppress indentation
|
||||
.SD \*(sD \" string variable sD will expand to either 'i' or 'n'
|
||||
.ft CR \" set font to constant-width Roman
|
||||
# Set your character's role, race, gender, and alignment.
|
||||
OPTIONS=role:Valkyrie, race:Human, gender:female, align:lawful
|
||||
#
|
||||
# Turn on autopickup, set automatically picked up object types
|
||||
OPTIONS=autopickup,pickup_types:$"=/!?+
|
||||
# Show colored text if possible
|
||||
OPTIONS=color
|
||||
# Show lit corridors differently
|
||||
OPTIONS=lit_corridor
|
||||
#
|
||||
# Map customization
|
||||
OPTIONS=color # Display things in color if possible
|
||||
OPTIONS=lit_corridor # Show lit corridors differently
|
||||
OPTIONS=hilite_pet,hilite_pile
|
||||
# Replace small punctuation (tick marks) with digits
|
||||
SYMBOLS=S_boulder:0,S_golem:7
|
||||
#
|
||||
# No startup splash screen. Windows GUI only.
|
||||
OPTIONS=!splash_screen
|
||||
.ft \" revert to previous font
|
||||
.ed
|
||||
.BR 2
|
||||
.ED
|
||||
.pg
|
||||
\ \" another dummy paragraph [.BR 2]
|
||||
.hn 2
|
||||
Using the NETHACKOPTIONS environment variable
|
||||
.pg
|
||||
@@ -3174,7 +3217,7 @@ Valid settings are:
|
||||
.sd
|
||||
.si
|
||||
.CC 0 "disabled"
|
||||
.CC 1 "enabled and make OS adjustments to support mouse use in the game"
|
||||
.CC 1 "enabled and make OS adjustments to support mouse use"
|
||||
.CC 2 "like 1 but does not make any OS adjustments"
|
||||
.ei
|
||||
.ed
|
||||
@@ -3274,6 +3317,8 @@ bones data when dying in debug mode;
|
||||
require \(lqyes\(rq rather than \(oqy\(cq to confirm attacking a peaceful monster;
|
||||
.PL wand-break
|
||||
require \(lqyes\(rq rather than \(oqy\(cq to confirm breaking a wand;
|
||||
.PL eating
|
||||
require \(lqyes\(rq rather than \(oqy\(cq to confirm whether to continue eating;
|
||||
.PL Were-change
|
||||
require \(lqyes\(rq rather than \(oqy\(cq to confirm changing form due to lycanthropy
|
||||
when hero has polymorph control;
|
||||
@@ -3591,7 +3636,7 @@ used to customize and change the characteristics of the
|
||||
windowtype that you have chosen.
|
||||
Character strings that are too long may be truncated.
|
||||
Not all window ports will adjust for all settings listed
|
||||
here. You can safely add any of these options to your config
|
||||
here. You can safely add any of these options to your configuration
|
||||
file, and if the window port is capable of adjusting to
|
||||
suit your preferences, it will attempt to do so. If it
|
||||
can't it will silently ignore it. You can find out if an
|
||||
@@ -3787,7 +3832,8 @@ May be used to alter the value of keystrokes that the operating system
|
||||
returns to NetHack to help compensate for international keyboard issues.
|
||||
OPTIONS=subkeyvalue:171/92
|
||||
will return 92 to NetHack, if 171 was originally going to be returned.
|
||||
You can use multiple subkeyvalue statements in the config file if needed.
|
||||
You can use multiple subkeyvalue statements in the configuration file
|
||||
if needed.
|
||||
Cannot be set with the \(oqO\(cq command.
|
||||
.lp video
|
||||
Set the video mode used (PC NetHack only).
|
||||
@@ -3851,12 +3897,12 @@ character in the pattern, specifically:
|
||||
.ed
|
||||
The
|
||||
.op autopickup_exception
|
||||
rules are processed in the order in which they appear in your config file,
|
||||
thus allowing a later rule to override an earlier rule.
|
||||
rules are processed in the order in which they appear in your configuration
|
||||
file, thus allowing a later rule to override an earlier rule.
|
||||
.lp ""
|
||||
Exceptions can be set with the \(oqO\(cq command, but because they are not
|
||||
included in your config file, they won't be in effect if you save and then
|
||||
restore your game.
|
||||
included in your configuration file, they won't be in effect if you save
|
||||
and then restore your game.
|
||||
.op autopickup_exception
|
||||
rules and not saved with the game.
|
||||
.\" end of ``.lp autopickup_exception'' entry; continue enclosing page...
|
||||
@@ -3899,8 +3945,8 @@ You can bind multiple keys to the same extended command.
|
||||
Unbind a key by using \(lqnothing\(rq as the extended command to bind to.
|
||||
You can also bind the \(lq<esc>\(rq, \(lq<enter>\(rq, and \(lq<space>\(rq keys.
|
||||
.lp "Menu accelerator keys"
|
||||
The menu control or accelerator keys can also be rebound via OPTIONS-lines
|
||||
in the config file.
|
||||
The menu control or accelerator keys can also be rebound via OPTIONS lines
|
||||
in the configuration file.
|
||||
You cannot bind object symbols into menu accelerators.
|
||||
.lp "Special command keys"
|
||||
Below are the special commands you can rebind.
|
||||
@@ -4059,7 +4105,7 @@ Configuring Message Types
|
||||
You can change the way the messages are shown in the message area, when
|
||||
the message matches a user-defined pattern.
|
||||
.pg
|
||||
In general, the config file entries to configure the message types
|
||||
In general, the configuration file entries to describe the message types
|
||||
look like this:
|
||||
.si
|
||||
MSGTYPE=type "pattern"
|
||||
@@ -4099,16 +4145,17 @@ the user is prompted with more-prompt, and a message matching
|
||||
.\" historical trivia: "You displaced Fido." was the sort of message you
|
||||
.\" got when swapping places with your pet, but that was changed long ago...
|
||||
.lp ""
|
||||
The order of the defined MSGTYPE-lines is important; the last matching
|
||||
The order of the defined MSGTYPE lines is important; the last matching
|
||||
rule is used. Put the general case first, exceptions below them.
|
||||
.hn 2
|
||||
Configuring Menu Colors
|
||||
.pg
|
||||
Some platforms allow you to define colors used in menu lines when the
|
||||
line matches a user-defined pattern. At this time the tty, win32tty and
|
||||
win32gui support this.
|
||||
line matches a user-defined pattern.
|
||||
At this time the tty, curses, win32tty and
|
||||
win32gui interfaces support this.
|
||||
.pg
|
||||
In general, the config file entries to configure the menu color mappings
|
||||
In general, the configuration file entries to describe the menu color mappings
|
||||
look like this:
|
||||
.si
|
||||
.lp MENUCOLOR="pattern"=color&attribute
|
||||
@@ -4151,8 +4198,8 @@ in it will be shown in green color, lines with \(lq\ cursed\ \(rq will be
|
||||
shown in red, and lines with \(lq\ cursed\ \(rq followed
|
||||
by \(lq(being worn)\(rq
|
||||
on the same line will be shown in red color and underlined.
|
||||
You can have multiple MENUCOLOR entries in your config file,
|
||||
and the last MENUCOLOR-line in your config file that matches
|
||||
You can have multiple MENUCOLOR entries in your configuration file,
|
||||
and the last MENUCOLOR line that matches
|
||||
a menu line will be used for the line.
|
||||
.pg
|
||||
Note that if you intend to have one or more color specifications match
|
||||
@@ -4168,7 +4215,7 @@ that matches a user-defined pattern is delivered to the message window.
|
||||
At this time the Qt port and the win32tty and win32gui ports support the
|
||||
use of user sounds.
|
||||
.pg
|
||||
The following config file entries are relevant to mapping user sounds
|
||||
The following configuration file entries are relevant to mapping user sounds
|
||||
to messages:
|
||||
.lp SOUNDDIR
|
||||
The directory that houses the sound files to be played.
|
||||
@@ -4276,7 +4323,7 @@ text to match against.
|
||||
.lp "*"
|
||||
\(lqalways\(rq will set the default attributes for that field.
|
||||
.lp "*"
|
||||
\(lqup\(rq and \(lqdown\(rq set the field attributes for when the field
|
||||
\(lqup\(rq, \(lqdown\(rq set the field attributes for when the field
|
||||
value changes upwards or downwards.
|
||||
This attribute times out after
|
||||
.op statushilites
|
||||
@@ -4337,7 +4384,7 @@ is tested; the character's name is ignored.
|
||||
.ei
|
||||
.pg
|
||||
The in-game options menu can help you determine the correct syntax for a
|
||||
config file.
|
||||
configuration file.
|
||||
.pg
|
||||
The whole feature can be disabled by setting option
|
||||
.op statushilites
|
||||
@@ -4372,8 +4419,9 @@ Set the name of the symbol set that you want to load.
|
||||
Set the name of the symbol set that you want to load for display
|
||||
on the rogue level.
|
||||
.pg
|
||||
You can also override one or more symbols using the SYMBOLS config
|
||||
file option. Symbols are specified as name:value pairs.
|
||||
You can also override one or more symbols using the SYMBOLS and
|
||||
ROGUESYMBOLS configuration file options.
|
||||
Symbols are specified as name:value pairs.
|
||||
Note that
|
||||
NetHack escape-processes the value string in conventional C fashion.
|
||||
This means that \\ is a prefix to take the following character literally.
|
||||
@@ -4382,16 +4430,23 @@ The special prefix form \\m switches on the meta bit in the symbol value,
|
||||
and the \(ha prefix causes the following character to be treated as a
|
||||
control character.
|
||||
.pg
|
||||
.\" Table is centered.
|
||||
.\" First line (title) is left justified and spans second and third columns;
|
||||
.\" it used to be centered but tended to look as if too far to the right.
|
||||
.\" Remaining lines are left justified in each of three columns. First
|
||||
.\" line (second overall) contains column labels; the first column has a
|
||||
.\" dummy label of two spaces. (That used to be "Default" but it made all
|
||||
.\" the lines wider because of the label's width and caused several lines
|
||||
.\" to be too wide when generating plain text output. Two spaces leaves
|
||||
.\" some room between the symbol character and name.) Entries in first
|
||||
.\" column now use constant-width Roman font to approximate TeX tt font.
|
||||
.TS S
|
||||
center;
|
||||
c s s
|
||||
c1 l1 l.
|
||||
l s s
|
||||
l1fCR l1 l.
|
||||
.\"TABLE_START
|
||||
.\" because description is wide, centered title seems off, so pad it a bit
|
||||
.\" note that each backslash precedes one space of padding (including the
|
||||
.\" last one; in other words, there's a trailing space here)
|
||||
NetHack Symbols\ \ \ \ \ \ \
|
||||
Default Symbol Name Description
|
||||
NetHack Symbols
|
||||
\ \ Symbol Name Description
|
||||
\_ \_ \_
|
||||
\ S_air (air)
|
||||
\&_ S_altar (altar)
|
||||
@@ -4518,7 +4573,8 @@ s S_spider (arachnid or centipede)
|
||||
@ S_ss3 (magic shield 3 of 4)
|
||||
* S_ss4 (magic shield 4 of 4)
|
||||
\(ha S_statue_trap (statue trap)
|
||||
\ S_stone (dark part of a room)
|
||||
\ S_stone (solid rock or unexplored terrain
|
||||
\ \ \ or dark part of a room)
|
||||
] S_strange_obj (strange object)
|
||||
\- S_sw_bc (swallow bottom center)
|
||||
\\ S_sw_bl (swallow bottom left)
|
||||
@@ -4562,13 +4618,30 @@ v S_vortex (vortex)
|
||||
w S_worm (worm)
|
||||
\(ti S_worm_tail (long worm tail)
|
||||
W S_wraith (wraith)
|
||||
x S_xan (xan or other mythical/fantastic insect)
|
||||
x S_xan (xan or other extraordinary insect)
|
||||
X S_xorn (xorn)
|
||||
Y S_yeti (apelike creature)
|
||||
Z S_zombie (zombie)
|
||||
z S_zruty (zruty)
|
||||
\ S_pet_override (any pet if ACCESSIBILITY=1 is set)
|
||||
\ S_hero_override (hero if ACCESSIBILITY=1 is set)
|
||||
.\"TABLE_END Do not delete this line.
|
||||
.TE
|
||||
.\" don't hyphenate file name across lines
|
||||
.hw sysconf
|
||||
.pg
|
||||
.lp "Notes:"
|
||||
.lp "*"
|
||||
Several symbols in this table appear to be blank.
|
||||
They are the space character, except for S_pet_override
|
||||
and S_hero_override which don't have any default value
|
||||
and can only be used if enabled in the \(lqsysconf\(rq file.
|
||||
.lp "*"
|
||||
S_rock is misleadingly named; rocks and stones use S_gem.
|
||||
Statues and boulders are the rock being referred to, but since
|
||||
version 3.6.0, statues are displayed as the monster they depict.
|
||||
So S_rock is only used for boulders and not used at all if
|
||||
overridden by the more specific S_boulder.
|
||||
.pg
|
||||
.hn 2
|
||||
Configuring NetHack for Play by the Blind
|
||||
@@ -4609,8 +4682,14 @@ configuration file will cause the game to run in a manner accessible
|
||||
to the blind.
|
||||
After you have gained some experience with the game
|
||||
and with editing files, you may want to alter settings via \fBSYMBOLS=\fP
|
||||
and \fBROGUESYMBOLS=\fP
|
||||
in your configuration file to better suit your preferences.
|
||||
The most crucial settings to make the game accessible are:
|
||||
See the previous section for the special symbols S_pet_override
|
||||
to force a consistent symbol for all pets and
|
||||
S_hero_override to force a unique symbol for the player character
|
||||
if \fBaccessibility\fP is enabled in the sysconf file.
|
||||
.pg
|
||||
The most crucial settings to make the game more accessible are:
|
||||
.pg
|
||||
.lp symset:NHAccess
|
||||
Load a symbol set appropriate for use by blind players.
|
||||
@@ -4644,7 +4723,7 @@ of moving 8 units at a time.
|
||||
.lp nostatus_updates
|
||||
Prevent updates to the status lines at the bottom of the screen, if
|
||||
your screen-reader reads those lines. The same information can be
|
||||
seen via the #attributes command.
|
||||
seen via the \(lq#attributes\(rq command.
|
||||
.hn 2
|
||||
Global Configuration for System Administrators
|
||||
.pg
|
||||
@@ -4721,6 +4800,13 @@ to identify unique people for the score file.
|
||||
MAX_STATUENAME_RANK\ =\ Maximum number of score file entries to use for
|
||||
random statue names (default is 10).
|
||||
.lp
|
||||
ACCESSIBILITY\ =\ 0 or 1 to disable or enable, respectively, the ability for players
|
||||
to set S_pet_override and S_hero_override symbols in their configuration file.
|
||||
.lp
|
||||
PORTABLE_DEVICE_PATHS\ =\ 0 or 1 Windows OS only, the game will look
|
||||
for all of its external files, and write to all of its output files in one place
|
||||
rather than at the standard locations.
|
||||
.lp
|
||||
DUMPLOGFILE\ =\ A filename where the end-of-game dumplog is saved.
|
||||
Not defining this will prevent dumplog from being created. Only available
|
||||
if your game is compiled with DUMPLOG. Allows the following placeholders:
|
||||
@@ -4730,7 +4816,7 @@ if your game is compiled with DUMPLOG. Allows the following placeholders:
|
||||
.PL %%
|
||||
literal \(oq\f(CR%\fP\(cq
|
||||
.PL %v
|
||||
version (eg. \(lq\f(CR3.6.2\-0\fP\(rq)
|
||||
version (eg. \(lq\f(CR3.6.3\-0\fP\(rq)
|
||||
.PL %u
|
||||
game UID
|
||||
.PL %t
|
||||
@@ -4893,7 +4979,7 @@ and \fBPaul Winner\fP, ported NetHack 3.1 to the PC.
|
||||
\fBMike Engber\fP, \fBDavid Hairston\fP, \fBMichael Hamel\fP,
|
||||
\fBJonathan Handler\fP, \fBJohnny Lee\fP, \fBTim Lennan\fP, \fBRob Menke\fP,
|
||||
and \fBAndy Swanson\fP, developed NetHack 3.1 for the Macintosh,
|
||||
porting it for MPW. Building on their development, \fBBarton House\fP
|
||||
porting it for MPW. Building on their development, \fBBart House\fP
|
||||
added a Think C port.
|
||||
.pg
|
||||
\fBTimo Hakulinen\fP ported NetHack 3.1 to OS/2. \fBEric Smith\fP
|
||||
@@ -5052,7 +5138,7 @@ flavors and maintained the X11 interface.
|
||||
\fBKen Lorber\fP, \fBHaoyang Wang\fP, \fBPat Rankin\fP, and \fBDean Luick\fP
|
||||
maintained the port of NetHack 3.6 for Mac OSX.
|
||||
.pg
|
||||
\fBMichael Allison\fP, \fBDavid Cohrs\fP, \fBBarton House\fP,
|
||||
\fBMichael Allison\fP, \fBDavid Cohrs\fP, \fBBart House\fP,
|
||||
\fBPasi Kallinen\fP, \fBAlex Kompel\fP, \fBDion Nicolaas\fP,
|
||||
\fBDerek S. Ray\fP and \fBYitzhak Sapir\fP maintained the port of
|
||||
NetHack 3.6 for Microsoft Windows.
|
||||
@@ -5074,12 +5160,21 @@ The NetHack Development Team at the time of release of 3.6.1 consisted of
|
||||
\fBPat Rankin\fP, \fBDerek S. Ray\fP, \fBAlex Smith\fP,
|
||||
\fBMike Stephenson\fP, \fBJanet Walz\fP, and \fBPaul Winner\fP.
|
||||
.pg
|
||||
In early May 2019, another 320 bug fixes along with some enhancements and
|
||||
In early May 2019, another 320 bug fixes along with some enhancements and
|
||||
the adopted curses window port, were released as 3.6.2.
|
||||
.pg
|
||||
\fBBart House\fP, who had contributed to the game as a porting team
|
||||
participant for decades, joined the NetHack Development Team in late May 2019.
|
||||
.pg
|
||||
NetHack 3.6.3 was released on December 5, 2019 containing over 190 bug
|
||||
fixes to NetHack 3.6.2.
|
||||
.pg
|
||||
NetHack 3.6.4 was released on December 18, 2019 containing a security fix
|
||||
and a few bug fixes.
|
||||
.pg
|
||||
The official NetHack web site is maintained by \fBKen Lorber\fP
|
||||
at
|
||||
.UR http://www.nethack.org/ .
|
||||
.UR https://www.nethack.org/ .
|
||||
.pg
|
||||
.hn 2
|
||||
SPECIAL THANKS
|
||||
@@ -5089,7 +5184,7 @@ again to \fBM. Drew Streib\fP and \fBPasi Kallinen\fP for providing a
|
||||
public NetHack server at nethack.alt.org. Thanks to \fBKeith Simpson\fP
|
||||
and \fBAndy Thomson\fP for hardfought.org. Thanks to all those
|
||||
unnamed dungeoneers who invest their time and effort into annual
|
||||
NetHack tournaments such as Junethack, The November NetHack Tournament
|
||||
NetHack tournaments such as Junethack, The November NetHack Tournament
|
||||
and in days past, devnull.net (gone for now, but not forgotten).
|
||||
.pg
|
||||
.ce
|
||||
@@ -5103,49 +5198,50 @@ miscreants in this, the list of Dungeoneers:
|
||||
.
|
||||
.TS S
|
||||
center;
|
||||
c c c.
|
||||
c2 c2 c.
|
||||
.\"TABLE_START
|
||||
Adam Aronow Janet Walz Nathan Eady
|
||||
Alex Kompel Janne Salmijarvi Norm Meluch
|
||||
Alex Smith Jean-Christophe Collet Olaf Seibert
|
||||
Andreas Dorn Jeff Bailey Pasi Kallinen
|
||||
Andy Church Jochen Erwied Pat Rankin
|
||||
Andy Swanson John Kallen Patric Mueller
|
||||
Adam Aronow J. Ali Harlow Mikko Juola
|
||||
Alex Kompel Janet Walz Nathan Eady
|
||||
Alex Smith Janne Salmijarvi Norm Meluch
|
||||
Andreas Dorn Jean-Christophe Collet Olaf Seibert
|
||||
Andy Church Jeff Bailey Pasi Kallinen
|
||||
Andy Swanson Jochen Erwied Pat Rankin
|
||||
Andy Thomson John Kallen Patric Mueller
|
||||
Ari Huttunen John Rupley Paul Winner
|
||||
Barton House John S. Bien Pierre Martineau
|
||||
Bart House John S. Bien Pierre Martineau
|
||||
Benson I. Margulies Johnny Lee Ralf Brown
|
||||
Bill Dyer Jon W{tte Ray Chason
|
||||
Boudewijn Waijers Jonathan Handler Richard Addison
|
||||
Bruce Cox Joshua Delahunty Richard Beigel
|
||||
Bruce Holloway Karl Garrison Richard P. Hughey
|
||||
Bruce Mewborne Keizo Yamamoto Rob Menke
|
||||
Carl Schelin Ken Arnold Robin Bandy
|
||||
Chris Russo Ken Arromdee Robin Johnson
|
||||
David Cohrs Ken Lorber Roderick Schertler
|
||||
David Damerell Ken Washikita Roland McGrath
|
||||
David Gentzel Kevin Darcy Ron Van Iwaarden
|
||||
David Hairston Kevin Hugo Ronnen Miller
|
||||
Dean Luick Kevin Sitze Ross Brown
|
||||
Del Lamb Kevin Smolkowski Sascha Wostmann
|
||||
Derek S. Ray Kevin Sweet Scott Bigham
|
||||
Deron Meranda Lars Huttar Scott R. Turner
|
||||
Dion Nicolaas Leon Arnott Sean Hunt
|
||||
Dylan O'Donnell M. Drew Streib Stephen Spackman
|
||||
Eric Backus Malcolm Ryan Stefan Thielscher
|
||||
Eric Hendrickson Mark Gooderum Stephen White
|
||||
Eric R. Smith Mark Modrall Steve Creps
|
||||
Eric S. Raymond Marvin Bressler Steve Linhart
|
||||
Erik Andersen Matthew Day Steve VanDevender
|
||||
Frederick Roeber Merlyn LeRoy Teemu Suikki
|
||||
Gil Neiger Michael Allison Tim Lennan
|
||||
Greg Laskin Michael Feir Timo Hakulinen
|
||||
Greg Olson Michael Hamel Tom Almy
|
||||
Gregg Wonderly Michael Sokolov Tom West
|
||||
Hao-yang Wang Mike Engber Warren Cheung
|
||||
Helge Hafting Mike Gallop Warwick Allison
|
||||
Irina Rempt-Drijfhout Mike Passaretti Yitzhak Sapir
|
||||
Carl Schelin Keith Simpson Robin Bandy
|
||||
Chris Russo Ken Arnold Robin Johnson
|
||||
David Cohrs Ken Arromdee Roderick Schertler
|
||||
David Damerell Ken Lorber Roland McGrath
|
||||
David Gentzel Ken Washikita Ron Van Iwaarden
|
||||
David Hairston Kevin Darcy Ronnen Miller
|
||||
Dean Luick Kevin Hugo Ross Brown
|
||||
Del Lamb Kevin Sitze Sascha Wostmann
|
||||
Derek S. Ray Kevin Smolkowski Scott Bigham
|
||||
Deron Meranda Kevin Sweet Scott R. Turner
|
||||
Dion Nicolaas Lars Huttar Sean Hunt
|
||||
Dylan O'Donnell Leon Arnott Stephen Spackman
|
||||
Eric Backus M. Drew Streib Stefan Thielscher
|
||||
Eric Hendrickson Malcolm Ryan Stephen White
|
||||
Eric R. Smith Mark Gooderum Steve Creps
|
||||
Eric S. Raymond Mark Modrall Steve Linhart
|
||||
Erik Andersen Marvin Bressler Steve VanDevender
|
||||
Fredrik Ljungdahl Matthew Day Teemu Suikki
|
||||
Frederick Roeber Merlyn LeRoy Tim Lennan
|
||||
Gil Neiger Michael Allison Timo Hakulinen
|
||||
Greg Laskin Michael Feir Tom Almy
|
||||
Greg Olson Michael Hamel Tom West
|
||||
Gregg Wonderly Michael Sokolov Warren Cheung
|
||||
Hao-yang Wang Mike Engber Warwick Allison
|
||||
Helge Hafting Mike Gallop Yitzhak Sapir
|
||||
Irina Rempt-Drijfhout Mike Passaretti
|
||||
Izchak Miller Mike Stephenson
|
||||
J. Ali Harlow Mikko Juola
|
||||
.\"TABLE_END Do not delete this line.
|
||||
.TE
|
||||
.pg
|
||||
@@ -5155,3 +5251,4 @@ J. Ali Harlow Mikko Juola
|
||||
.\"Amiga is a trademark of Commodore-Amiga, Inc
|
||||
.sm "Brand and product names are trademarks or registered trademarks \
|
||||
of their respective holders."
|
||||
.\"EOF
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
%.au
|
||||
\author{Original version - Eric S. Raymond\\
|
||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||
\date{October 1, 2019}
|
||||
\date{December 18, 2019}
|
||||
|
||||
\maketitle
|
||||
|
||||
@@ -796,7 +796,14 @@ Eat food.\\
|
||||
Normally checks for edible item(s) on the floor, then if none are found
|
||||
or none are chosen, checks for edible item(s) in inventory.
|
||||
Precede `{\tt e}' with the `{\tt m}' prefix to bypass attempting to eat
|
||||
anything off the floor.
|
||||
anything off the floor.\\
|
||||
%.lp ""
|
||||
If you attempt to eat while already satiated, you might choke to death.
|
||||
If you risk it, you will be asked whether
|
||||
to ``continue eating?'' {\it if you survive the first bite\/}.
|
||||
You can set the
|
||||
{\it paranoid\verb+_+confirmation:eating\/}
|
||||
option to require a response of ``{\tt yes}'' instead of just `{\tt y}'.
|
||||
%.lp
|
||||
% Make sure Elbereth is not hyphenated below, the exact spelling matters.
|
||||
% (Only specified here to parallel Guidebook.mn; use of \tt font implicity
|
||||
@@ -1130,7 +1137,7 @@ slot to another so that it has a letter which is more meaningful for you
|
||||
or that it will appear in a particular location when inventory listings
|
||||
are displayed.
|
||||
You can move to a currently empty slot, or if the destination is
|
||||
occupied--and won't merge--the item there will swap slots with the one
|
||||
occupied---and won't merge---the item there will swap slots with the one
|
||||
being moved.
|
||||
``{\tt \#adjust}'' can also be used to split a stack of objects; when
|
||||
choosing the item to adjust, enter a count prior to its letter.\\
|
||||
@@ -1333,7 +1340,7 @@ Autocompletes.
|
||||
Debug mode only.\\
|
||||
%.lp ""
|
||||
Asks for confirmation; default is `{\tt n}' (no); continue playing.
|
||||
To really panic, respond with `{\tt y}''.
|
||||
To really panic, respond with `{\tt y}'.
|
||||
You can set the
|
||||
{\it paranoid\verb+_+confirmation:quit\/}
|
||||
option to require a response of ``{\tt yes}'' instead.
|
||||
@@ -2044,9 +2051,9 @@ will result in it disappearing from your map, similarly if it is the
|
||||
one who moved rather than you.
|
||||
|
||||
%.pg
|
||||
However, if you encounter a monster which you can't see or sense--
|
||||
perhaps it is invisible and has just tapped you on the noggin--
|
||||
a special ``remembered, unseen monster'' marker will be displayed at
|
||||
However, if you encounter a monster which you can't see or
|
||||
sense---perhaps it is invisible and has just tapped you on the
|
||||
noggin---a special ``remembered, unseen monster'' marker will be displayed at
|
||||
the location where you think it is.
|
||||
That will persist until you have
|
||||
proven that there is no monster there, even if the unseen monster
|
||||
@@ -2326,7 +2333,7 @@ But first you need to have a weapon in each hand.
|
||||
(Note that your two weapons are not fully equal; the one in the
|
||||
hand you normally wield with is considered primary and the other
|
||||
one is considered secondary. The most noticeable difference is
|
||||
after you stop--or before you begin, for that matter--wielding
|
||||
after you stop---or before you begin, for that matter---wielding
|
||||
two weapons at once. The primary is your wielded weapon and the
|
||||
secondary is just an item in your inventory that's been designated
|
||||
as alternate weapon.)
|
||||
@@ -2558,7 +2565,7 @@ The commands to use rings are `{\tt P}' (put on) and `{\tt R}' (remove).
|
||||
%.pg
|
||||
Spellbooks are tomes of mighty magic. When studied with the `{\tt r}' (read)
|
||||
command, they transfer to the reader the knowledge of a spell (and
|
||||
therefore eventually become unreadable) --- unless the attempt backfires.
|
||||
therefore eventually become unreadable)---unless the attempt backfires.
|
||||
Reading a cursed spellbook or one with mystic runes beyond
|
||||
your ken can be harmful to your health!
|
||||
|
||||
@@ -2701,9 +2708,9 @@ you are carrying (shopkeepers aside).
|
||||
Normally, if you have seen an object at a particular map location and
|
||||
move to another location where you can't directly see that object any
|
||||
more, if will continue to be displayed on your map.
|
||||
That remains the case even if it is not actually there any more--
|
||||
perhaps a monster has picked it up or it has rotted away--
|
||||
until you can see or feel that location again.
|
||||
That remains the case even if it is not actually there any
|
||||
more---perhaps a monster has picked it up or it has rotted
|
||||
away---until you can see or feel that location again.
|
||||
One notable exception is that if the object gets covered by the
|
||||
``remembered, unseen monster'' marker.
|
||||
When that marker is later removed
|
||||
@@ -2866,19 +2873,32 @@ for system administrators.
|
||||
\subsection*{Using a configuration file}
|
||||
|
||||
%.pg
|
||||
The default name of the configuration file varies on different
|
||||
operating systems. On MS-DOS and Windows, it is \mbox{``defaults.nh''} in
|
||||
the same folder as \mbox{{\it nethack.exe\/}} or \mbox{{\it nethackW.exe\/}}.
|
||||
The default name and location of the configuration file varies on different
|
||||
operating systems.\\
|
||||
|
||||
%.lp ""
|
||||
On Unix, Linux and Mac OS X it is \mbox{``.nethackrc''} in the user's home
|
||||
directory. The file may not exist, but it is a normal ASCII text file and
|
||||
can be created with any text editor.
|
||||
can be created with any text editor.\\
|
||||
|
||||
%.pg
|
||||
%.lp ""
|
||||
On Windows, it is \mbox{``.nethackrc''} in the folder
|
||||
\mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}. The
|
||||
file may not exist, but it is a normal ASCII text file and can be created
|
||||
with any text editor.
|
||||
After runing {\it NetHack\/} for the first time, you should find a default
|
||||
template for ths configuration file named \mbox{``.nethackrc.template''} in
|
||||
\mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}.
|
||||
If you had not created the configuration file, {\it NetHack\/} will create
|
||||
the configuration file for you using the default template file.
|
||||
|
||||
%.lp ""
|
||||
On MS-DOS it is \mbox{``defaults.nh''} in the same folder as
|
||||
\mbox{{\it nethack.exe\/}}.\\
|
||||
|
||||
%.lp ""
|
||||
Any line in the configuration file starting with `{\tt \#}' is treated as a comment.
|
||||
Empty lines are ignored.
|
||||
|
||||
%.pg
|
||||
Any line beginning with `{\tt [}' and ending in `{\tt ]}' is considered a section
|
||||
Empty lines are ignored. Any line beginning with `{\tt [}' and ending in `{\tt ]}' is considered a section
|
||||
marker. The text between the square brackets is the section name.
|
||||
Lines after a section marker belong to that section, and are
|
||||
ignored unless a CHOOSE -statement was used to select that section.
|
||||
@@ -2886,9 +2906,13 @@ Section names are case insensitive.
|
||||
|
||||
%.pg
|
||||
You can use different configuration statements in the file, some
|
||||
of which can be used multiple times. In general, the statements are
|
||||
of which can be used multiple times.
|
||||
In general, the statements are
|
||||
written in capital letters, followed by an equals sign, followed by
|
||||
settings particular to that statement. Here is a list of allowed statements:
|
||||
settings particular to that statement.
|
||||
|
||||
%.pg
|
||||
Here is a list of allowed statements:
|
||||
|
||||
%.lp
|
||||
\blist{}
|
||||
@@ -2903,7 +2927,7 @@ You can specify multiple OPTIONS statements, and multiple options
|
||||
separated by commas in a single OPTIONS statement.
|
||||
(Comma separated options are processed from right to left.)
|
||||
|
||||
%.pg
|
||||
%.lp ""
|
||||
Example:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
@@ -2937,6 +2961,9 @@ HACKDIR, must be writable.
|
||||
\item[\bb{TROUBLEDIR}]
|
||||
The location that a record of game aborts and self-diagnosed game problems
|
||||
is kept. Defaults to HACKDIR, must be writable.
|
||||
%
|
||||
% config file entries beyond this point are shown alphabetically
|
||||
%
|
||||
%.lp
|
||||
\item[\bb{AUTOCOMPLETE}]
|
||||
Enable or disable an extended command autocompletion.
|
||||
@@ -2946,11 +2973,11 @@ autocompletion, list the extended command. Prefix the
|
||||
command with ``{{\tt !}}'' to disable the autocompletion
|
||||
for that command.
|
||||
|
||||
%.pg
|
||||
%.lp ""
|
||||
Example:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
AUTOCOMPLETE=zap,!annotate
|
||||
AUTOCOMPLETE=zap,!annotate
|
||||
\end{verbatim}
|
||||
%.ed
|
||||
|
||||
@@ -2965,7 +2992,7 @@ extended commands. You can specify multiple bindings. Format is key
|
||||
followed by the command, separated by a colon.
|
||||
See the ``Changing Key Bindings`` section for more information.
|
||||
|
||||
%.pg
|
||||
%.lp ""
|
||||
Example:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
@@ -2978,7 +3005,7 @@ Example:
|
||||
Chooses at random one of the comma-separated parameters as an active
|
||||
section name. Lines in other sections are ignored.
|
||||
|
||||
%.pg
|
||||
%.lp ""
|
||||
Example:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
@@ -2991,23 +3018,39 @@ Example:
|
||||
\end{verbatim}
|
||||
%.ed
|
||||
|
||||
%.lp
|
||||
\item[\bb{MSGTYPE}]
|
||||
Change the way messages are shown in the top status line.
|
||||
See the ``Configuring Message Types`` section.
|
||||
%.lp
|
||||
\item[\bb{MENUCOLOR}]
|
||||
Highlight menu lines with different colors.
|
||||
See the ``Configuring Menu Colors`` section.
|
||||
%.lp
|
||||
\item[\bb{MSGTYPE}]
|
||||
Change the way messages are shown in the top status line.
|
||||
See the ``Configuring Message Types`` section.
|
||||
%.lp
|
||||
\item[\bb{ROGUESYMBOLS}]
|
||||
Custom symbols for for the rogue level's symbol set.
|
||||
See {\it SYMBOLS} below.
|
||||
%.lp
|
||||
\item[\bb{SOUND}]
|
||||
Define a sound mapping.
|
||||
See the ``Configuring User Sounds'' section.
|
||||
%.lp
|
||||
\item[\bb{SOUNDDIR}]
|
||||
Define the directory that contains the sound files.
|
||||
See the ``Configuring User Sounds'' section.
|
||||
%.lp
|
||||
\item[\bb{SYMBOLS}]
|
||||
Override one or more symbols in the symbols files.
|
||||
Override one or more symbols in the symbol set used for all dungeon
|
||||
levels except for the special rogue level.
|
||||
See the ``Modifying {\it NetHack\/} Symbols'' section.
|
||||
%.pg
|
||||
|
||||
%.lp ""
|
||||
Example:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
SYMBOLS=S_boulder:0
|
||||
# replace small punctuation (tick marks) with digits
|
||||
SYMBOLS=S_boulder:0,S_golem:7
|
||||
\end{verbatim}
|
||||
%.ed
|
||||
|
||||
@@ -3017,24 +3060,19 @@ Debug mode only: extra items to add to initial inventory.
|
||||
Value is the name of a text file containing a list of item names,
|
||||
one per line, up to a maximum of 128 lines.
|
||||
Each line is processed by the function that handles wishing.
|
||||
%.pg
|
||||
|
||||
%.lp ""
|
||||
Example:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
WIZKIT=~/wizkit.txt
|
||||
WIZKIT=~/wizkit.txt
|
||||
\end{verbatim}
|
||||
%.ed
|
||||
%.lp
|
||||
\item[\bb{SOUNDDIR}]
|
||||
Define the directory that contains the sound files.
|
||||
See the ``Configuring User Sounds'' section.
|
||||
%.lp
|
||||
\item[\bb{SOUND}]
|
||||
Define a sound mapping. See the ``Configuring User Sounds'' section.
|
||||
\elist
|
||||
|
||||
%.lp ""
|
||||
%.pg
|
||||
Here is a short example of config file contents:
|
||||
Here is an example of configuration file contents:
|
||||
%.sd
|
||||
\begin{verbatim}
|
||||
# Set your character's role, race, gender, and alignment.
|
||||
@@ -3042,10 +3080,13 @@ Here is a short example of config file contents:
|
||||
|
||||
# Turn on autopickup, set automatically picked up object types
|
||||
OPTIONS=autopickup,pickup_types:$"=/!?+
|
||||
# Show colored text if possible
|
||||
OPTIONS=color
|
||||
# Show lit corridors differently
|
||||
OPTIONS=lit_corridor
|
||||
|
||||
# Map customization
|
||||
OPTIONS=color # Display things in color if possible
|
||||
OPTIONS=lit_corridor # Show lit corridors differently
|
||||
OPTIONS=hilite_pet,hilite_pile
|
||||
# Replace small punctuation (tick marks) with digits
|
||||
SYMBOLS=S_boulder:0,S_golem:7
|
||||
|
||||
# No startup splash screen. Windows GUI only.
|
||||
OPTIONS=!splash_screen
|
||||
@@ -3487,7 +3528,7 @@ Valid settings are:
|
||||
%.sd
|
||||
%.si
|
||||
{\tt 0} --- disabled\\
|
||||
{\tt 1} --- enabled and make OS adjustment to support mouse use in the game\\
|
||||
{\tt 1} --- enabled and make OS adjustment to support mouse use\\
|
||||
{\tt 2} --- enabled like {\tt 1}, but does not make any OS adjustments\\
|
||||
%.ei
|
||||
%.ed
|
||||
@@ -3606,6 +3647,9 @@ a peaceful monster;
|
||||
\item[{\tt wand-break}]
|
||||
require ``{\tt yes}'' rather than `{\tt y}' to confirm breaking
|
||||
a wand;
|
||||
\item[{\tt eating}]
|
||||
require ``{\tt yes}'' rather than `{\tt y}' to confirm whether to
|
||||
continue eating;
|
||||
\item[{\tt Were-change}]
|
||||
require ``{\tt yes}'' rather than `{\tt y}' to confirm changing form
|
||||
due to lycanthropy
|
||||
@@ -3966,7 +4010,7 @@ windowtype that you have chosen.
|
||||
Character strings that are too long may be truncated.
|
||||
Not all window ports will adjust for all settings listed
|
||||
here. You can safely add any of these options to your
|
||||
config file, and if the window port is capable of adjusting
|
||||
configuration file, and if the window port is capable of adjusting
|
||||
to suit your preferences, it will attempt to do so. If it
|
||||
can't it will silently ignore it. You can find out if an
|
||||
option is supported by the window port that you are currently
|
||||
@@ -4078,7 +4122,7 @@ Number of lines for traditional below-the-map status display.
|
||||
Acceptable values are 2 and 3 (default is 2).
|
||||
Curses and tty interfaces only.
|
||||
%.lp
|
||||
\item[\ib{term\verb+_+cols}\ \ {\it and}]"
|
||||
\item[\ib{term\verb+_+cols} {\normalfont and}]
|
||||
%.lp
|
||||
\item[\ib{term\verb+_+rows}]
|
||||
Curses interface only.
|
||||
@@ -4219,7 +4263,8 @@ returns to {\it NetHack\/} to help compensate for international keyboard
|
||||
issues.
|
||||
OPTIONS=subkeyvalue:171/92
|
||||
will return 92 to {\it NetHack\/}, if 171 was originally going to be returned.
|
||||
You can use multiple subkeyvalue statements in the config file if needed.
|
||||
You can use multiple subkeyvalue statements in the configuration file
|
||||
if needed.
|
||||
Cannot be set with the `{\tt O}' command.
|
||||
%.lp
|
||||
\item[\ib{video}]
|
||||
@@ -4289,13 +4334,14 @@ character in the pattern, specifically:
|
||||
%.ei
|
||||
%.ed
|
||||
|
||||
The {\it autopickup\verb+_+exception\/} rules are processed in the order
|
||||
in which they appear in your config file, thus allowing a later rule to override
|
||||
an earlier rule.
|
||||
The {\it autopickup\verb+_+exception\/} rules are processed in the order
|
||||
in which they appear in your configuration file, thus allowing a
|
||||
later rule to override an earlier rule.
|
||||
|
||||
%.lp ""
|
||||
Exceptions can be set with the `{\tt O}' command, but because they are not included
|
||||
in your config file, they won't be in effect if you save and then restore your game.
|
||||
Exceptions can be set with the `{\tt O}' command, but because they are not
|
||||
included in your configuration file, they won't be in effect if you save
|
||||
and then restore your game.
|
||||
{\it autopickup\verb+_+exception\/} rules are not saved with the game.
|
||||
\elist
|
||||
|
||||
@@ -4344,8 +4390,9 @@ the ``{\tt <esc>}'', ``{\tt <enter>}'', and ``{\tt <space>}'' keys.
|
||||
|
||||
%.lp "Menu accelerator keys"
|
||||
\item[\tb{Menu accelerator keys}]
|
||||
The menu control or accelerator keys can also be rebound via OPTIONS-lines
|
||||
in the config file. You cannot bind object symbols into menu accelerators.
|
||||
The menu control or accelerator keys can also be rebound via OPTIONS lines
|
||||
in the configuration file.
|
||||
You cannot bind object symbols into menu accelerators.
|
||||
|
||||
%.lp "Special command keys"
|
||||
\item[\tb{Special command keys}]
|
||||
@@ -4353,157 +4400,157 @@ Below are the special commands you can rebind. Some of them can be bound to
|
||||
same keys with no problems, others are in the same ``context'', and if bound
|
||||
to same keys, only one of those commands will be available. Special command
|
||||
can only be bound to a single key.
|
||||
\elist
|
||||
|
||||
%.pg
|
||||
\blist{}
|
||||
\blist{\itemindent 10mm \labelwidth 15mm \rightmargin 15mm}
|
||||
%.lp
|
||||
\item{\bb{count}}
|
||||
\item[{\bb{count}}]
|
||||
Prefix key to start a count, to repeat a command this many times.
|
||||
With {\it number\verb+_+pad\/} only. Default is `{\tt n}'.
|
||||
With {\it number\verb+_+pad\/} only. Default is~`{\tt n}'.
|
||||
%.lp
|
||||
\item{\bb{doinv}}
|
||||
Show inventory. With {\it number\verb+_+pad\/} only. Default is `{\tt 0}'.
|
||||
\item[{\bb{doinv}}]
|
||||
Show inventory. With {\it number\verb+_+pad\/} only. Default is~`{\tt 0}'.
|
||||
%.lp
|
||||
\item{\bb{fight}}
|
||||
Prefix key to force fight a direction. Default is `{\tt F}'.
|
||||
\item[{\bb{fight}}]
|
||||
Prefix key to force fight a direction. Default is~`{\tt F}'.
|
||||
%.lp
|
||||
\item{\bb{fight.numpad}}
|
||||
\item[{\bb{fight.numpad}}]
|
||||
Prefix key to force fight a direction. With {\it number\verb+_+pad\/} only.
|
||||
Default is `{\tt -}'.
|
||||
Default is~`{\tt -}'.
|
||||
%.lp
|
||||
\item{\bb{getdir.help}}
|
||||
When asked for a direction, the key to show the help. Default is `{\tt ?}'.
|
||||
\item[{\bb{getdir.help}}]
|
||||
When asked for a direction, the key to show the help. Default is~`{\tt ?}'.
|
||||
%.lp
|
||||
\item{\bb{getdir.self}}
|
||||
When asked for a direction, the key to target yourself. Default is `{\tt .}'.
|
||||
\item[{\bb{getdir.self}}]
|
||||
When asked for a direction, the key to target yourself. Default is~`{\tt .}'.
|
||||
%.lp
|
||||
\item{\bb{getdir.self2}}
|
||||
When asked for a direction, the key to target yourself. Default is `{\tt s}'.
|
||||
\item[{\bb{getdir.self2}}]
|
||||
When asked for a direction, the key to target yourself. Default is~`{\tt s}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.autodescribe}}
|
||||
\item[{\bb{getpos.autodescribe}}]
|
||||
When asked for a location, the key to toggle {\it autodescribe\/}.
|
||||
Default is `{\tt \#}'.
|
||||
Default is~`{\tt \#}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.all.next}}
|
||||
\item[{\bb{getpos.all.next}}]
|
||||
When asked for a location, the key to go to next closest interesting thing.
|
||||
Default is `{\tt a}'.
|
||||
Default is~`{\tt a}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.all.prev}}
|
||||
\item[{\bb{getpos.all.prev}}]
|
||||
When asked for a location, the key to go to previous closest interesting thing.
|
||||
Default is `{\tt A}'.
|
||||
Default is~`{\tt A}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.door.next}}
|
||||
\item[{\bb{getpos.door.next}}]
|
||||
When asked for a location, the key to go to next closest door or doorway.
|
||||
Default is `{\tt d}'.
|
||||
Default is~`{\tt d}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.door.prev}}
|
||||
\item[{\bb{getpos.door.prev}}]
|
||||
When asked for a location, the key to go to previous closest door or doorway.
|
||||
Default is `{\tt D}'.
|
||||
Default is~`{\tt D}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.help}}
|
||||
When asked for a location, the key to show help. Default is `{\tt ?}'.
|
||||
\item[{\bb{getpos.help}}]
|
||||
When asked for a location, the key to show help. Default is~`{\tt ?}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.mon.next}}
|
||||
\item[{\bb{getpos.mon.next}}]
|
||||
When asked for a location, the key to go to next closest monster.
|
||||
Default is `{\tt m}'.
|
||||
Default is~`{\tt m}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.mon.prev}}
|
||||
\item[{\bb{getpos.mon.prev}}]
|
||||
When asked for a location, the key to go to previous closest monster.
|
||||
Default is `{\tt M}'.
|
||||
Default is~`{\tt M}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.obj.next}}
|
||||
\item[{\bb{getpos.obj.next}}]
|
||||
When asked for a location, the key to go to next closest object.
|
||||
Default is `{\tt o}'.
|
||||
Default is~`{\tt o}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.obj.prev}}
|
||||
\item[{\bb{getpos.obj.prev}}]
|
||||
When asked for a location, the key to go to previous closest object.
|
||||
Default is `{\tt O}'.
|
||||
Default is~`{\tt O}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.menu}}
|
||||
\item[{\bb{getpos.menu}}]
|
||||
When asked for a location, and using one of the next or previous keys to
|
||||
cycle through targets, toggle showing a menu instead. Default is `{\tt !}'.
|
||||
cycle through targets, toggle showing a menu instead. Default is~`{\tt !}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.moveskip}}
|
||||
\item[{\bb{getpos.moveskip}}]
|
||||
When asked for a location, and using the shifted movement keys or
|
||||
meta-digit keys to fast-move around, move by skipping the same glyphs
|
||||
instead of by 8 units.
|
||||
Default is `{\tt *}'.
|
||||
Default is~`{\tt *}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.filter}}
|
||||
\item[{\bb{getpos.filter}}]
|
||||
When asked for a location, change the filtering mode when using one of
|
||||
the next or previous keys to cycle through targets. Toggles between no
|
||||
filtering, in view only, and in the same area only. Default is `{\tt "}'.
|
||||
filtering, in view only, and in the same area only. Default is~`{\tt "}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.pick}}
|
||||
\item[{\bb{getpos.pick}}]
|
||||
When asked for a location, the key to choose the location, and possibly
|
||||
ask for more info. Default is `{\tt .}'.
|
||||
ask for more info. Default is~`{\tt .}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.pick.once}}
|
||||
\item[{\bb{getpos.pick.once}}]
|
||||
When asked for a location, the key to choose the location, and skip
|
||||
asking for more info. Default is `{\tt ,}'.
|
||||
asking for more info. Default is~`{\tt ,}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.pick.quick}}
|
||||
\item[{\bb{getpos.pick.quick}}]
|
||||
When asked for a location, the key to choose the location, skip asking
|
||||
for more info, and exit the location asking loop. Default is `{\tt ;}'.
|
||||
for more info, and exit the location asking loop. Default is~`{\tt ;}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.pick.verbose}}
|
||||
\item[{\bb{getpos.pick.verbose}}]
|
||||
When asked for a location, the key to choose the location, and show more
|
||||
info without asking. Default is `{\tt :}'.
|
||||
info without asking. Default is~`{\tt :}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.self}}
|
||||
\item[{\bb{getpos.self}}]
|
||||
When asked for a location, the key to go to your location.
|
||||
Default is `{\tt @}'.
|
||||
Default is~`{\tt @}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.unexplored.next}}
|
||||
\item[{\bb{getpos.unexplored.next}}]
|
||||
When asked for a location, the key to go to next closest unexplored location.
|
||||
Default is `{\tt x}'.
|
||||
Default is~`{\tt x}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.unexplored.prev}}
|
||||
\item[{\bb{getpos.unexplored.prev}}]
|
||||
When asked for a location, the key to go to previous closest unexplored
|
||||
location. Default is `{\tt X}'.
|
||||
location. Default is~`{\tt X}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.valid}}
|
||||
\item[{\bb{getpos.valid}}]
|
||||
When asked for a location, the key to go to show valid target locations.
|
||||
Default is `{\tt \$}'.
|
||||
Default is~`{\tt \$}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.valid.next}}
|
||||
\item[{\bb{getpos.valid.next}}]
|
||||
When asked for a location, the key to go to next closest valid location.
|
||||
Default is `{\tt z}'.
|
||||
Default is~`{\tt z}'.
|
||||
%.lp
|
||||
\item{\bb{getpos.valid.prev}}
|
||||
\item[{\bb{getpos.valid.prev}}]
|
||||
When asked for a location, the key to go to previous closest valid location.
|
||||
Default is `{\tt Z}'.
|
||||
Default is~`{\tt Z}'.
|
||||
%.lp
|
||||
\item{\bb{nopickup}}
|
||||
Prefix key to move without picking up items. Default is `{\tt m}'.
|
||||
\item[{\bb{nopickup}}]
|
||||
Prefix key to move without picking up items. Default is~`{\tt m}'.
|
||||
%.lp
|
||||
\item{\bb{redraw}}
|
||||
Key to redraw the screen. Default is `{\tt \^{}R}'.
|
||||
\item[{\bb{redraw}}]
|
||||
Key to redraw the screen. Default is~`{\tt \^{}R}'.
|
||||
%.lp
|
||||
\item{\bb{redraw.numpad}}
|
||||
\item[{\bb{redraw.numpad}}]
|
||||
Key to redraw the screen. With {\it number\verb+_+pad\/} only.
|
||||
Default is `{\tt \^{}L}'.
|
||||
Default is~`{\tt \^{}L}'.
|
||||
%.lp
|
||||
\item{\bb{repeat}}
|
||||
Key to repeat previous command. Default is `{\tt \^{}A}'.
|
||||
\item[{\bb{repeat}}]
|
||||
Key to repeat previous command. Default is~`{\tt \^{}A}'.
|
||||
%.lp
|
||||
\item{\bb{reqmenu}}
|
||||
Prefix key to request menu from some commands. Default is `{\tt m}'.
|
||||
\item[{\bb{reqmenu}}]
|
||||
Prefix key to request menu from some commands. Default is~`{\tt m}'.
|
||||
%.lp
|
||||
\item{\bb{run}}
|
||||
Prefix key to run towards a direction. Default is `{\tt G}'.
|
||||
\item[{\bb{run}}]
|
||||
Prefix key to run towards a direction. Default is~`{\tt G}'.
|
||||
%.lp
|
||||
\item{\bb{run.nopickup}}
|
||||
\item[{\bb{run.nopickup}}]
|
||||
Prefix key to run towards a direction without picking up items on the way.
|
||||
Default is `{\tt M}'.
|
||||
Default is~`{\tt M}'.
|
||||
%.lp
|
||||
\item{\bb{run.numpad}}
|
||||
\item[{\bb{run.numpad}}]
|
||||
Prefix key to run towards a direction. With {\it number\verb+_+pad\/} only.
|
||||
Default is `{\tt 5}'.
|
||||
Default is~`{\tt 5}'.
|
||||
%.lp
|
||||
\item{\bb{rush}}
|
||||
Prefix key to rush towards a direction. Default is `{\tt g}'.
|
||||
\elist
|
||||
\item[{\bb{rush}}]
|
||||
Prefix key to rush towards a direction. Default is~`{\tt g}'.
|
||||
\elist
|
||||
|
||||
|
||||
@@ -4515,7 +4562,7 @@ You can change the way the messages are shown in the message area, when
|
||||
the message matches a user-defined pattern.
|
||||
|
||||
%.pg
|
||||
In general, the config file entries to configure the message types
|
||||
In general, the configuration file entries to describe the message types
|
||||
look like this:
|
||||
\begin{verbatim}
|
||||
MSGTYPE=type "pattern"
|
||||
@@ -4553,7 +4600,7 @@ the user is prompted with more-prompt, and a message matching
|
||||
``You displaced \verb+<+something\verb+>+'' is not shown at all.
|
||||
|
||||
%.lp
|
||||
The order of the defined MSGTYPE-lines is important; the last matching
|
||||
The order of the defined MSGTYPE lines is important; the last matching
|
||||
rule is used. Put the general case first, exceptions below them.
|
||||
|
||||
%.pg
|
||||
@@ -4564,11 +4611,12 @@ rule is used. Put the general case first, exceptions below them.
|
||||
|
||||
%.pg
|
||||
Some platforms allow you to define colors used in menu lines when the
|
||||
line matches a user-defined pattern. At this time the tty, win32tty and
|
||||
win32gui support this.
|
||||
line matches a user-defined pattern.
|
||||
At this time the tty, curses, win32tty and
|
||||
win32gui interfaces support this.
|
||||
|
||||
%.pg
|
||||
In general, the config file entries to configure the menu color mappings
|
||||
In general, the configuration file entries to describe the menu color mappings
|
||||
look like this:
|
||||
\begin{verbatim}
|
||||
MENUCOLOR="pattern"=color&attribute
|
||||
@@ -4620,8 +4668,8 @@ specifies that any menu line with ``~blessed~'' contained
|
||||
in it will be shown in green color, lines with ``~cursed~'' will be
|
||||
shown in red, and lines with ``~cursed~'' followed by ``(being worn)''
|
||||
on the same line will be shown in red color and underlined.
|
||||
You can have multiple MENUCOLOR entries in your config file,
|
||||
and the last MENUCOLOR-line in your config file that matches
|
||||
You can have multiple MENUCOLOR entries in your configuration file,
|
||||
and the last MENUCOLOR line that matches
|
||||
a menu line will be used for the line.
|
||||
|
||||
%.pg
|
||||
@@ -4642,7 +4690,7 @@ At this time the Qt port and the win32tty and win32gui ports support the
|
||||
use of user sounds.
|
||||
|
||||
%.pg
|
||||
The following config file entries are relevant to mapping user sounds
|
||||
The following configuration file entries are relevant to mapping user sounds
|
||||
to messages:
|
||||
|
||||
\blist{}
|
||||
@@ -4708,6 +4756,8 @@ combination with any of the other attributes.
|
||||
|
||||
To specify both a color and an attribute, use `\&' to combine them.
|
||||
To specify multiple attributes, use `+' to combine those.
|
||||
|
||||
%.lp ""
|
||||
For example: {\tt magenta\&inverse+dim}.
|
||||
|
||||
Note that the display may substitute or ignore particular attributes
|
||||
@@ -4760,23 +4810,19 @@ percentage or absolute number threshold, or text to match against.
|
||||
|
||||
\blist{}
|
||||
%.lp "*"
|
||||
\item{\bb{}}
|
||||
``{\tt always}'' will set the default attributes for that field.
|
||||
\item[{\tt always}] will set the default attributes for that field.
|
||||
%.lp "*"
|
||||
\item{\bb{}}
|
||||
``{\tt up}'' and ``{\tt down}'' set the field attributes for when the field
|
||||
value changes upwards or downwards. This attribute times out after
|
||||
{\tt statushilites} turns.
|
||||
\item[{\tt up}{\normalfont, }{\tt down}] set the field attributes
|
||||
for when the field value changes upwards or downwards. This attribute
|
||||
times out after {\tt statushilites} turns.
|
||||
%.lp "*"
|
||||
\item{\bb{}}
|
||||
``{\tt changed}'' sets the field attribute for when the field value
|
||||
\item[{\tt changed}] sets the field attribute for when the field value
|
||||
changes. This attribute times out after {\tt statushilites} turns.
|
||||
(If a field has both a ``changed'' rule and an ``up'' or ``down''
|
||||
rule which matches a change in the field's value,
|
||||
the ``up'' or ``down'' one takes precedence.)
|
||||
%.lp "*"
|
||||
\item{\bb{}}
|
||||
percentage sets the field attribute when the field value
|
||||
\item[{\tt percentage}] sets the field attribute when the field value
|
||||
matches the percentage.
|
||||
It is specified as a number between 0 and 100, followed by `{\tt \%}'
|
||||
(percent sign).
|
||||
@@ -4790,7 +4836,7 @@ Percentages for ``{\it hitpoints\/}'' and ``{\it power\/}'' are
|
||||
straightforward; they're based on the corresponding maximum field.
|
||||
Percentage highlight rules are also allowed for ``{\it experience level\/}''
|
||||
and ``{\it experience points\/}'' (valid when the
|
||||
(\it showexp\/}
|
||||
{\it showexp\/}
|
||||
option is enabled).
|
||||
For those, the percentage is based on the progress from the start of
|
||||
the current experience level to the start of the next level.
|
||||
@@ -4804,8 +4850,7 @@ exactly 1 experience point short of the next level.
|
||||
% percentage will remain at 0\% no matter have many additional experience
|
||||
% points you earn.)
|
||||
%.lp "*"
|
||||
\item{\bb{}}
|
||||
absolute value sets the attribute when the field value
|
||||
\item[{\tt absolute}] value sets the attribute when the field value
|
||||
matches that number.
|
||||
The number must be 0 or higher, except for ``{\it armor-class\/} which
|
||||
allows negative values, and may optionally be preceded by `{\tt =}'.
|
||||
@@ -4814,8 +4859,7 @@ it also matches when value is below or above.
|
||||
If the prefix is `{\tt <}' or `{\tt >}', only match when strictly
|
||||
above or below.
|
||||
%.lp "*"
|
||||
\item{\bb{}}
|
||||
text match sets the attribute when the field value matches the text.
|
||||
\item[{\tt text}] match sets the attribute when the field value matches the text.
|
||||
Text matches can only be used for ``{\it alignment\/}'',
|
||||
``{\it carrying-capacity\/}'', ``{\it hunger\/}'', ``{\it dungeon-level\/}'',
|
||||
and ``{\it title\/}''.
|
||||
@@ -4825,7 +4869,7 @@ is tested; the character's name is ignored.
|
||||
\elist
|
||||
|
||||
The in-game options menu can help you determine the correct syntax for a
|
||||
config file.
|
||||
configuration file.
|
||||
|
||||
The whole feature can be disable by setting option {\it statushilites} to 0.
|
||||
|
||||
@@ -4866,11 +4910,14 @@ Set the name of the symbol set that you want to load for display
|
||||
on the rogue level.
|
||||
\elist
|
||||
|
||||
You can also override one or more symbols using the {\it SYMBOLS\/} config
|
||||
file option. Symbols are specified as {\it name:value\/} pairs. Note that
|
||||
{\it NetHack\/} escape-processes the {\it value\/} string in conventional C
|
||||
fashion. This means that `\verb+\+' is a prefix to take the following
|
||||
character literally. Thus `\verb+\+' needs to be represented as `\verb+\\+'.
|
||||
You can also override one or more symbols using the {\it SYMBOLS\/} and
|
||||
{\it ROGUESYMBOLS\/} configuration file options.
|
||||
Symbols are specified as {\it name:value\/} pairs.
|
||||
Note that {\it NetHack\/} escape-processes
|
||||
the {\it value\/} string in conventional C fashion.
|
||||
This means that `\verb+\+' is a prefix to take the following character
|
||||
literally.
|
||||
Thus `\verb+\+' needs to be represented as `\verb+\\+'.
|
||||
The special prefix
|
||||
`\verb+\m+' switches on the meta bit in the symbol value, and the
|
||||
`{\tt \^{}}' prefix causes the following character to be treated as a control
|
||||
@@ -5008,7 +5055,8 @@ Default & Symbol Name & Description\\
|
||||
\verb+@+ & S\verb+_+ss3 & (magic shield 3 of 4)\\
|
||||
\verb@*@ & S\verb+_+ss4 & (magic shield 4 of 4)\\
|
||||
\verb@^@ & S\verb+_+statue\verb+_+trap & (statue trap)\\
|
||||
\verb@ @ & S\verb+_+stone & (dark part of a room)\\
|
||||
\verb@ @ & S\verb+_+stone & (solid rock or unexplored terrain\\
|
||||
& & \,or dark part of a room)\\
|
||||
\verb@]@ & S\verb+_+strange\verb+_+obj & (strange object)\\
|
||||
\verb@-@ & S\verb+_+sw\verb+_+bc & (swallow bottom center)\\
|
||||
\verb@\@ & S\verb+_+sw\verb+_+bl & (swallow bottom left)\\
|
||||
@@ -5023,7 +5071,7 @@ Default & Symbol Name & Description\\
|
||||
\verb@\@ & S\verb+_+throne & (opulent throne)\\
|
||||
\verb@-@ & S\verb+_+tlcorn & (top left corner)\\
|
||||
\verb@|@ & S\verb+_+tlwall & (wall)\\
|
||||
\verb@(@ & S\verb+_+tool & (useful item (pick-axe\, key\, lamp...))\\
|
||||
\verb@(@ & S\verb+_+tool & (useful item (pick-axe, key, lamp...))\\
|
||||
\verb@^@ & S\verb+_+trap\verb+_+door & (trap door)\\
|
||||
\verb@t@ & S\verb+_+trapper & (trapper or lurker above)\\
|
||||
\verb@-@ & S\verb+_+trcorn & (top right corner)\\
|
||||
@@ -5052,14 +5100,33 @@ Default & Symbol Name & Description\\
|
||||
\verb@w@ & S\verb+_+worm & (worm)\\
|
||||
\verb@~@ & S\verb+_+worm\verb+_+tail & (long worm tail)\\
|
||||
\verb@W@ & S\verb+_+wraith & (wraith)\\
|
||||
\verb@x@ & S\verb+_+xan & (xan or other mythical/fantastic insect)\\
|
||||
\verb@x@ & S\verb+_+xan & (xan or other extraordinary insect)\\
|
||||
\verb@X@ & S\verb+_+xorn & (xorn)\\
|
||||
\verb@Y@ & S\verb+_+yeti & (apelike creature)\\
|
||||
\verb@Z@ & S\verb+_+zombie & (zombie)\\
|
||||
\verb@z@ & S\verb+_+zruty & (zruty)
|
||||
\verb@z@ & S\verb+_+zruty & (zruty)\\
|
||||
\verb@ @ & S\verb+_+pet\verb+_+override & (any pet if ACCESSIBILITY=1 is set)\\
|
||||
\verb@ @ & S\verb+_+hero\verb+_+override & (hero if ACCESSIBILITY=1 is set)
|
||||
\end{longtable}%
|
||||
}
|
||||
|
||||
\hyphenation{sysconf} %no syllable breaks => don't hyphenate file name
|
||||
%.lp
|
||||
Notes:
|
||||
|
||||
%.lp "*"
|
||||
Several symbols in this table appear to be blank.
|
||||
They are the space character, except for S\verb+_+pet\verb+_+override
|
||||
and S\verb+_+hero\verb+_+override which don't have any default value
|
||||
and can only be used if enabled in the ``sysconf'' file.
|
||||
|
||||
%.lp "*"
|
||||
S\verb+_+rock is misleadingly named; rocks and stones use S\verb+_+gem.
|
||||
Statues and boulders are the rock being referred to, but since
|
||||
version 3.6.0, statues are displayed as the monster they depict.
|
||||
So S\verb+_+rock is only used for boulders and not used at all if
|
||||
overridden by the more specific S\verb+_+boulder.
|
||||
|
||||
%.pg
|
||||
%.hn 2
|
||||
\subsection*{Configuring {\it NetHack\/} for Play by the Blind}
|
||||
@@ -5101,8 +5168,15 @@ is a symset called {\it NHAccess\/}. Selecting that symset in your
|
||||
configuration file will cause the game to run in a manner accessible
|
||||
to the blind. After you have gained some experience with the game
|
||||
and with editing files, you may want to alter settings via {\it SYMBOLS=\/}
|
||||
and {\it ROGUESYMBOLS=\/}
|
||||
in your configuration file to better suit your preferences.
|
||||
The most crucial settings to make the game accessible are:
|
||||
See the previous section for the special symbols S\verb+_+pet\verb+_+override
|
||||
to force a consistent symbol for all pets and S\verb+_+hero\verb+_+override
|
||||
to force a unique symbol for the player character if {\it accessibility\/}
|
||||
is enabled in the {\it sysconf\/} file.
|
||||
|
||||
%.pg
|
||||
The most crucial settings to make the game more accessible are:
|
||||
%.pg
|
||||
\blist{}
|
||||
%.lp
|
||||
@@ -5235,6 +5309,16 @@ Minimum number of points to get an entry in the score file.
|
||||
0 or 1 to use user names or numeric userids, respectively, to identify
|
||||
unique people for the score file
|
||||
%.lp
|
||||
\item[\ib{ACCESSIBILITY}]
|
||||
0 or 1 to disable or enable, respectively, the ability for players
|
||||
to set S\verb+_+pet\verb+_+override and S\verb+_+hero\verb+_+override
|
||||
symbols in their configuration file.
|
||||
%.lp
|
||||
\item[\ib{PORTABLE\verb+_+DEVICE\verb+_+PATHS}]
|
||||
0 or 1 Windows OS only, the game will look for all of its external
|
||||
files, and write to all of its output files in one place
|
||||
rather than at the standard locations.
|
||||
%.lp
|
||||
\item[\ib{DUMPLOGFILE}]
|
||||
A filename where the end-of-game dumplog is saved.
|
||||
Not defining this will prevent dumplog from being created. Only available
|
||||
@@ -5242,7 +5326,7 @@ if your game is compiled with DUMPLOG. Allows the following placeholders:
|
||||
%.sd
|
||||
%.si
|
||||
{\tt \%\%} --- literal `{\tt \%}'\\
|
||||
{\tt \%v} --- version (eg. ``{\tt 3.6.2-0}'')\\
|
||||
{\tt \%v} --- version (eg. ``{\tt 3.6.3-0}'')\\
|
||||
{\tt \%u} --- game UID\\
|
||||
{\tt \%t} --- game start time, UNIX timestamp format\\
|
||||
{\tt \%T} --- current time, UNIX timestamp format\\
|
||||
@@ -5434,7 +5518,7 @@ with help from {\it Ross Brown}, {\it Mike Engber}, {\it David Hairston},
|
||||
{\it Michael Hamel}, {\it Jonathan Handler}, {\it Johnny Lee},
|
||||
{\it Tim Lennan}, {\it Rob Menke}, and {\it Andy Swanson},
|
||||
developed {\it NetHack\/} 3.1 for the Macintosh, porting it for MPW.
|
||||
Building on their development, {\it Barton House} added a Think C port.
|
||||
Building on their development, {\it Bart House} added a Think C port.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
@@ -5647,7 +5731,7 @@ maintained the port of {\it NetHack\/} 3.6 for Mac OSX.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
{\it Michael Allison}, {\it David Cohrs}, {\it Barton House},
|
||||
{\it Michael Allison}, {\it David Cohrs}, {\it Bart House},
|
||||
{\it Pasi Kallinen}, {\it Alex Kompel}, {\it Dion Nicolaas},
|
||||
{\it Derek S. Ray} and {\it Yitzhak Sapir}
|
||||
maintained the port of {\it NetHack\/} 3.6 for Microsoft Windows.
|
||||
@@ -5678,15 +5762,30 @@ time of release of 3.6.1 consisted of
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
In early May 2019, another 320 bug fixes along with some enhancements and
|
||||
In early May 2019, another 320 bug fixes along with some enhancements and
|
||||
the adopted curses window port, were released as 3.6.2.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
{\it Bart House}, who had contributed to the game as a porting team participant
|
||||
for decades, joined the {\it NetHack Development Team} in late May 2019.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
NetHack 3.6.3 was released on December 5, 2019 containing over 190 bug
|
||||
fixes to NetHack 3.6.2.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
NetHack 3.6.4 was released on December 18, 2019 containing a security fix and
|
||||
a few bug fixes.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
\nd The official {\it NetHack\/} web site is maintained by {\it Ken Lorber} at
|
||||
{\catcode`\#=11
|
||||
\special{html:<a href="http://www.nethack.org/">}}
|
||||
http:{\tt /}{\tt /}www.nethack.org{\tt /}.
|
||||
\special{html:<a href="https://www.nethack.org/">}}
|
||||
https:{\tt /}{\tt /}www.nethack.org{\tt /}.
|
||||
{\catcode`\#=11
|
||||
\special{html:</a>}}
|
||||
|
||||
@@ -5699,7 +5798,7 @@ again to {\it M. Drew Streib} and {\it Pasi Kallinen} for providing a
|
||||
public NetHack server at nethack.alt.org. Thanks to {\it Keith Simpson}
|
||||
and {\it Andy Thomson} for hardfought.org. Thanks to all those
|
||||
unnamed dungeoneers who invest their time and effort into annual
|
||||
{\it NetHack\/} tournaments such as {\it Junethack},
|
||||
{\it NetHack\/} tournaments such as {\it Junethack},
|
||||
{\it The November NetHack Tournament} and in days past,
|
||||
{\it devnull.net\/} (gone for now, but not forgotten).
|
||||
\clearpage
|
||||
@@ -5708,54 +5807,55 @@ unnamed dungeoneers who invest their time and effort into annual
|
||||
\section*{Dungeoneers}
|
||||
%.pg
|
||||
\nd From time to time, some depraved individual out there in netland sends a
|
||||
particularly intriguing modification to help out with the game. The
|
||||
particularly intriguing modification to help out with the game. The
|
||||
{\it NetHack Development Team} sometimes makes note of the names of the worst
|
||||
of these miscreants in this, the list of Dungeoneers:
|
||||
%.sd
|
||||
\begin{center}
|
||||
\begin{tabular}{llll}
|
||||
%TABLE_START
|
||||
Adam Aronow & Janet Walz & Nathan Eady\\
|
||||
Alex Kompel & Janne Salmij\"{a}rvi & Norm Meluch\\
|
||||
Alex Smith & Jean-Christophe Collet & Olaf Seibert\\
|
||||
Andreas Dorn & Jeff Bailey & Pasi Kallinen\\
|
||||
Andy Church & Jochen Erwied & Pat Rankin\\
|
||||
Andy Swanson & John Kallen & Patric Mueller\\
|
||||
Adam Aronow & J. Ali Harlow & Mikko Juola\\
|
||||
Alex Kompel & Janet Walz & Nathan Eady\\
|
||||
Alex Smith & Janne Salmij\"{a}rvi & Norm Meluch\\
|
||||
Andreas Dorn & Jean-Christophe Collet & Olaf Seibert\\
|
||||
Andy Church & Jeff Bailey & Pasi Kallinen\\
|
||||
Andy Swanson & Jochen Erwied & Pat Rankin\\
|
||||
Andy Thomson & John Kallen & Patric Mueller\\
|
||||
Ari Huttunen & John Rupley & Paul Winner\\
|
||||
Barton House & John S. Bien & Pierre Martineau\\
|
||||
Bart House & John S. Bien & Pierre Martineau\\
|
||||
Benson I. Margulies & Johnny Lee & Ralf Brown\\
|
||||
Bill Dyer & Jon W\{tte & Ray Chason\\
|
||||
Boudewijn Waijers & Jonathan Handler & Richard Addison\\
|
||||
Bruce Cox & Joshua Delahunty & Richard Beigel\\
|
||||
Bruce Holloway & Karl Garrison & Richard P. Hughey\\
|
||||
Bruce Mewborne & Keizo Yamamoto & Rob Menke\\
|
||||
Carl Schelin & Ken Arnold & Robin Bandy\\
|
||||
Chris Russo & Ken Arromdee & Robin Johnson\\
|
||||
David Cohrs & Ken Lorber & Roderick Schertler\\
|
||||
David Damerell & Ken Washikita & Roland McGrath\\
|
||||
David Gentzel & Kevin Darcy & Ron Van Iwaarden\\
|
||||
David Hairston & Kevin Hugo & Ronnen Miller\\
|
||||
Dean Luick & Kevin Sitze & Ross Brown\\
|
||||
Del Lamb & Kevin Smolkowski & Sascha Wostmann\\
|
||||
Derek S. Ray & Kevin Sweet & Scott Bigham\\
|
||||
Deron Meranda & Lars Huttar & Scott R. Turner\\
|
||||
Dion Nicolaas & Leon Arnott & Sean Hunt\\
|
||||
Dylan O'Donnell & M. Drew Streib & Stephen Spackman\\
|
||||
Eric Backus & Malcolm Ryan & Stefan Thielscher\\
|
||||
Eric Hendrickson & Mark Gooderum & Stephen White\\
|
||||
Eric R. Smith & Mark Modrall & Steve Creps\\
|
||||
Eric S. Raymond & Marvin Bressler & Steve Linhart\\
|
||||
Erik Andersen & Matthew Day & Steve VanDevender\\
|
||||
Frederick Roeber & Merlyn LeRoy & Teemu Suikki\\
|
||||
Gil Neiger & Michael Allison & Tim Lennan\\
|
||||
Greg Laskin & Michael Feir & Timo Hakulinen\\
|
||||
Greg Olson & Michael Hamel & Tom Almy\\
|
||||
Gregg Wonderly & Michael Sokolov & Tom West\\
|
||||
Hao-yang Wang & Mike Engber & Warren Cheung\\
|
||||
Helge Hafting & Mike Gallop & Warwick Allison\\
|
||||
Irina Rempt-Drijfhout & Mike Passaretti & Yitzhak Sapir\\
|
||||
Izchak Miller & Mike Stephenson\\
|
||||
J. Ali Harlow & Mikko Juola
|
||||
Carl Schelin & Keith Simpson & Robin Bandy\\
|
||||
Chris Russo & Ken Arnold & Robin Johnson\\
|
||||
David Cohrs & Ken Arromdee & Roderick Schertler\\
|
||||
David Damerell & Ken Lorber & Roland McGrath\\
|
||||
David Gentzel & Ken Washikita & Ron Van Iwaarden\\
|
||||
David Hairston & Kevin Darcy & Ronnen Miller\\
|
||||
Dean Luick & Kevin Hugo & Ross Brown\\
|
||||
Del Lamb & Kevin Sitze & Sascha Wostmann\\
|
||||
Derek S. Ray & Kevin Smolkowski & Scott Bigham\\
|
||||
Deron Meranda & Kevin Sweet & Scott R. Turner\\
|
||||
Dion Nicolaas & Lars Huttar & Sean Hunt\\
|
||||
Dylan O'Donnell & Leon Arnott & Stephen Spackman\\
|
||||
Eric Backus & M. Drew Streib & Stefan Thielscher\\
|
||||
Eric Hendrickson & Malcolm Ryan & Stephen White\\
|
||||
Eric R. Smith & Mark Gooderum & Steve Creps\\
|
||||
Eric S. Raymond & Mark Modrall & Steve Linhart\\
|
||||
Erik Andersen & Marvin Bressler & Steve VanDevender\\
|
||||
Fredrik Ljungdahl & Matthew Day & Teemu Suikki\\
|
||||
Frederick Roeber & Merlyn LeRoy & Tim Lennan\\
|
||||
Gil Neiger & Michael Allison & Timo Hakulinen\\
|
||||
Greg Laskin & Michael Feir & Tom Almy\\
|
||||
Greg Olson & Michael Hamel & Tom West\\
|
||||
Gregg Wonderly & Michael Sokolov & Warren Cheung\\
|
||||
Hao-yang Wang & Mike Engber & Warwick Allison\\
|
||||
Helge Hafting & Mike Gallop & Yitzhak Sapir\\
|
||||
Irina Rempt-Drijfhout & Mike Passaretti\\
|
||||
Izchak Miller & Mike Stephenson
|
||||
%TABLE_END Do not delete this line.
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -5776,7 +5876,3 @@ J. Ali Harlow & Mikko Juola
|
||||
%\end{flushleft}
|
||||
|
||||
\end{document}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4660
doc/Guidebook.txt
4660
doc/Guidebook.txt
File diff suppressed because it is too large
Load Diff
@@ -347,7 +347,8 @@
|
||||
# How the map window is shown? Windows GUI only.
|
||||
# possible map_mode options include: tiles, ascii4x6,
|
||||
# ascii6x8, ascii8x8, ascii16x8, ascii7x12, ascii8x12, ascii16x12,
|
||||
# ascii12x16, ascii10x18, fit_to_screen
|
||||
# ascii12x16, ascii10x18, fit_to_screen, ascii_fit_to_screen,
|
||||
# tiles_fit_to_screen
|
||||
#OPTIONS=map_mode:tiles
|
||||
|
||||
# Define alternative file for the files, and the tile size
|
||||
|
||||
419
doc/dgn_comp.6
419
doc/dgn_comp.6
@@ -1,419 +0,0 @@
|
||||
.TH DGN_COMP 6 "25 May 2015" NETHACK
|
||||
.de ND
|
||||
.ds Nd \\$3
|
||||
..
|
||||
.de NB
|
||||
.ds Nb \\$2
|
||||
..
|
||||
.de NR
|
||||
.ds Nr \\$2
|
||||
..
|
||||
.ND $NHDT-Date: 1524689548 2018/04/25 20:52:28 $
|
||||
.NB $NHDT-Branch: NetHack-3.6.0 $
|
||||
.NR $NHDT-Revision: 1.6 $
|
||||
.ds Na Kenneth Lorber
|
||||
|
||||
.SH NAME
|
||||
dgn_comp \- NetHack dungeon compiler
|
||||
.SH SYNOPSIS
|
||||
.B dgn_comp
|
||||
[
|
||||
.I file
|
||||
]
|
||||
.PP
|
||||
If no arguments are given, it reads standard input.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
.I 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.
|
||||
.PP
|
||||
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.
|
||||
.SH GRAMMAR
|
||||
.PP
|
||||
DUNGEON:
|
||||
.B name
|
||||
.B bonesmarker
|
||||
(
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) [
|
||||
.B %age
|
||||
]
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the dungeon name,
|
||||
.B bonesmarker
|
||||
is a letter for marking bones files, (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) is the number of levels, and
|
||||
.B %age
|
||||
is its percentage chance of being generated (if absent, 100% chance).
|
||||
|
||||
DESCRIPTION:
|
||||
.B tag
|
||||
.PP
|
||||
where
|
||||
.B tag
|
||||
is currently one of
|
||||
.BR HELLISH ,
|
||||
.BR MAZELIKE ,
|
||||
or
|
||||
.BR ROGUELIKE .
|
||||
|
||||
ALIGNMENT | LEVALIGN: [
|
||||
.B lawful
|
||||
|
|
||||
.B neutral
|
||||
|
|
||||
.B chaotic
|
||||
|
|
||||
.B unaligned
|
||||
]
|
||||
.PP
|
||||
gives the alignment of the dungeon/level (default is unaligned).
|
||||
|
||||
ENTRY:
|
||||
.B level
|
||||
.PP
|
||||
the dungeon entry point. The dungeon connection attaches at this
|
||||
level of the given dungeon.
|
||||
If the value of
|
||||
.B 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:
|
||||
.B name
|
||||
.PP
|
||||
the prototypical name for dungeon level files in this dungeon.
|
||||
For example, the PROTOFILE name for the dungeon
|
||||
.I Vlad's Tower
|
||||
is
|
||||
.IR tower .
|
||||
|
||||
LEVEL:
|
||||
.B name
|
||||
.B bonesmarker
|
||||
@ (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) [
|
||||
.B %age
|
||||
]
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the level name,
|
||||
.B bonesmarker
|
||||
is a letter for marking bones files, (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) is the location and
|
||||
.B %age
|
||||
is the generation percentage, as above.
|
||||
|
||||
RNDLEVEL:
|
||||
.B name
|
||||
.B bonesmarker
|
||||
@ (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
)
|
||||
[
|
||||
.B %age
|
||||
]
|
||||
.B rndlevs
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the level name,
|
||||
.B bonesmarker
|
||||
is a letter for marking bones files, (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) is the location,
|
||||
.B %age
|
||||
is the generation percentage, as above, and
|
||||
.B rndlevs
|
||||
is the number of similar levels available to choose from.
|
||||
|
||||
CHAINLEVEL:
|
||||
.B name
|
||||
.B bonesmarker
|
||||
.B prev_name
|
||||
+ (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) [
|
||||
.B %age
|
||||
]
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the level name,
|
||||
.B bonesmarker
|
||||
is a letter for marking bones files,
|
||||
.B prev_name
|
||||
is the name of a level defined previously, (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) is the
|
||||
.I offset
|
||||
from the level being chained from, and
|
||||
.B %age
|
||||
is the generation percentage.
|
||||
|
||||
RNDCHAINLEVEL:
|
||||
.B name
|
||||
.B bonesmarker
|
||||
.B prev_name
|
||||
+ (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) [
|
||||
.B %age
|
||||
]
|
||||
.B rndlevs
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the level name,
|
||||
.B bonesmarker
|
||||
is a letter for marking bones files,
|
||||
.B prev_name
|
||||
is the name of a level defined previously, (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) is the
|
||||
.I offset
|
||||
from the level being chained from,
|
||||
.B %age
|
||||
is the generation percentage, and
|
||||
.B rndlevs
|
||||
is the number of similar levels available to choose from.
|
||||
|
||||
LEVELDESC:
|
||||
.B type
|
||||
.PP
|
||||
where
|
||||
.B type
|
||||
is the level type, (see DESCRIPTION, above). The
|
||||
.B type
|
||||
is used to override any pre-set value used to describe the entire dungeon,
|
||||
for this level only.
|
||||
|
||||
BRANCH:
|
||||
.B name
|
||||
@ (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) [
|
||||
.B stair
|
||||
|
|
||||
.B no_up
|
||||
|
|
||||
.B no_down
|
||||
|
|
||||
.B portal
|
||||
] [
|
||||
.B up
|
||||
|
|
||||
.B down
|
||||
]
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the name of the dungeon to branch to, and (
|
||||
.B base
|
||||
,
|
||||
.B 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
|
||||
.B no_up
|
||||
and
|
||||
.B no_down
|
||||
which specify which stair direction is missing.
|
||||
The default branch type is
|
||||
.BR stair .
|
||||
The direction for a stair can be either up or down; direction is not
|
||||
applicable to portals. The default direction is
|
||||
.BR down .
|
||||
|
||||
CHAINBRANCH:
|
||||
.B name
|
||||
.B prev_name
|
||||
+ (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) [
|
||||
.B stair
|
||||
|
|
||||
.B no_up
|
||||
|
|
||||
.B no_down
|
||||
|
|
||||
.B portal
|
||||
] [
|
||||
.B up
|
||||
|
|
||||
.B down
|
||||
]
|
||||
.PP
|
||||
where
|
||||
.B name
|
||||
is the name of the dungeon to branch to,
|
||||
.B prev_name
|
||||
is the name of a previously defined
|
||||
.B level
|
||||
and (
|
||||
.B base
|
||||
,
|
||||
.B rand
|
||||
) is the
|
||||
.I offset
|
||||
from the level being chained from.
|
||||
The optional branch type and direction are the same as described above.
|
||||
.SH GENERIC RULES
|
||||
.PP
|
||||
Each dungeon must have a unique
|
||||
.B bonesmarker ,
|
||||
and each special level must have a
|
||||
.B bonesmarker
|
||||
unique within its dungeon (letters may be reused in different dungeons).
|
||||
If the
|
||||
.B bonesmarker
|
||||
has the special value "none", no bones files will be created for that
|
||||
level or dungeon.
|
||||
.PP
|
||||
The value
|
||||
.B base
|
||||
may be in the range of 1 to
|
||||
.B MAXLEVEL
|
||||
(as defined in
|
||||
.I global.h
|
||||
).
|
||||
.PP
|
||||
The value
|
||||
.B rand
|
||||
may be in the range of -1 to
|
||||
.BR MAXLEVEL .
|
||||
.PP
|
||||
If
|
||||
.B 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).
|
||||
.PP
|
||||
If
|
||||
.B rand
|
||||
is 0 the level is located absolutely at
|
||||
.BR base .
|
||||
.PP
|
||||
Branches don't have a probability. Dungeons do. If a dungeon fails
|
||||
to be generated during load, all its levels and branches are skipped.
|
||||
.PP
|
||||
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 addition, no branch may be made from a dungeon with a percentage
|
||||
generation probability for the same reason.
|
||||
.PP
|
||||
As a general rule using the dungeon compiler:
|
||||
.PP
|
||||
If a dungeon has a
|
||||
.B protofile
|
||||
name associated with it
|
||||
.RI ( eg.
|
||||
.BR tower )
|
||||
that file will be used.
|
||||
.PP
|
||||
If a special level is present, it will override the above rule and
|
||||
the appropriate file will be loaded.
|
||||
.PP
|
||||
If neither of the above are present, the standard generator will
|
||||
take over and make a "normal" level.
|
||||
.PP
|
||||
A level alignment, if present, will override
|
||||
the alignment of the dungeon that it exists within.
|
||||
.SH EXAMPLE
|
||||
.PP
|
||||
Here is the current syntax of the dungeon compiler's "language":
|
||||
|
||||
.LP
|
||||
.nf
|
||||
.ta +8n +8n +8n
|
||||
#
|
||||
# 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"
|
||||
.fi
|
||||
.PP
|
||||
.I NOTES:
|
||||
.br
|
||||
Lines beginning with '#' are considered comments.
|
||||
.br
|
||||
A special level must be explicitly aligned. The alignment of the dungeon
|
||||
it is in only applies to non-special levels within that dungeon.
|
||||
.SH AUTHOR
|
||||
.PP
|
||||
M. Stephenson (from the level compiler by Jean-Christophe Collet).
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
lev_comp(6), nethack(6)
|
||||
.SH BUGS
|
||||
.PP
|
||||
Probably infinite.
|
||||
.SH COPYRIGHT
|
||||
This file is Copyright (C) \*(Na and was last modified \*(Nd (version
|
||||
\*(Nb:\*(Nr).
|
||||
NetHack may be freely redistributed. See license for details.
|
||||
330
doc/dgn_comp.txt
330
doc/dgn_comp.txt
@@ -1,330 +0,0 @@
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
206
doc/fixes36.3
206
doc/fixes36.3
@@ -1,4 +1,4 @@
|
||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.116 $ $NHDT-Date: 1569276988 2019/09/23 22:16:28 $
|
||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.197 $ $NHDT-Date: 1575173931 2019/12/01 04:18:51 $
|
||||
|
||||
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
||||
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
||||
@@ -115,7 +115,11 @@ for multi-shot shooting by monsters, a typo checked hero's weapon for
|
||||
when a boulder was teleported, if it landed in a pit or trap door or hole its
|
||||
former location wasn't updated to show that it wasn't there anymore
|
||||
(noticed in Sokoban but not limited to there)
|
||||
Terry Pratchett tribute, fix typo in passage #4 for Mort ("the" -> "they")
|
||||
Terry Pratchett tribute, fix typo in passage #4 for Mort ("the" -> "they");
|
||||
also passage #7 for Soul Music ("genious" -> "genius");
|
||||
and passage #11 for The Light Fantastic ("to" -> "do");
|
||||
passage #3 for Eric ("short" -> "sort");
|
||||
passage #10 for Witches Abroad ("was" -> "what")
|
||||
fix typo in end_of_input() present since 3.6.0 that would prevent compilation
|
||||
for NOSAVEONHANGUP+INSURANCE configuration
|
||||
when a status condition becomes fatal, keep it listed as an active condition
|
||||
@@ -152,11 +156,91 @@ zapping self with wand of opening or spell of knock to escape from a pit trap
|
||||
wielded aklys that returned to hero when thrown while inside an engulfer left
|
||||
a stale 'thrownobj' pointer that triggered "add_to_minv: obj not free"
|
||||
panic if same weapon killed any engulfer via melee from inside
|
||||
uarmh null pointer dereference if a helm of opposite alignment came off due
|
||||
uarmh null pointer dereference if a helm of opposite alignment came off due
|
||||
to being polymorphed
|
||||
verb tense was inappropriate in some messages when a mon/pet had a name
|
||||
verb tense was inappropriate in some messages when a mon/pet had a name
|
||||
ending in 's'
|
||||
orctown booty items should have been initialized in mksobj()
|
||||
query_category() and whatdoes_help() had early returns which could each leave
|
||||
a temporary window around, which in turn might eventually lead to a
|
||||
panic due to lack of window slots [probably moot for unmodified 3.6.x;
|
||||
the query one couldn't happen unless there is a coding error for
|
||||
object classes somewhere and the help one couldn't happen unless the
|
||||
installed data files left 'keyhelp' missing]
|
||||
ball and chain could end up too far from punished hero (triggering b&c warning
|
||||
for wizard mode with sanity checking active) when crawling out of
|
||||
water failed because dropping stuff left hero overly encumbered and
|
||||
hero was life saved--or player declined to die--if the hero got
|
||||
teleported one step further from ball and chain's current location
|
||||
avoid 'object lost' panic when polymorph causes loss of levitation boots or
|
||||
water walking boots which dumps hero into water where emergency
|
||||
disrobing/dropping in order to crawl out chooses to drop those boots
|
||||
'sortloot's attempt to group musical instruments separately from other tools
|
||||
didn't work as intended due to missing 'break' in sortloot_classify()
|
||||
<shift><letter> running told player about engravings as they were being moved
|
||||
over but buffered output didn't show it until hero stopped, so it
|
||||
wasn't possible to tell where they were, unlike all other forms of
|
||||
multiple movement; so stop running if/when an engraving is reached
|
||||
fix exploding land mine moving ball or chain and causing a sanity error
|
||||
fix firing attached iron ball when swallowed causing a sanity error
|
||||
fix vault guard impossible when he could not relocate in certain situation
|
||||
fix temple priests or shopkeepers moving over other monsters
|
||||
fix hero still hiding under a statue shattered by a land mine
|
||||
fix helping a monster out of a pit addressing a deleted trap
|
||||
fix launched rolling boulder code accessing deleted trap
|
||||
fix monster stepping on a land mine code accessing deleted trap
|
||||
revise 'O' to show symbol sets in the same order they appear in the symbols
|
||||
file and order the sets in dat/symbols to yield a sensible symset menu
|
||||
yellow dragons had green breath
|
||||
partly eaten food in a bones level shop would show a non-zero sale price
|
||||
while on the floor but not be placed on shop bill if picked up;
|
||||
sale price should have been "no charge"
|
||||
when non-empty container is dropped in shop and hero is asked whether to sell,
|
||||
counting the subset of contents owned by hero vs those owned by shk
|
||||
could obtain wrong answer because the container had been placed on
|
||||
the floor but the 'unpaid' and 'no_charge' flags of its contents
|
||||
hadn't been updated yet, they were still set for when it was carried
|
||||
in a shop which doesn't care about tools: You drop a <box> containing 1 item.
|
||||
<Shk> offers you <gold> for your items in your <box>. Sell them?
|
||||
[plural 'items' and 'them' were including the box along with the one
|
||||
item in it even though shk was only offering to buy its contents]
|
||||
grammar correction for "That walking shoes is really a small mimic" when
|
||||
applying a stethoscope
|
||||
mimic immitating a slime mold would change fruit type when player assigned new
|
||||
named fruit
|
||||
parsing for the argument to 'scores' option was sloppy; "3a/o" (slash) and
|
||||
"3a 1o" (space and digit one, not lowercase L) both worked but "3a o"
|
||||
(just space) was supposed to but didn't
|
||||
wizmakemap could leave genocided monsters on map
|
||||
when entering Astral level, initial rendering of guardian angel didn't show
|
||||
it as tame; noticeable if the level was entered with 'hilite_pet' On
|
||||
fix a leashed pet polymorphed into a long worm staying leashed
|
||||
prevent leashing unsolid monsters and monsters with no extremities
|
||||
playing musical instruments gave feedback which ignored deafness
|
||||
some other deafness-related message corrections
|
||||
when dipping into holy/unholy water while blind (where the glow message is
|
||||
suppressed), clear dipped item's bknown flag unless water potion's
|
||||
bless/curse state is known
|
||||
playing music while hallucinating: message misspelled "butterflies"
|
||||
putting on gloves while having slippery fingers transfered slipperiness to
|
||||
those gloves; taking off slippery gloves directly was disallowed but
|
||||
losing them in other ways transfered slipperiness to bare fingers
|
||||
when a monster reads a scroll of fire to cure sliming, don't access that
|
||||
scroll's memory after it has been used up (bcsign)
|
||||
monster vs monster attacks didn't handle shades or silver weapon feedback
|
||||
successful alchemy would show new potion's description (color) even when blind
|
||||
dipping some types of objects into oil would yield "<object> gleams with an
|
||||
oily sheen" even when blind
|
||||
dipping into an undiscovered potion would offer chance to give a name to the
|
||||
potion even when its description wasn't known (picked up while blind)
|
||||
dipping lichen corpse into acid when not blind and acid was undicovered would
|
||||
not offer a chance to give a name to the potion after lichen feedback
|
||||
pluralization improvement for words ending in a k-sound like "biotech"
|
||||
check for whether a monster was entering a region (gas cloud) erroneously
|
||||
depended upon whether or not the hero was inside the same region
|
||||
all Is_*_level tests during early startup would test as true until
|
||||
dungeon_topology was initialized in a new game or restored from
|
||||
a save file
|
||||
|
||||
|
||||
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||
@@ -164,7 +248,7 @@ Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||
elemental_clog() loop needed to guard against obliteration of the monster
|
||||
that was trying to be placed
|
||||
using ^G to create "hidden mimic" shouldn't have marked it as undetected since
|
||||
mimics 'hide' be appearing to be something else; honor "hidden" for
|
||||
mimics 'hide' by appearing to be something else; honor "hidden" for
|
||||
'hides_under' creatures if/when created at location with object(s),
|
||||
also for eels and other fish if/when created at water location
|
||||
for wizard mode 'wizweight' option, glob weight wasn't shown unless glob had
|
||||
@@ -177,6 +261,17 @@ monster throwing from stack of missiles (darts, daggers, spears) would cause
|
||||
crash if it wasn't wielding a weapon (bug in multi-shot shooting fix)
|
||||
surviving death while polymorphed would yield "You are a <foo>" without
|
||||
terminating period
|
||||
'mksobj failure' commit resulted in wrong corpse types for dying monsters
|
||||
a recent intended sanity check fix inadvertently bypassed placing a thrown
|
||||
chained ball back onto the floor
|
||||
in symset:curses, symbol S_tree was accidentally set to horizontal line where
|
||||
plus-or-minus sign was meant; also, change S_bars to not-equals sign
|
||||
percentage highlighting for Xp broke up/down/changed highlighting for it;
|
||||
it was flagged as having gone up every time the percentage changed
|
||||
deaf change to zap_over_floor needed to be restricted to player actions only
|
||||
monster vs shade attack inflicted damage despite "passes harmlessly through"
|
||||
fix for feedback from musical instruments played while deaf ignored whistles
|
||||
special map display symbol S_player_override renamed to S_hero_override
|
||||
curses: sometimes the message window would show a blank line after a prompt
|
||||
curses: the change to show map in columns 1..79 instead of 2..80 made the
|
||||
highlight for '@' show up in the wrong place if clipped map had been
|
||||
@@ -191,6 +286,50 @@ tty: revert the attempt to fix "message line anomaly: if autodecribe feedback
|
||||
prompts that spanned more than one line, a more significant issue
|
||||
|
||||
|
||||
Fixes post-beta1
|
||||
------------------------------------------------------------------
|
||||
fix several tribute typos
|
||||
pluralization correction for unlikely epoch and loch
|
||||
ensure that --showpaths displays the personal configuration file last
|
||||
don't strip leading slash from hallucinatory monster name "/b/tard"
|
||||
quaffing unknown potion of see invisible resulted in asking what to call the
|
||||
potion while updated monster display was buffered so not yet shown,
|
||||
hence potentially noticeable effect was concealed from player
|
||||
when Riders use their bargethrough capability, don't let them swap places with
|
||||
something located at a spot where corpses can't be created (their
|
||||
door opening ability was letting them exchange places with something
|
||||
co-located with a closed door without opening it; if killed there,
|
||||
there'd be no corpse so no auto-revive)
|
||||
putting on levitation boots while on sink would crash when attempting to set
|
||||
the enchantment known flag on Null 'uarmf' pointer
|
||||
look-at of mimics mimicking altars got an arbitary alignment from misuse of
|
||||
underlying terrain
|
||||
polymorph_sink creating an altar passed a call to rn2() as an argument to a
|
||||
macro which evaluates its parameter more than once
|
||||
if a monster (presumably sensed but not seen) was displayed at a location
|
||||
showing "remembered, unseen monster", remove that since hero now knows
|
||||
something else is there (3.6.1 had similar fix for warned-of monsters)
|
||||
clairvoyance showed all monsters in range, then after player viewed the map,
|
||||
replaced them with "remembered, unseen monster" glyph and finally
|
||||
did a normal monster refresh; the 'I' glyph step clobbers remembered
|
||||
object at same spot, so skip it for locations where monster refresh
|
||||
is going to immediately redisplay a monster
|
||||
take holes that you avoided into consideration when you're on the brink
|
||||
update window port spec to include a color-availability table that the window
|
||||
port can set; merge all has_color() implementations into one central
|
||||
function in src/windows.c which uses a few data checks only and
|
||||
elminates multiple string function calls for each map cell update
|
||||
that were being done in some cases previously
|
||||
taking off a fedora or dented pot (no-delay helmets) left the helmet stuck
|
||||
and took off hero's suit
|
||||
unix: fix double DLB definition in linux hints file
|
||||
windows: fix --showpaths output for the data file which relies on being
|
||||
constructed programmatically to incorporate the version suffix
|
||||
windows+tty: add code to make keypad support for swap_yz behave (currently
|
||||
commented out in include/ntconf.h)
|
||||
windows: fix self-recover user prompting (tty, curses, mswin)
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes or Features
|
||||
-----------------------------------------------------
|
||||
EDIT_GETLIN: wizard mode 'monpolycontrol' was using the getlin() answer buffer
|
||||
@@ -201,6 +340,9 @@ EDIT_GETLIN: when naming an object or a monster use the existing name, if
|
||||
EDIT_GETLIN: using 'O' to set message types or menu colors was overloading the
|
||||
answer buffer with other stuff, resulting in bogus default response
|
||||
during repeat prompting
|
||||
EDIT_GETLIN: for paranoid confirmation, if answer was neither "yes" nor "no",
|
||||
don't supply the rejected answer as the default when retrying
|
||||
USE_FCNTL: nethack wasn't closing lock file 'perm'
|
||||
curses: very tall menus tried to use selector characters a-z, A-Z, and 0-9,
|
||||
but 0-9 should be reserved for counts and if the display was tall
|
||||
enough for more than 62 entries, arbitrary ASCII punctuation got used
|
||||
@@ -215,10 +357,10 @@ curses: support EDIT_GETLIN (but like with tty, it's disabled by default) to
|
||||
(however, it's skipped if the 'popup_dialog' option is On)
|
||||
curses: when display windows get reconfigured (after setting align_status,
|
||||
align_message, statuslines, windowborders or due to external resize),
|
||||
the message window was being refreshed with the oldest available N
|
||||
messages rather than most recent N. [Still room for improvement;
|
||||
when feasible it combines short lines, resulting in N messages on
|
||||
fewer than N lines and leaving some of the available lines blank.]
|
||||
the message window was being refreshed with most recent message and
|
||||
the oldest available N-1 messages rather than next to most recent N-1.
|
||||
[Still room for improvement when short lines are combined or long
|
||||
ones are wrapped, where it still shows a subset of N original lines.]
|
||||
curses: plug memory leak when getting a line of input is cancelled by ESC
|
||||
curses: after requesting a line of input from player, next line of message
|
||||
window could end up being skipped
|
||||
@@ -229,10 +371,10 @@ curses: don't convert ^M (or <return> or <enter> key) into ^J; both ^J and ^M
|
||||
cause the hero to try to move
|
||||
curses: draw map in screen columns 1..79 like tty, rather than in 2..80
|
||||
curses: make text windows wider so that help feedback is more readable
|
||||
curses: using ':' for search string matching to toggle menu items in a multple
|
||||
page menu would highlight arbitrary items on the currently visible
|
||||
page in sync with the lines that matching items had on other pages
|
||||
curses: when map window was clipped, the 'scrollbars' shown to indicate which
|
||||
curses: using ':' for toggling menu items which match a search string, in a
|
||||
multi-page menu it would highlight arbitrary items on the currently
|
||||
visible page in sync with lines that matched items have on other pages
|
||||
curses: when map window was clipped, position bars shown to indicate which
|
||||
part of the map was in view didn't work as intended, always drawing
|
||||
"*--------------" for horizontal (and comparable '*' with multiple '|'
|
||||
underneath for vertical) when it meant to show "---******------" if
|
||||
@@ -246,7 +388,14 @@ curses: disable the attempt to support Ctrl+Left_click as an alternate way
|
||||
the mouse data passed to nethack didn't match the curses (ncurses on
|
||||
OSX 10.11) documentation and things didn't work as intended
|
||||
curses: menu coloring required that both 'menucolors' and 'guicolor' be On;
|
||||
for menus, override guicolor with more-specific menucolors
|
||||
for menus, ignore 'guicolor' and honor more-specific 'menucolors'
|
||||
curses: support symset:curses and symset:DECgraphics for map display
|
||||
curses: enable the 'use_inverse' boolean option (via wincap WC_INVERSE flag)
|
||||
for extended monster detection and black&white lava; forced to True
|
||||
to override default of False (for tty's benefit)
|
||||
curses: force 'O' command's menus for 'symset' and 'roguesymset' options to
|
||||
be wider so that fewer entries with set descriptions will wrap
|
||||
curses: stop restricting menu width to half the display width
|
||||
curses+'perm_invent': entries were wrapping without any control; usually not
|
||||
noticeable because next entry overwrote, but visible for final entry
|
||||
when whole inventory fit within the available height; looked ok with
|
||||
@@ -270,6 +419,13 @@ curses+EDIT_GETLIN: the preceding fix handled an answer which spanned more
|
||||
than one line but didn't remove the answer properly if the prompt
|
||||
portion of prompt+answer spanned more than one line
|
||||
msdos: code fixes to allow a build with curses and PDCurses
|
||||
msdos: added Makefile1.cross (host portion) and Makefile2.cross (target
|
||||
platform portion) to assist in moving this port toward a cross-compiled
|
||||
build hosted on linux/OSX/Windows with recent C dialect support; that
|
||||
will also pave the way for CI automation and testing of the msdos port
|
||||
build in future should the port remain on the radar; currently only
|
||||
useful for testing the msdos port compile as it cannot yet build a
|
||||
complete game
|
||||
tty: re-do one optimization used when status conditions have all been removed
|
||||
and remove another that tried to check whether condition text to be
|
||||
displayed next was the same as the existing value; sometimes new
|
||||
@@ -279,7 +435,15 @@ tty: take two, if/when autodecribe feedback wraps past top line, clear
|
||||
['exposed by git' section has an entry for reversal of 'take one']
|
||||
tty: video attributes (bold, inverse, &c) for status highlighting sometimes
|
||||
were scrambled
|
||||
unix: sysconf CHECK_PLNAME=1 wouldn't work if attempt to obtain unix username
|
||||
failed even though it didn't need that to check player character name
|
||||
unix+curses: startup error only reset terminal for tty; one noticeable
|
||||
example was answering 'n' to "Destroy old game?"
|
||||
vms: update install.com to include overlooked file bigrm-10.lev in nh-data.dlb
|
||||
Windows: some startup error messages were not being delivered successfully
|
||||
WindowsGUI: player selection dialog box layout was not being adjusted for DPI
|
||||
Windows: significant changes to default directory choices; see documentation
|
||||
for details
|
||||
|
||||
|
||||
General New Features
|
||||
@@ -303,23 +467,37 @@ status highlighting using percentage rules now supported for experience level
|
||||
the start of the current Xp level to the start of the next Xp level;
|
||||
100% isn't possible so used as special case for next_Xp_lvl - 1 Exp_pt
|
||||
wizard-mode: display effect to show where an unseen wished-for monster landed
|
||||
for 'O's symset and roguesymset menus, mark current symbol set as preselected
|
||||
curses: enable latent mouse support
|
||||
curses: give menus and text windows a minimum size of 5x25 since tiny ones can
|
||||
sometimes be overlooked when shown over old messages rather than map
|
||||
curses+'perm_invent': since persistent inventory is narrow, strip off "a",
|
||||
"an", or "the" prefix on inventory entries shown there so that a tiny
|
||||
bit more of the interesting portion is visible
|
||||
curses+'curses': change the curses map display to use new symbol set 'curses'
|
||||
instead of hard-coded values; it attempts to show IBMgraphics-style
|
||||
map using DECgraphics characters; DECgraphics can also be used as-is
|
||||
fulfill a request from a blind player to have a unique overriding SYMBOL for
|
||||
pets and for the player
|
||||
ROGUESYMBOLS can be overridden in config files like SYMBOLS can
|
||||
in symset:DECgraphics, set S_altar to 'pi' (was default '_'), S_bars to
|
||||
not-equals sign (was 'pi')
|
||||
|
||||
|
||||
NetHack Community Patches (or Variation) Included
|
||||
-------------------------------------------------
|
||||
add a couple of engraving suggestions in pull request #79
|
||||
chasonr's faster method to write characters to msdos VGA in pull request #220
|
||||
chasonr's msdos Makefile.gcc pdcurses build changes in pull request #243
|
||||
autopickup exception priority change in pull request #226
|
||||
FIQ's curses (PDCurses) number pad changes in pull request #247
|
||||
|
||||
|
||||
Code Cleanup and Reorganization
|
||||
-------------------------------
|
||||
began to add some function caller BREADCRUMBS to aid debugging
|
||||
flag existing occurrences of "You hear" as "Deaf-aware" to aid in
|
||||
future maintenance
|
||||
|
||||
|
||||
|
||||
|
||||
38
doc/fixes36.4
Normal file
38
doc/fixes36.4
Normal file
@@ -0,0 +1,38 @@
|
||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.12 $ $NHDT-Date: 1576638499 2019/12/18 03:08:19 $
|
||||
|
||||
fixes36.4 contains a terse summary of changes made to 3.6.3 in order to
|
||||
produce 3.6.4.
|
||||
|
||||
|
||||
General Fixes and Modified Features
|
||||
-----------------------------------
|
||||
GDBPATH and GREPPATH from sysconf or -D... on compilation command line were
|
||||
being processed even if PANICTRACE was disabled but only being freed
|
||||
at end of game when that was enabled
|
||||
fix the article used in the message when your steed encounters a polymorph trap
|
||||
allow teleporting onto the vibrating square
|
||||
message "your knapsack can't accomodate any more items" when picking stuff up
|
||||
or removing such from container was inaccurate if there was some gold
|
||||
pending; vary the message rather than add more convoluted pickup code
|
||||
dozen-ish assorted spelling/typo fixes in messages and source comments
|
||||
fix potential buffer overflow when parsing run-time configuration file
|
||||
wizard mode wishing for terrain would leave it unmapped if done while blind
|
||||
wizard mode terrain wish could leave hero in water (severe vision limits) or
|
||||
in lava (trapped, sinking) which wasn't there any more
|
||||
flying hero can go down (via '>') holes or trap doors instead of escaping trap
|
||||
polymorphed hero hiding on the ceiling can now use '>' to unhide instead of
|
||||
being told "you can't go down here"
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes or Features
|
||||
-----------------------------------------------------
|
||||
fix compilation on platforms that split the ncurses and tinfo libraries
|
||||
Windows: allow all game files to be on a portable device via the sysconf
|
||||
option 'portable_device_paths'
|
||||
|
||||
|
||||
General New Features
|
||||
--------------------
|
||||
none
|
||||
|
||||
|
||||
30
doc/fixes36.5
Normal file
30
doc/fixes36.5
Normal file
@@ -0,0 +1,30 @@
|
||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.0 $ $NHDT-Date: 1576705788 2019/12/18 21:49:48 $
|
||||
|
||||
This fixes36.5 file is here to capture information about updates in the 3.6.x
|
||||
lineage following the release of 3.6.4 in December 2019. Please note, however,
|
||||
that another 3.6.x release is not anticipated, and most developer
|
||||
focus will shift to the next major release.
|
||||
|
||||
General Fixes and Modified Features
|
||||
-----------------------------------
|
||||
|
||||
|
||||
Fixes to Post-3.6.4 Problems that Were Exposed Via git Repository
|
||||
------------------------------------------------------------------
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes or Features
|
||||
-----------------------------------------------------
|
||||
|
||||
|
||||
General New Features
|
||||
--------------------
|
||||
|
||||
|
||||
NetHack Community Patches (or Variation) Included
|
||||
-------------------------------------------------
|
||||
|
||||
|
||||
Code Cleanup and Reorganization
|
||||
-------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.8 $ $NHDT-Date: 1557663358 2019/05/12 12:15:58 $
|
||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.22 $ $NHDT-Date: 1576288434 2019/12/14 01:53:54 $
|
||||
|
||||
General Fixes and Modified Features
|
||||
-----------------------------------
|
||||
@@ -7,6 +7,11 @@ hero polymorphed into a vampire can use #monster to shape-shift rather than
|
||||
just do a one-shot polymorph into bat/cloud/wolf and shifted vampire
|
||||
hero can use #monster again to take on another form (randomly chosen
|
||||
among the shiftable shapes and true vampire form)
|
||||
adjust bones filename buffer sizes to accommodate suffix
|
||||
fix internal self-recover to work with recent fields added to checkpoint file
|
||||
improvements to pronoun usage when hallucinating
|
||||
function calls made from mapglyph based on dungeon level are now called once
|
||||
per level
|
||||
|
||||
|
||||
Fixes to Pre-3.7.0 Problems that Were Exposed Via git Repository
|
||||
@@ -24,6 +29,17 @@ if a killer bee encounters a lump of royal jelly and there is no queen bee on
|
||||
automatic annotation "gateway to Moloch's Sanctum" for vibrating square level
|
||||
once that square's location becomes known (found or magic mapped);
|
||||
goes away once sanctum temple is found (entered or high altar mapped)
|
||||
savefile: add support to deconstruct internal data structures down into their
|
||||
individual fields and save those fields instead of the entire struct
|
||||
savefile: use little-endian format for fields where that makes a difference
|
||||
replace build-time level compiler and dungeon compiler with run-time loading of
|
||||
the dungeon and level descriptions and interpreting them via LUA
|
||||
split off some of the functionality that was in makedefs (compiled-in options
|
||||
build date/time, etc) so that it can be built by a cross-compiler
|
||||
and accessed on the target platform
|
||||
replace quest.txt and associated conversion to quest.dat via makedefs with
|
||||
lua quest texts loaded at runtime
|
||||
some altars are displayed in different colors (for tty and curses at least)
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific New Features
|
||||
@@ -40,4 +56,7 @@ Code Cleanup and Reorganization
|
||||
move majority of global variables into instance_globals struct g
|
||||
move zeroobj, zeromonst, zeroany into const_globals struct cg
|
||||
remove STATIC_DCL, STATIC_OVL, STATIC_VAR, STATIC_PTR
|
||||
old Qt moved from win/Qt to win/Qt3
|
||||
more current Qt for Qt version 4 and 5 moved from win/Qt4 to win/Qt; qt4
|
||||
moniker changed to qt_
|
||||
|
||||
|
||||
588
doc/lev_comp.6
588
doc/lev_comp.6
@@ -1,588 +0,0 @@
|
||||
.TH LEV_COMP 6 "25 May 2015" NETHACK
|
||||
.de ND
|
||||
.ds Nd \\$3
|
||||
..
|
||||
.de NB
|
||||
.ds Nb \\$2
|
||||
..
|
||||
.de NR
|
||||
.ds Nr \\$2
|
||||
..
|
||||
.ND $NHDT-Date: 1524689549 2018/04/25 20:52:29 $
|
||||
.NB $NHDT-Branch: NetHack-3.6.0 $
|
||||
.NR $NHDT-Revision: 1.7 $
|
||||
.ds Na Kenneth Lorber
|
||||
.SH NAME
|
||||
lev_comp \- NetHack special levels compiler
|
||||
.SH SYNOPSIS
|
||||
.B lev_comp
|
||||
[
|
||||
.B \-w
|
||||
]
|
||||
[
|
||||
.I files
|
||||
]
|
||||
.PP
|
||||
If no arguments are given, it reads standard input.
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
.I Lev_comp
|
||||
is a special level compiler for NetHack version 3.2 and higher. It
|
||||
takes description files as arguments and produces level files that can
|
||||
be loaded by NetHack at runtime.
|
||||
.PP
|
||||
The purpose of this tool is to provide NetHack administrators and
|
||||
implementors with a convenient way for adding special levels to the
|
||||
game, or modifying existing ones, without having to recompile the
|
||||
entire world.
|
||||
.PP
|
||||
The
|
||||
.B \-w
|
||||
option causes
|
||||
.I lev_comp
|
||||
to perform extra checks on the level and display extra warnings, however
|
||||
these warnings are sometimes superfluous, so they are not normally displayed.
|
||||
|
||||
.SH GRAMMAR
|
||||
.PP
|
||||
.LP
|
||||
.nf
|
||||
.ta +8n +8n +8n +8n
|
||||
|
||||
file : /* nothing */
|
||||
| levels
|
||||
;
|
||||
|
||||
levels : level
|
||||
| level levels
|
||||
;
|
||||
|
||||
level : maze_level
|
||||
| room_level
|
||||
;
|
||||
|
||||
maze_level : maze_def flags lev_init messages regions
|
||||
;
|
||||
|
||||
room_level : level_def flags lev_init messages rreg_init rooms corridors_def
|
||||
;
|
||||
|
||||
level_def : LEVEL_ID ':' string
|
||||
;
|
||||
|
||||
lev_init : /* nothing */
|
||||
| LEV_INIT_ID ':' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled
|
||||
;
|
||||
|
||||
walled : BOOLEAN
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
flags : /* nothing */
|
||||
| FLAGS_ID ':' flag_list
|
||||
;
|
||||
|
||||
flag_list : FLAG_TYPE ',' flag_list
|
||||
| FLAG_TYPE
|
||||
;
|
||||
|
||||
messages : /* nothing */
|
||||
| message messages
|
||||
;
|
||||
|
||||
message : MESSAGE_ID ':' STRING
|
||||
;
|
||||
|
||||
rreg_init : /* nothing */
|
||||
| rreg_init init_rreg
|
||||
;
|
||||
|
||||
init_rreg : RANDOM_OBJECTS_ID ':' object_list
|
||||
| RANDOM_MONSTERS_ID ':' monster_list
|
||||
;
|
||||
|
||||
rooms : /* Nothing - dummy room for use with INIT_MAP */
|
||||
| roomlist
|
||||
;
|
||||
|
||||
roomlist : aroom
|
||||
| aroom roomlist
|
||||
;
|
||||
|
||||
corridors_def : random_corridors
|
||||
| corridors
|
||||
;
|
||||
|
||||
random_corridors: RAND_CORRIDOR_ID
|
||||
;
|
||||
|
||||
corridors : /* nothing */
|
||||
| corridors corridor
|
||||
;
|
||||
|
||||
corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec
|
||||
| CORRIDOR_ID ':' corr_spec ',' INTEGER
|
||||
;
|
||||
|
||||
corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'
|
||||
;
|
||||
|
||||
aroom : room_def room_details
|
||||
| subroom_def room_details
|
||||
;
|
||||
|
||||
subroom_def : SUBROOM_ID ':' room_type ',' light_state ',' subroom_pos ',' room_size ',' string roomfill
|
||||
;
|
||||
|
||||
room_def : ROOM_ID ':' room_type ',' light_state ',' room_pos ',' room_align ',' room_size roomfill
|
||||
;
|
||||
|
||||
roomfill : /* nothing */
|
||||
| ',' BOOLEAN
|
||||
;
|
||||
|
||||
room_pos : '(' INTEGER ',' INTEGER ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
subroom_pos : '(' INTEGER ',' INTEGER ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_align : '(' h_justif ',' v_justif ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_size : '(' INTEGER ',' INTEGER ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_details : /* nothing */
|
||||
| room_details room_detail
|
||||
;
|
||||
|
||||
room_detail : room_name
|
||||
| room_chance
|
||||
| room_door
|
||||
| monster_detail
|
||||
| object_detail
|
||||
| trap_detail
|
||||
| altar_detail
|
||||
| fountain_detail
|
||||
| sink_detail
|
||||
| pool_detail
|
||||
| gold_detail
|
||||
| engraving_detail
|
||||
| stair_detail
|
||||
;
|
||||
|
||||
room_name : NAME_ID ':' string
|
||||
;
|
||||
|
||||
room_chance : CHANCE_ID ':' INTEGER
|
||||
;
|
||||
|
||||
room_door : DOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos
|
||||
;
|
||||
|
||||
secret : BOOLEAN
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
door_wall : DIRECTION
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
door_pos : INTEGER
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
maze_def : MAZE_ID ':' string ',' filling
|
||||
;
|
||||
|
||||
filling : CHAR
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
regions : aregion
|
||||
| aregion regions
|
||||
;
|
||||
|
||||
aregion : map_definition reg_init map_details
|
||||
;
|
||||
|
||||
map_definition : NOMAP_ID
|
||||
| map_geometry MAP_ID
|
||||
;
|
||||
|
||||
map_geometry : GEOMETRY_ID ':' h_justif ',' v_justif
|
||||
;
|
||||
|
||||
h_justif : LEFT_OR_RIGHT
|
||||
| CENTER
|
||||
;
|
||||
|
||||
v_justif : TOP_OR_BOT
|
||||
| CENTER
|
||||
;
|
||||
|
||||
reg_init : /* nothing */
|
||||
| reg_init init_reg
|
||||
;
|
||||
|
||||
init_reg : RANDOM_OBJECTS_ID ':' object_list
|
||||
| RANDOM_PLACES_ID ':' place_list
|
||||
| RANDOM_MONSTERS_ID ':' monster_list
|
||||
;
|
||||
|
||||
object_list : object
|
||||
| object ',' object_list
|
||||
;
|
||||
|
||||
monster_list : monster
|
||||
| monster ',' monster_list
|
||||
;
|
||||
|
||||
place_list : place
|
||||
| place ',' place_list
|
||||
;
|
||||
|
||||
map_details : /* nothing */
|
||||
| map_details map_detail
|
||||
;
|
||||
|
||||
map_detail : monster_detail
|
||||
| object_detail
|
||||
| door_detail
|
||||
| trap_detail
|
||||
| drawbridge_detail
|
||||
| region_detail
|
||||
| stair_region
|
||||
| portal_region
|
||||
| teleprt_region
|
||||
| branch_region
|
||||
| altar_detail
|
||||
| fountain_detail
|
||||
| mazewalk_detail
|
||||
| wallify_detail
|
||||
| ladder_detail
|
||||
| stair_detail
|
||||
| gold_detail
|
||||
| engraving_detail
|
||||
| diggable_detail
|
||||
| passwall_detail
|
||||
;
|
||||
|
||||
monster_detail : MONSTER_ID chance ':' monster_c ',' m_name ',' coordinate
|
||||
monster_infos
|
||||
;
|
||||
|
||||
monster_infos : /* nothing */
|
||||
| monster_infos monster_info
|
||||
;
|
||||
|
||||
monster_info : ',' string
|
||||
| ',' MON_ATTITUDE
|
||||
| ',' MON_ALERTNESS
|
||||
| ',' alignment
|
||||
| ',' MON_APPEARANCE string
|
||||
;
|
||||
|
||||
object_detail : OBJECT_ID object_desc
|
||||
| COBJECT_ID object_desc
|
||||
;
|
||||
|
||||
object_desc : chance ':' object_c ',' o_name ',' object_where object_infos
|
||||
;
|
||||
|
||||
object_where : coordinate
|
||||
| CONTAINED
|
||||
;
|
||||
|
||||
object_infos : /* nothing */
|
||||
| ',' curse_state ',' monster_id ',' enchantment optional_name
|
||||
| ',' curse_state ',' enchantment optional_name
|
||||
| ',' monster_id ',' enchantment optional_name
|
||||
;
|
||||
|
||||
curse_state : RANDOM_TYPE
|
||||
| CURSE_TYPE
|
||||
;
|
||||
|
||||
monster_id : STRING
|
||||
;
|
||||
|
||||
enchantment : RANDOM_TYPE
|
||||
| INTEGER
|
||||
;
|
||||
|
||||
optional_name : /* nothing */
|
||||
| ',' NONE
|
||||
| ',' STRING
|
||||
;
|
||||
|
||||
door_detail : DOOR_ID ':' door_state ',' coordinate
|
||||
;
|
||||
|
||||
trap_detail : TRAP_ID chance ':' trap_name ',' coordinate
|
||||
;
|
||||
|
||||
drawbridge_detail: DRAWBRIDGE_ID ':' coordinate ',' DIRECTION ',' door_state
|
||||
;
|
||||
|
||||
mazewalk_detail : MAZEWALK_ID ':' coordinate ',' DIRECTION
|
||||
;
|
||||
|
||||
wallify_detail : WALLIFY_ID
|
||||
;
|
||||
|
||||
ladder_detail : LADDER_ID ':' coordinate ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
stair_detail : STAIR_ID ':' coordinate ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' string
|
||||
;
|
||||
|
||||
teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail
|
||||
;
|
||||
|
||||
branch_region : BRANCH_ID ':' lev_region ',' lev_region
|
||||
;
|
||||
|
||||
teleprt_detail : /* empty */
|
||||
| ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
lev_region : region
|
||||
| LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'
|
||||
;
|
||||
|
||||
fountain_detail : FOUNTAIN_ID ':' coordinate
|
||||
;
|
||||
|
||||
sink_detail : SINK_ID ':' coordinate
|
||||
;
|
||||
|
||||
pool_detail : POOL_ID ':' coordinate
|
||||
;
|
||||
|
||||
diggable_detail : NON_DIGGABLE_ID ':' region
|
||||
;
|
||||
|
||||
passwall_detail : NON_PASSWALL_ID ':' region
|
||||
;
|
||||
|
||||
region_detail : REGION_ID ':' region ',' light_state ',' room_type prefilled
|
||||
;
|
||||
|
||||
altar_detail : ALTAR_ID ':' coordinate ',' alignment ',' altar_type
|
||||
;
|
||||
|
||||
gold_detail : GOLD_ID ':' amount ',' coordinate
|
||||
;
|
||||
|
||||
engraving_detail: ENGRAVING_ID ':' coordinate ',' engraving_type ',' string
|
||||
;
|
||||
|
||||
monster_c : monster
|
||||
| RANDOM_TYPE
|
||||
| m_register
|
||||
;
|
||||
|
||||
object_c : object
|
||||
| RANDOM_TYPE
|
||||
| o_register
|
||||
;
|
||||
|
||||
m_name : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
o_name : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
trap_name : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_type : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
prefilled : /* empty */
|
||||
| ',' FILLING
|
||||
| ',' FILLING ',' BOOLEAN
|
||||
;
|
||||
|
||||
coordinate : coord
|
||||
| p_register
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
door_state : DOOR_STATE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
light_state : LIGHT_STATE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
alignment : ALIGNMENT
|
||||
| a_register
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
altar_type : ALTAR_TYPE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
p_register : P_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
o_register : O_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
m_register : M_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
a_register : A_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
place : coord
|
||||
;
|
||||
|
||||
monster : CHAR
|
||||
;
|
||||
|
||||
object : CHAR
|
||||
;
|
||||
|
||||
string : STRING
|
||||
;
|
||||
|
||||
amount : INTEGER
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
chance : /* empty */
|
||||
| PERCENT
|
||||
;
|
||||
|
||||
engraving_type : ENGRAVING_TYPE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
coord : '(' INTEGER ',' INTEGER ')'
|
||||
;
|
||||
|
||||
region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'
|
||||
;
|
||||
.fi
|
||||
.PP
|
||||
.I NOTE:
|
||||
.br
|
||||
Lines beginning with '#' are considered comments.
|
||||
.PP
|
||||
The contents of a "MAP" description of a maze is a rectangle showing the exact
|
||||
level map that should be used for the given part of a maze.
|
||||
Each character in the map corresponds to a location on the screen.
|
||||
Different location types are denoted using different ASCII characters.
|
||||
The following characters are recognized.
|
||||
To give an idea of how these are used, see the EXAMPLE, below.
|
||||
The maximum size of a map is normally 76 columns by 21 rows.
|
||||
.LP
|
||||
.nf
|
||||
.ta +8n +8n +8n
|
||||
\&'-' horizontal wall
|
||||
\&'|' vertical wall
|
||||
\&'+' a doorway (state is specified in a DOOR declaration)
|
||||
\&'A' open air
|
||||
\&'B' boundary room location (for bounding unwalled irregular regions)
|
||||
\&'C' cloudy air
|
||||
\&'I' ice
|
||||
\&'S' a secret door
|
||||
\&'H' a secret corridor
|
||||
\&'{' a fountain
|
||||
\&'\\' a throne
|
||||
\&'K' a sink
|
||||
\&'}' a part of a moat or other deep water
|
||||
\&'P' a pool
|
||||
\&'L' lava
|
||||
\&'W' water (yes, different from a pool)
|
||||
\&'T' a tree
|
||||
\&'F' iron bars
|
||||
\&'#' a corridor
|
||||
\&'.' a normal room location (unlit unless lit in a REGION declaration)
|
||||
\&' ' stone
|
||||
.fi
|
||||
.SH EXAMPLE
|
||||
.PP
|
||||
Here is an example of a description file (a very simple one):
|
||||
.LP
|
||||
.nf
|
||||
.ta +8n +8n +8n
|
||||
MAZE : "fortress", random
|
||||
GEOMETRY : center , center
|
||||
MAP
|
||||
}}}}}}}}}
|
||||
}}}|-|}}}
|
||||
}}|-.-|}}
|
||||
}|-...-|}
|
||||
}|.....|}
|
||||
}|-...-|}
|
||||
}}|-.-|}}
|
||||
}}}|-|}}}
|
||||
}}}}}}}}}
|
||||
ENDMAP
|
||||
MONSTER: '@', "Wizard of Yendor", (4,4)
|
||||
OBJECT: '"', "Amulet of Yendor", (4,4)
|
||||
# a hell hound flanking the Wiz on a random side
|
||||
RANDOM_PLACES: (4,3), (4,5), (3,4), (5,4)
|
||||
MONSTER: 'd', "hell hound", place[0]
|
||||
# a chest on another random side
|
||||
OBJECT: '(', "chest", place[1]
|
||||
# a sack on a random side, with a diamond and maybe a ruby in it
|
||||
CONTAINER: '(', "sack", place[2]
|
||||
OBJECT: '*', "diamond", contained
|
||||
OBJECT[50%]: '*', "ruby", contained
|
||||
# a random dragon somewhere
|
||||
MONSTER: 'D', random, random
|
||||
# 3 out of 4 chance for a random trap in the EAST end
|
||||
TRAP[75%]: random, (6,4)
|
||||
# an electric eel below the SOUTH end
|
||||
MONSTER: ';', "electric eel", (4,8)
|
||||
# make the walls non-diggable
|
||||
NON_DIGGABLE: (0,0,8,8)
|
||||
TELEPORT_REGION: levregion(0,0,79,20), (0,0,8,8)
|
||||
.fi
|
||||
.PP
|
||||
This example will produce a file named "fortress" that can be integrated into
|
||||
one of the numerous mazes of the game.
|
||||
.PP
|
||||
Note especially the final, TELEPORT_REGION specification. This says
|
||||
that level teleports or other non-stairway arrivals on this level can
|
||||
land anywhere on the level except the area of the map. This shows the
|
||||
use of the ``levregion'' prefix allowed in certain region specifications.
|
||||
Normally, regions apply only to the most recent MAP specification, but
|
||||
when prefixed with ``levregion'', one can refer to any area of the
|
||||
level, regardless of the placement of the current MAP in the level.
|
||||
.SH AUTHOR
|
||||
.PP
|
||||
Jean-Christophe Collet, David Cohrs.
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
dgn_comp(6), nethack(6)
|
||||
.SH BUGS
|
||||
.PP
|
||||
Probably infinite.
|
||||
Most importantly, still needs additional bounds checking.
|
||||
.SH COPYRIGHT
|
||||
This file is Copyright (C) \*(Na and was last modified \*(Nd (version
|
||||
\*(Nb:\*(Nr).
|
||||
NetHack may be freely redistributed. See license for details.
|
||||
726
doc/lev_comp.txt
726
doc/lev_comp.txt
@@ -1,726 +0,0 @@
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
NAME
|
||||
lev_comp - NetHack special levels compiler
|
||||
|
||||
SYNOPSIS
|
||||
lev_comp [ -w ] [ files ]
|
||||
|
||||
If no arguments are given, it reads standard input.
|
||||
|
||||
DESCRIPTION
|
||||
Lev_comp is a special level compiler for NetHack version 3.2
|
||||
and higher. It takes description files as arguments and
|
||||
produces level files that can be loaded by NetHack at run-
|
||||
time.
|
||||
|
||||
The purpose of this tool is to provide NetHack administra-
|
||||
tors and implementors with a convenient way for adding spe-
|
||||
cial levels to the game, or modifying existing ones, without
|
||||
having to recompile the entire world.
|
||||
|
||||
The -w option causes lev_comp to perform extra checks on the
|
||||
level and display extra warnings, however these warnings are
|
||||
sometimes superfluous, so they are not normally displayed.
|
||||
|
||||
|
||||
GRAMMAR
|
||||
file : /* nothing */
|
||||
| levels
|
||||
;
|
||||
|
||||
levels : level
|
||||
| level levels
|
||||
;
|
||||
|
||||
level : maze_level
|
||||
| room_level
|
||||
;
|
||||
|
||||
maze_level : maze_def flags lev_init messages regions
|
||||
;
|
||||
|
||||
room_level : level_def flags lev_init messages rreg_init rooms corridors_def
|
||||
;
|
||||
|
||||
level_def : LEVEL_ID ':' string
|
||||
;
|
||||
|
||||
lev_init : /* nothing */
|
||||
| LEV_INIT_ID ':' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled
|
||||
;
|
||||
|
||||
walled : BOOLEAN
|
||||
| RANDOM_TYPE
|
||||
|
||||
|
||||
|
||||
May Last change: 16 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
flags : /* nothing */
|
||||
| FLAGS_ID ':' flag_list
|
||||
;
|
||||
|
||||
flag_list : FLAG_TYPE ',' flag_list
|
||||
| FLAG_TYPE
|
||||
;
|
||||
|
||||
messages : /* nothing */
|
||||
| message messages
|
||||
;
|
||||
|
||||
message : MESSAGE_ID ':' STRING
|
||||
;
|
||||
|
||||
rreg_init : /* nothing */
|
||||
| rreg_init init_rreg
|
||||
;
|
||||
|
||||
init_rreg : RANDOM_OBJECTS_ID ':' object_list
|
||||
| RANDOM_MONSTERS_ID ':' monster_list
|
||||
;
|
||||
|
||||
rooms : /* Nothing - dummy room for use with INIT_MAP */
|
||||
| roomlist
|
||||
;
|
||||
|
||||
roomlist : aroom
|
||||
| aroom roomlist
|
||||
;
|
||||
|
||||
corridors_def : random_corridors
|
||||
| corridors
|
||||
;
|
||||
|
||||
random_corridors: RAND_CORRIDOR_ID
|
||||
;
|
||||
|
||||
corridors : /* nothing */
|
||||
| corridors corridor
|
||||
;
|
||||
|
||||
corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec
|
||||
| CORRIDOR_ID ':' corr_spec ',' INTEGER
|
||||
;
|
||||
|
||||
corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'
|
||||
;
|
||||
|
||||
aroom : room_def room_details
|
||||
|
||||
|
||||
|
||||
May Last change: 16 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
| subroom_def room_details
|
||||
;
|
||||
|
||||
subroom_def : SUBROOM_ID ':' room_type ',' light_state ',' subroom_pos ',' room_size ',' string roomfill
|
||||
;
|
||||
|
||||
room_def : ROOM_ID ':' room_type ',' light_state ',' room_pos ',' room_align ',' room_size roomfill
|
||||
;
|
||||
|
||||
roomfill : /* nothing */
|
||||
| ',' BOOLEAN
|
||||
;
|
||||
|
||||
room_pos : '(' INTEGER ',' INTEGER ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
subroom_pos : '(' INTEGER ',' INTEGER ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_align : '(' h_justif ',' v_justif ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_size : '(' INTEGER ',' INTEGER ')'
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_details : /* nothing */
|
||||
| room_details room_detail
|
||||
;
|
||||
|
||||
room_detail : room_name
|
||||
| room_chance
|
||||
| room_door
|
||||
| monster_detail
|
||||
| object_detail
|
||||
| trap_detail
|
||||
| altar_detail
|
||||
| fountain_detail
|
||||
| sink_detail
|
||||
| pool_detail
|
||||
| gold_detail
|
||||
| engraving_detail
|
||||
| stair_detail
|
||||
;
|
||||
|
||||
room_name : NAME_ID ':' string
|
||||
;
|
||||
|
||||
room_chance : CHANCE_ID ':' INTEGER
|
||||
|
||||
|
||||
|
||||
May Last change: 16 3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
room_door : DOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos
|
||||
;
|
||||
|
||||
secret : BOOLEAN
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
door_wall : DIRECTION
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
door_pos : INTEGER
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
maze_def : MAZE_ID ':' string ',' filling
|
||||
;
|
||||
|
||||
filling : CHAR
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
regions : aregion
|
||||
| aregion regions
|
||||
;
|
||||
|
||||
aregion : map_definition reg_init map_details
|
||||
;
|
||||
|
||||
map_definition : NOMAP_ID
|
||||
| map_geometry MAP_ID
|
||||
;
|
||||
|
||||
map_geometry : GEOMETRY_ID ':' h_justif ',' v_justif
|
||||
;
|
||||
|
||||
h_justif : LEFT_OR_RIGHT
|
||||
| CENTER
|
||||
;
|
||||
|
||||
v_justif : TOP_OR_BOT
|
||||
| CENTER
|
||||
;
|
||||
|
||||
reg_init : /* nothing */
|
||||
| reg_init init_reg
|
||||
;
|
||||
|
||||
init_reg : RANDOM_OBJECTS_ID ':' object_list
|
||||
| RANDOM_PLACES_ID ':' place_list
|
||||
|
||||
|
||||
|
||||
May Last change: 16 4
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
| RANDOM_MONSTERS_ID ':' monster_list
|
||||
;
|
||||
|
||||
object_list : object
|
||||
| object ',' object_list
|
||||
;
|
||||
|
||||
monster_list : monster
|
||||
| monster ',' monster_list
|
||||
;
|
||||
|
||||
place_list : place
|
||||
| place ',' place_list
|
||||
;
|
||||
|
||||
map_details : /* nothing */
|
||||
| map_details map_detail
|
||||
;
|
||||
|
||||
map_detail : monster_detail
|
||||
| object_detail
|
||||
| door_detail
|
||||
| trap_detail
|
||||
| drawbridge_detail
|
||||
| region_detail
|
||||
| stair_region
|
||||
| portal_region
|
||||
| teleprt_region
|
||||
| branch_region
|
||||
| altar_detail
|
||||
| fountain_detail
|
||||
| mazewalk_detail
|
||||
| wallify_detail
|
||||
| ladder_detail
|
||||
| stair_detail
|
||||
| gold_detail
|
||||
| engraving_detail
|
||||
| diggable_detail
|
||||
| passwall_detail
|
||||
;
|
||||
|
||||
monster_detail : MONSTER_ID chance ':' monster_c ',' m_name ',' coordinate
|
||||
monster_infos
|
||||
;
|
||||
|
||||
monster_infos : /* nothing */
|
||||
| monster_infos monster_info
|
||||
;
|
||||
|
||||
monster_info : ',' string
|
||||
| ',' MON_ATTITUDE
|
||||
| ',' MON_ALERTNESS
|
||||
|
||||
|
||||
|
||||
May Last change: 16 5
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
| ',' alignment
|
||||
| ',' MON_APPEARANCE string
|
||||
;
|
||||
|
||||
object_detail : OBJECT_ID object_desc
|
||||
| COBJECT_ID object_desc
|
||||
;
|
||||
|
||||
object_desc : chance ':' object_c ',' o_name ',' object_where object_infos
|
||||
;
|
||||
|
||||
object_where : coordinate
|
||||
| CONTAINED
|
||||
;
|
||||
|
||||
object_infos : /* nothing */
|
||||
| ',' curse_state ',' monster_id ',' enchantment optional_name
|
||||
| ',' curse_state ',' enchantment optional_name
|
||||
| ',' monster_id ',' enchantment optional_name
|
||||
;
|
||||
|
||||
curse_state : RANDOM_TYPE
|
||||
| CURSE_TYPE
|
||||
;
|
||||
|
||||
monster_id : STRING
|
||||
;
|
||||
|
||||
enchantment : RANDOM_TYPE
|
||||
| INTEGER
|
||||
;
|
||||
|
||||
optional_name : /* nothing */
|
||||
| ',' NONE
|
||||
| ',' STRING
|
||||
;
|
||||
|
||||
door_detail : DOOR_ID ':' door_state ',' coordinate
|
||||
;
|
||||
|
||||
trap_detail : TRAP_ID chance ':' trap_name ',' coordinate
|
||||
;
|
||||
|
||||
drawbridge_detail: DRAWBRIDGE_ID ':' coordinate ',' DIRECTION ',' door_state
|
||||
;
|
||||
|
||||
mazewalk_detail : MAZEWALK_ID ':' coordinate ',' DIRECTION
|
||||
;
|
||||
|
||||
wallify_detail : WALLIFY_ID
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
May Last change: 16 6
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
ladder_detail : LADDER_ID ':' coordinate ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
stair_detail : STAIR_ID ':' coordinate ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' string
|
||||
;
|
||||
|
||||
teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail
|
||||
;
|
||||
|
||||
branch_region : BRANCH_ID ':' lev_region ',' lev_region
|
||||
;
|
||||
|
||||
teleprt_detail : /* empty */
|
||||
| ',' UP_OR_DOWN
|
||||
;
|
||||
|
||||
lev_region : region
|
||||
| LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'
|
||||
;
|
||||
|
||||
fountain_detail : FOUNTAIN_ID ':' coordinate
|
||||
;
|
||||
|
||||
sink_detail : SINK_ID ':' coordinate
|
||||
;
|
||||
|
||||
pool_detail : POOL_ID ':' coordinate
|
||||
;
|
||||
|
||||
diggable_detail : NON_DIGGABLE_ID ':' region
|
||||
;
|
||||
|
||||
passwall_detail : NON_PASSWALL_ID ':' region
|
||||
;
|
||||
|
||||
region_detail : REGION_ID ':' region ',' light_state ',' room_type prefilled
|
||||
;
|
||||
|
||||
altar_detail : ALTAR_ID ':' coordinate ',' alignment ',' altar_type
|
||||
;
|
||||
|
||||
gold_detail : GOLD_ID ':' amount ',' coordinate
|
||||
;
|
||||
|
||||
engraving_detail: ENGRAVING_ID ':' coordinate ',' engraving_type ',' string
|
||||
;
|
||||
|
||||
|
||||
|
||||
May Last change: 16 7
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
monster_c : monster
|
||||
| RANDOM_TYPE
|
||||
| m_register
|
||||
;
|
||||
|
||||
object_c : object
|
||||
| RANDOM_TYPE
|
||||
| o_register
|
||||
;
|
||||
|
||||
m_name : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
o_name : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
trap_name : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
room_type : string
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
prefilled : /* empty */
|
||||
| ',' FILLING
|
||||
| ',' FILLING ',' BOOLEAN
|
||||
;
|
||||
|
||||
coordinate : coord
|
||||
| p_register
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
door_state : DOOR_STATE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
light_state : LIGHT_STATE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
alignment : ALIGNMENT
|
||||
| a_register
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
altar_type : ALTAR_TYPE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
|
||||
|
||||
May Last change: 16 8
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
p_register : P_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
o_register : O_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
m_register : M_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
a_register : A_REGISTER '[' INTEGER ']'
|
||||
;
|
||||
|
||||
place : coord
|
||||
;
|
||||
|
||||
monster : CHAR
|
||||
;
|
||||
|
||||
object : CHAR
|
||||
;
|
||||
|
||||
string : STRING
|
||||
;
|
||||
|
||||
amount : INTEGER
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
chance : /* empty */
|
||||
| PERCENT
|
||||
;
|
||||
|
||||
engraving_type : ENGRAVING_TYPE
|
||||
| RANDOM_TYPE
|
||||
;
|
||||
|
||||
coord : '(' INTEGER ',' INTEGER ')'
|
||||
;
|
||||
|
||||
region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'
|
||||
;
|
||||
|
||||
NOTE:
|
||||
Lines beginning with '#' are considered comments.
|
||||
|
||||
The contents of a "MAP" description of a maze is a rectangle
|
||||
showing the exact level map that should be used for the
|
||||
given part of a maze. Each character in the map corresponds
|
||||
to a location on the screen. Different location types are
|
||||
denoted using different ASCII characters. The following
|
||||
characters are recognized. To give an idea of how these are
|
||||
used, see the EXAMPLE, below. The maximum size of a map is
|
||||
|
||||
|
||||
|
||||
May Last change: 16 9
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
normally 76 columns by 21 rows.
|
||||
|
||||
'-' horizontal wall
|
||||
'|' vertical wall
|
||||
'+' a doorway (state is specified in a DOOR declaration)
|
||||
'A' open air
|
||||
'B' boundary room location (for bounding unwalled irregular regions)
|
||||
'C' cloudy air
|
||||
'I' ice
|
||||
'S' a secret door
|
||||
'H' a secret corridor
|
||||
'{' a fountain
|
||||
'\' a throne
|
||||
'K' a sink (if SINKS is defined, else a room location)
|
||||
'}' a part of a moat or other deep water
|
||||
'P' a pool
|
||||
'L' lava
|
||||
'W' water (yes, different from a pool)
|
||||
'T' a tree
|
||||
'F' iron bars
|
||||
'#' a corridor
|
||||
'.' a normal room location (unlit unless lit in a REGION declaration)
|
||||
' ' stone
|
||||
|
||||
EXAMPLE
|
||||
Here is an example of a description file (a very simple
|
||||
one):
|
||||
|
||||
MAZE : "fortress", random
|
||||
GEOMETRY : center , center
|
||||
MAP
|
||||
}}}}}}}}}
|
||||
}}}|-|}}}
|
||||
}}|-.-|}}
|
||||
}|-...-|}
|
||||
}|.....|}
|
||||
}|-...-|}
|
||||
}}|-.-|}}
|
||||
}}}|-|}}}
|
||||
}}}}}}}}}
|
||||
ENDMAP
|
||||
MONSTER: '@', "Wizard of Yendor", (4,4)
|
||||
OBJECT: '"', "Amulet of Yendor", (4,4)
|
||||
# a hell hound flanking the Wiz on a random side
|
||||
RANDOM_PLACES: (4,3), (4,5), (3,4), (5,4)
|
||||
MONSTER: 'd', "hell hound", place[0]
|
||||
# a chest on another random side
|
||||
OBJECT: '(', "chest", place[1]
|
||||
# a sack on a random side, with a diamond and maybe a ruby in it
|
||||
CONTAINER: '(', "sack", place[2]
|
||||
OBJECT: '*', "diamond", contained
|
||||
OBJECT[50%]: '*', "ruby", contained
|
||||
|
||||
|
||||
|
||||
May Last change: 16 10
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LEV_COMP(6) 1996 LEV_COMP(6)
|
||||
|
||||
|
||||
|
||||
# a random dragon somewhere
|
||||
MONSTER: 'D', random, random
|
||||
# 3 out of 4 chance for a random trap in the EAST end
|
||||
TRAP[75%]: random, (6,4)
|
||||
# an electric eel below the SOUTH end
|
||||
MONSTER: ';', "electric eel", (4,8)
|
||||
# make the walls non-diggable
|
||||
NON_DIGGABLE: (0,0,8,8)
|
||||
TELEPORT_REGION: levregion(0,0,79,20), (0,0,8,8)
|
||||
|
||||
This example will produce a file named "fortress" that can
|
||||
be integrated into one of the numerous mazes of the game.
|
||||
|
||||
Note especially the final, TELEPORT_REGION specification.
|
||||
This says that level teleports or other non-stairway
|
||||
arrivals on this level can land anywhere on the level except
|
||||
the area of the map. This shows the use of the ``levre-
|
||||
gion'' prefix allowed in certain region specifications.
|
||||
Normally, regions apply only to the most recent MAP specifi-
|
||||
cation, but when prefixed with ``levregion'', one can refer
|
||||
to any area of the level, regardless of the placement of the
|
||||
current MAP in the level.
|
||||
|
||||
AUTHOR
|
||||
Jean-Christophe Collet, David Cohrs.
|
||||
|
||||
SEE ALSO
|
||||
dgn_comp(6), nethack(6)
|
||||
|
||||
BUGS
|
||||
Probably infinite. Most importantly, still needs additional
|
||||
bounds checking.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
May Last change: 16 11
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,9 @@ nethack \- Exploring The Mazes of Menace
|
||||
.B \-ibm
|
||||
]
|
||||
[
|
||||
.BR \-\-showpaths
|
||||
]
|
||||
[
|
||||
.BR \-\-version [ :paste ]
|
||||
]
|
||||
.PP
|
||||
@@ -223,6 +226,10 @@ the list of top scorers, and a subdirectory
|
||||
.I save
|
||||
where games are saved.
|
||||
.PP
|
||||
.B \-\-showpaths
|
||||
can be used to cause NetHack to show where it is expecting
|
||||
to find various configuration files.
|
||||
.PP
|
||||
.B \-\-version
|
||||
can be used to cause NetHack to show the version information it
|
||||
was compiled with, then exit. That will include the
|
||||
@@ -270,7 +277,7 @@ nethack The program itself.
|
||||
.br
|
||||
data, oracles, rumors Data files used by NetHack.
|
||||
.br
|
||||
quest.dat, bogusmon More data files.
|
||||
bogusmon another data file.
|
||||
.br
|
||||
engrave, epitaph, tribute Still more data files.
|
||||
.br
|
||||
@@ -287,9 +294,8 @@ help, hh Help data files.
|
||||
.br
|
||||
cmdhelp, opthelp, wizhelp More help data files.
|
||||
.br
|
||||
*.lev Predefined special levels.
|
||||
.br
|
||||
dungeon Control file for special levels.
|
||||
*.lua Predefined special levels, dungeon control for
|
||||
special levels, quest texts
|
||||
.br
|
||||
history A short history of NetHack.
|
||||
.br
|
||||
@@ -386,7 +392,7 @@ SHOPTYPE and SPLEVTYPE can be used in debugging (wizard) mode.
|
||||
DEBUGFILES can be used if the program was built with 'DEBUG' enabled.
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
dgn_comp(6), lev_comp(6), recover(6)
|
||||
recover(6)
|
||||
.SH BUGS
|
||||
.PP
|
||||
Probably infinite.
|
||||
|
||||
@@ -117,10 +117,10 @@
|
||||
.\" .BR - hard line break with vertical padding inserted
|
||||
.\" $1 - repeat count for amount of padding (optional; default is 1)
|
||||
.de BR
|
||||
.nr bR (\\$1-0)
|
||||
.if \\n(bR<1 .nr bR 1
|
||||
.nr bR \\n(bR*\\n(pd
|
||||
.sn \\n(bRu
|
||||
.ie \\.$==0 .nr bR 1v
|
||||
.el .nr bR (\\$1-0)v
|
||||
\0
|
||||
.sp \\n(bR
|
||||
.br
|
||||
..
|
||||
.\" .UR url
|
||||
|
||||
@@ -663,6 +663,10 @@ port can access the fields directly.
|
||||
|
||||
Your window port identifies what options it will react to and support
|
||||
by setting bits in the window_procs wincap mask and/or wincap2 mask.
|
||||
Your window port can also fill in the color-availability table for
|
||||
the window port, has_color[CLR_MAX] to flag the colors it supports
|
||||
1 it does, or 0 it doesn't. [CLR_MAX is 16 as of 3.6.3.]
|
||||
|
||||
See section IX for details of where the wincap masks reside.
|
||||
|
||||
Two things control whether any preference setting appears in the
|
||||
@@ -926,7 +930,8 @@ These are not part of the interface. They may be called by your
|
||||
window port routines to perform the desired task, instead of duplicating
|
||||
the necessary code in each window port.
|
||||
|
||||
int mapglyph(int glyph, int *ochar, int *ocolor, unsigned *special, int x, int y)
|
||||
int mapglyph(int glyph, int *ochar, int *ocolor, unsigned *special,
|
||||
int x, int y, unsigned mgflags)
|
||||
-- Maps glyph at x,y to NetHack ascii character and color.
|
||||
The return value is an index into the showsyms[] array, in
|
||||
case a port wants to index into its own alternative
|
||||
|
||||
Reference in New Issue
Block a user