]> granicus.if.org Git - nethack/commitdiff
This is cron-daily v1-Jan-20-2020. guidebook updated: doc/Guidebook.txt
authornhw_cron <nhw+cron@nethack.org>
Tue, 9 Feb 2021 01:24:07 +0000 (20:24 -0500)
committernhmall <nhmall@nethack.org>
Tue, 9 Feb 2021 02:17:44 +0000 (21:17 -0500)
doc/Guidebook.txt

index d1274366aef17fcd0458ed48dd88e9b9bfe9f343..3165e354745e3c9827e23d0aead661b5ad9a0602 100644 (file)
 
                  0 - off, never show borders
                  1 - on, always show borders
-                 2 - auto, on if display is at least (24+2)x(80+2)  (default)
+                 2 - auto, on if display is at least (24+2)x(80+2) [default]
+                 3 - on, except forced off for perm_invent
+                 4 - auto, except forced off for perm_invent
 
             (The  26x82 size threshold for `2' refers to number of rows and
             columns of the display.   A  width  of  at  least  110  columns
-            (80+2+26+2) is needed for align_status set to left or right.)
+            (80+2+26+2) is needed to show borders if align_status is set to
+            left or right.)
+
+            The persistent inventory window, when enabled, can  grow  until
+            it  is too big to fit on most displays, resulting in truncation
+            of its contents.  If borders are forced on (1) or  the  display
+            is big enough to show them (2), setting the value to 3 or 4 in-
+            stead will keep borders for the map, message, and  status  win-
+            dows  but  have room for two additional lines of inventory plus
+            widen each inventory line by two columns.
 
           windowcolors
-            If  NetHack  can,  it should display windows with the specified
-            foreground/background colors. Windows GUI only. The format is
+            If NetHack can, it should display windows  with  the  specified
+            foreground/background colors.  Windows GUI only.  The format is
 
                OPTION=windowcolors:wintype foreground/background
 
-               where wintype is one  of  "menu",  "message",  "status",  or
-          "text",  and foreground and background are colors, either a hexa-
-          decimal \'#rrggbb', one of the named colors (black,  red,  green,
-          brown,  blue, magenta, cyan, orange, brightgreen, yellow, bright-
-          blue, brightmagenta, brightcyan, white, trueblack, gray,  purple,
-          silver,  maroon,  fuchsia, lime, olive, navy, teal, aqua), or one
-          of Windows UI colors (activeborder, activecaption,  appworkspace,
-          background,  btnface,  btnshadow, btntext, captiontext, graytext,
-          greytext, highlight, highlighttext, inactiveborder,  inactivecap-
-          tion,  menu,  menutext,  scrollbar,  window, windowframe, window-
-          text).
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+               where  wintype  is  one  of  "menu", "message", "status", or
+          "text", and foreground and background are colors, either a  hexa-
+          decimal  \'#rrggbb',  one of the named colors (black, red, green,
+          brown, blue, magenta, cyan, orange, brightgreen, yellow,  bright-
+          blue,  brightmagenta, brightcyan, white, trueblack, gray, purple,
+          silver, maroon, fuchsia, lime, olive, navy, teal, aqua),  or  one
+          of  Windows UI colors (activeborder, activecaption, appworkspace,
+          background, btnface, btnshadow, btntext,  captiontext,  graytext,
+          greytext,  highlight, highlighttext, inactiveborder, inactivecap-
+          tion, menu, menutext,  scrollbar,  window,  windowframe,  window-
+          text).
+
           wraptext
             If NetHack can, it should wrap long lines of text if they don't
             fit in the visible area of the window.
 
           9.6.  Platform-specific Customization options
 
-               Here  are  explanations of options that are used by specific
+               Here are explanations of options that are used  by  specific
           platforms or ports to customize and change the port behavior.
 
           altkeyhandler
-            Select an alternate keystroke handler dll to  load  (Win32  tty
-            NetHack  only).   The  name of the handler is specified without
+            Select  an  alternate  keystroke handler dll to load (Win32 tty
+            NetHack only).  The name of the handler  is  specified  without
             the .dll extension and without any path information.  Cannot be
             set with the `O' command.
 
 
           altmeta
             On other (non-Amiga) systems where this option is available, it
-            can  be set to tell NetHack to convert a two character sequence
-            beginning with ESC into a meta-shifted version  of  the  second
+            can be set to tell NetHack to convert a two character  sequence
+            beginning  with  ESC  into a meta-shifted version of the second
             character (default off).
 
-            This  conversion is only done for commands, not for other input
+            This conversion is only done for commands, not for other  input
             prompts.  Note that typing one or more digits as a count prefix
-            prior  to  a command--preceded by n if the number_pad option is
+            prior to a command--preceded by n if the number_pad  option  is
             set--is also subject to this conversion, so attempting to abort
-            the  count by typing ESC will leave NetHack waiting for another
-            character to complete the two character sequence.  Type a  sec-
-            ond  ESC to finish cancelling such a count.  At other prompts a
+            the count by typing ESC will leave NetHack waiting for  another
+            character  to complete the two character sequence.  Type a sec-
+            ond ESC to finish cancelling such a count.  At other prompts  a
             single ESC suffices.
 
           BIOS
             Use BIOS calls to update the screen display quickly and to read
-            the  keyboard  (allowing  the use of arrow keys to move) on ma-
-            chines with an IBM PC compatible BIOS ROM (default  off,  OS/2,
+            the keyboard (allowing the use of arrow keys to  move)  on  ma-
+            chines  with  an IBM PC compatible BIOS ROM (default off, OS/2,
             PC, and ST NetHack only).
 
           flush
             (default off, Amiga NetHack only).
 
-          MACgraphics
-            (default on, Mac NetHack only).
-
-          page_wait
-            (default on, Mac NetHack only).
-
-          rawio
-            Force  raw (non-cbreak) mode for faster output and more bullet-
-            proof input (MS-DOS sometimes treats `^P' as a  printer  toggle
-            without  it)  (default  off,  OS/2,  PC,  and ST NetHack only).
-            Note:  DEC Rainbows hang if this is turned on.  Cannot  be  set
-
 
           NetHack 3.7                                       January 6, 2021
 
 
 
 
+          MACgraphics
+            (default on, Mac NetHack only).
+
+          page_wait
+            (default on, Mac NetHack only).
+
+          rawio
+            Force raw (non-cbreak) mode for faster output and more  bullet-
+            proof  input  (MS-DOS sometimes treats `^P' as a printer toggle
+            without it) (default off,  OS/2,  PC,  and  ST  NetHack  only).
+            Note:   DEC  Rainbows hang if this is turned on.  Cannot be set
             with the `O' command.
 
           subkeyvalue
-            (Win32  tty  NetHack  only).  May be used to alter the value of
+            (Win32 tty NetHack only).  May be used to alter  the  value  of
             keystrokes that the operating system returns to NetHack to help
-            compensate  for international keyboard issues.  OPTIONS=subkey-
-            value:171/92 will return 92 to NetHack, if 171  was  originally
+            compensate for international keyboard issues.   OPTIONS=subkey-
+            value:171/92  will  return 92 to NetHack, if 171 was originally
             going to be returned.  You can use multiple subkeyvalue assign-
-            ments in the configuration file if needed.  Cannot be set  with
+            ments  in the configuration file if needed.  Cannot be set with
             the `O' command.
 
           video
             Set the video mode used (PC NetHack only).  Values are "autode-
-            tect", "default", "vga", or "vesa".  Setting "vesa" will  cause
+            tect",  "default", "vga", or "vesa".  Setting "vesa" will cause
             the game to display tiles, using the full capability of the VGA
-            hardware.  Setting "vga" will cause the game to display  tiles,
-            fixed  at  640x480 in 16 colors, a mode that is compatible with
-            all VGA hardware. Third party tilesets will probably not  work.
-            Setting  "autodetect"  attempts "vesa", then "vga", and finally
-            sets "default" if neither of those modes works.  Cannot be  set
+            hardware.   Setting "vga" will cause the game to display tiles,
+            fixed at 640x480 in 16 colors, a mode that is  compatible  with
+            all  VGA hardware. Third party tilesets will probably not work.
+            Setting "autodetect" attempts "vesa", then "vga",  and  finally
+            sets  "default" if neither of those modes works.  Cannot be set
             with the `O' command.
 
           video_height
-            Set   the   VGA  mode  resolution  height  (MS-DOS  only,  with
+            Set  the  VGA  mode  resolution  height  (MS-DOS   only,   with
             video:vesa)
 
           video_width
-            Set  the  VGA  mode  resolution  width   (MS-DOS   only,   with
+            Set   the   VGA   mode  resolution  width  (MS-DOS  only,  with
             video:vesa)
 
           videocolors
-            Set  the  color  palette for PC systems using NO_TERMS (default
-            4-2-6-1-5-3-15-12-10-14-9-13-11, (PC NetHack only).  The  order
-            of   colors   is   red,  green,  brown,  blue,  magenta,  cyan,
-            bright.white, bright.red,  bright.green,  yellow,  bright.blue,
-            bright.magenta,  and  bright.cyan.   Cannot be set with the `O'
+            Set the color palette for PC systems  using  NO_TERMS  (default
+            4-2-6-1-5-3-15-12-10-14-9-13-11,  (PC NetHack only).  The order
+            of  colors  is  red,  green,  brown,   blue,   magenta,   cyan,
+            bright.white,  bright.red,  bright.green,  yellow, bright.blue,
+            bright.magenta, and bright.cyan.  Cannot be set  with  the  `O'
             command.
 
           videoshades
             Set the intensity level of the three gray scales available (de-
             fault dark normal light, PC NetHack only).  If the game display
-            is difficult to read, try adjusting these scales; if this  does
-            not  correct  the  problem, try !color.  Cannot be set with the
-            `O' command.
-
-          9.7.  Regular Expressions
-
-               Regular expressions are normally POSIX extended regular  ex-
-          pressions.  It is possible to compile NetHack without regular ex-
-          pression support on a platform where there is no regular  expres-
-          sion  library.  While this is not true of any modern platform, if
-          your NetHack was built this way, patterns are instead  glob  pat-
-          terns. This applies to Autopickup exceptions, Message types, Menu
-          colors, and User sounds.
+            is  difficult to read, try adjusting these scales; if this does
+            not correct the problem, try !color.  Cannot be  set  with  the
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+            `O' command.
+
+          9.7.  Regular Expressions
+
+               Regular  expressions are normally POSIX extended regular ex-
+          pressions. It is possible to compile NetHack without regular  ex-
+          pression  support on a platform where there is no regular expres-
+          sion library. While this is not true of any modern  platform,  if
+          your  NetHack  was built this way, patterns are instead glob pat-
+          terns. This applies to Autopickup exceptions, Message types, Menu
+          colors, and User sounds.
+
           9.8.  Configuring Autopickup Exceptions
 
                You can further refine the behavior of the autopickup option
           beyond what is available through the pickup_types option.
 
-               By  placing autopickup_exception lines in your configuration
-          file, you can define patterns to be  checked  when  the  game  is
+               By placing autopickup_exception lines in your  configuration
+          file,  you  can  define  patterns  to be checked when the game is
           about to autopickup something.
 
           autopickup_exception
-            Sets  an  exception  to the pickup_types option.  The autopick-
-            up_exception option should be followed by a regular  expression
-            to  be  used as a pattern to match against the singular form of
+            Sets an exception to the pickup_types  option.   The  autopick-
+            up_exception  option should be followed by a regular expression
+            to be used as a pattern to match against the singular  form  of
             the description of an object at your location.
 
-            In addition, some characters are treated specially if they  oc-
+            In  addition, some characters are treated specially if they oc-
             cur as the first character in the pattern, specifically:
 
                  < - always pickup an object that matches rest of pattern;
                  > - never pickup an object that matches rest of pattern.
 
-            The  autopickup_exception  rules  are processed in the order in
-            which they appear in your configuration file, thus  allowing  a
+            The autopickup_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.
 
-            Exceptions  can  be  set with the `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.  autopickup_ex-
+            Exceptions can be set with the `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.   autopickup_ex-
             ception rules and not saved with the game.
 
           Here are some examples:
                  autopickup_exception=">*corpse"
                  autopickup_exception=">* cursed*"
 
-               The first example above will result  in  autopickup  of  any
-          type  of  arrow.   The second example results in the exclusion of
-          any corpse from autopickup.  The last example results in the  ex-
+               The  first  example  above  will result in autopickup of any
+          type of arrow.  The second example results in  the  exclusion  of
+          any  corpse from autopickup.  The last example results in the ex-
           clusion of items known to be cursed from autopickup.
 
-          9.9.  Changing Key Bindings
-
-               It  is  possible  to change the default key bindings of some
-          special commands, menu accelerator keys, and  extended  commands,
-          by  using BIND stanzas in the configuration file.  Format is key,
-          followed by the command to bind to, separated by  a  colon.   The
-          key can be a single character ("x"), a control key ("^X", "C-x"),
-          a meta key ("M-x"), or a three-digit decimal ASCII code.
 
-               For example:
 
 
+          NetHack 3.7                                       January 6, 2021
 
 
 
-          NetHack 3.7                                       January 6, 2021
 
 
+          NetHack Guidebook                                              81
 
 
 
-          NetHack Guidebook                                              81
+          9.9.  Changing Key Bindings
 
+               It is possible to change the default key  bindings  of  some
+          special  commands,  menu accelerator keys, and extended commands,
+          by using BIND stanzas in the configuration file.  Format is  key,
+          followed  by  the  command to bind to, separated by a colon.  The
+          key can be a single character ("x"), a control key ("^X", "C-x"),
+          a meta key ("M-x"), or a three-digit decimal ASCII code.
 
+               For example:
 
                BIND=^X:getpos.autodescribe
                BIND={:menu_first_page
                BIND=v:loot
 
           Extended command keys
-            You can bind multiple keys to the same extended  command.   Un-
-            bind  a  key by using "nothing" as the extended command to bind
-            to.  You can also bind the "<esc>",  "<enter>",  and  "<space>"
+            You  can  bind multiple keys to the same extended command.  Un-
+            bind a key by using "nothing" as the extended command  to  bind
+            to.   You  can  also bind the "<esc>", "<enter>", and "<space>"
             keys.
 
           Menu accelerator keys
-            The  menu  control  or accelerator keys can also be rebound via
-            OPTIONS lines in the configuration file.  You cannot  bind  ob-
+            The menu control or accelerator keys can also  be  rebound  via
+            OPTIONS  lines  in the configuration file.  You cannot bind ob-
             ject symbols into menu accelerators.
 
           Special command keys
-            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
+            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.
 
           count
-            Prefix  key  to  start  a  count, to repeat a command this many
+            Prefix key to start a count, to  repeat  a  command  this  many
             times.  With number_pad only.  Default is `n'.
 
           doinv
             Prefix key to force fight a direction.  Default is `F'.
 
           fight.numpad
-            Prefix key to force fight a direction.  With  number_pad  only.
+            Prefix  key  to force fight a direction.  With number_pad only.
             Default is `-'.
 
           getdir.help
-            When  asked for a direction, the key to show the help.  Default
+            When asked for a direction, the key to show the help.   Default
             is `?'.
 
           getdir.self
-            When asked for a direction, the key to  target  yourself.   De-
-            fault is `.'.
-
-          getdir.self2
             When  asked  for  a direction, the key to target yourself.  De-
-            fault is `s'.
-
-          getpos.autodescribe
-            When asked for a location, the key to toggle autodescribe.  De-
-            fault is `#'.
-
-          getpos.all.next
-            When  asked  for  a  location,  the  key  to go to next closest
+            fault is `.'.
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
-            interesting thing.  Default is `a'.
+          getdir.self2
+            When asked for a direction, the key to  target  yourself.   De-
+            fault is `s'.
+
+          getpos.autodescribe
+            When asked for a location, the key to toggle autodescribe.  De-
+            fault is `#'.
+
+          getpos.all.next
+            When asked for a location, the key to go to next closest inter-
+            esting thing.  Default is `a'.
 
           getpos.all.prev
-            When asked for a location, the key to go  to  previous  closest
+            When  asked  for  a location, the key to go to previous closest
             interesting thing.  Default is `A'.
 
           getpos.door.next
-            When  asked  for a location, the key to go to next closest door
+            When asked for a location, the key to go to next  closest  door
             or doorway.  Default is `d'.
 
           getpos.door.prev
-            When asked for a location, the key to go  to  previous  closest
+            When  asked  for  a location, the key to go to previous closest
             door or doorway.  Default is `D'.
 
           getpos.help
-            When  asked  for  a location, the key to show help.  Default is
+            When asked for a location, the key to show  help.   Default  is
             `?'.
 
           getpos.mon.next
-            When asked for a location, the key to go to next  closest  mon-
+            When  asked  for a location, the key to go to next closest mon-
             ster.  Default is `m'.
 
           getpos.mon.prev
-            When  asked  for  a location, the key to go to previous closest
+            When asked for a location, the key to go  to  previous  closest
             monster.  Default is `M'.
 
           getpos.obj.next
-            When asked for a location, the key to go to  next  closest  ob-
+            When  asked  for  a location, the key to go to next closest ob-
             ject.  Default is `o'.
 
           getpos.obj.prev
-            When  asked  for  a location, the key to go to previous closest
+            When asked for a location, the key to go  to  previous  closest
             object.  Default is `O'.
 
           getpos.menu
-            When asked for a location, and using one of the next or  previ-
-            ous  keys  to  cycle through targets, toggle showing a menu in-
+            When  asked for a location, and using one of the next or previ-
+            ous keys to cycle through targets, toggle showing  a  menu  in-
             stead.  Default is `!'.
 
           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
+            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 `*'.
 
-          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 `"'.
-
-          getpos.pick
-            When  asked for a location, the key to choose the location, and
-            possibly ask for more info.  Default is `.'.
-
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
-          getpos.pick.once
+          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 `"'.
+
+          getpos.pick
             When asked for a location, the key to choose the location,  and
+            possibly ask for more info.  Default is `.'.
+
+          getpos.pick.once
+            When  asked for a location, the key to choose the location, and
             skip asking for more info.  Default is `,'.
 
           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.   De-
+            asking  for  more info, and exit the location asking loop.  De-
             fault is `;'.
 
           getpos.pick.verbose
-            When  asked for a location, the key to choose the location, and
+            When asked for a location, the key to choose the location,  and
             show more info without asking.  Default is `:'.
 
           getpos.self
             fault is `@'.
 
           getpos.unexplored.next
-            When  asked for a location, the key to go to next closest unex-
+            When asked for a location, the key to go to next closest  unex-
             plored location.  Default is `x'.
 
           getpos.unexplored.prev
-            When asked for a location, the key to go  to  previous  closest
+            When  asked  for  a location, the key to go to previous closest
             unexplored location.  Default is `X'.
 
           getpos.valid
-            When  asked  for a location, the key to go to show valid target
+            When asked for a location, the key to go to show  valid  target
             locations.  Default is `$'.
 
           getpos.valid.next
-            When asked for a location, the key to go to next closest  valid
+            When  asked for a location, the key to go to next closest valid
             location.  Default is `z'.
 
           getpos.valid.prev
-            When  asked  for  a location, the key to go to previous closest
+            When asked for a location, the key to go  to  previous  closest
             valid location.  Default is `Z'.
 
           nopickup
           redraw
             Key to redraw the screen.  Default is `^R'.
 
-          redraw.numpad
-            Key to redraw the screen.  With number_pad  only.   Default  is
-            `^L'.
 
-          repeat
-            Key to repeat previous command.  Default is `^A'.
 
-          reqmenu
-            Prefix key to request menu from some commands.  Default is `m'.
 
+          NetHack 3.7                                       January 6, 2021
 
 
 
-          NetHack 3.7                                       January 6, 2021
 
 
+          NetHack Guidebook                                              84
 
 
 
-          NetHack Guidebook                                              84
+          redraw.numpad
+            Key  to  redraw  the screen.  With number_pad only.  Default is
+            `^L'.
 
+          repeat
+            Key to repeat previous command.  Default is `^A'.
 
+          reqmenu
+            Prefix key to request menu from some commands.  Default is `m'.
 
           run
             Prefix key to run towards a direction.  Default is `G'.
 
           run.nopickup
-            Prefix  key to run towards a direction without picking up items
+            Prefix key to run towards a direction without picking up  items
             on the way.  Default is `M'.
 
           run.numpad
             Prefix key to run towards a direction.  With number_pad only.
 
-            Default is `5' when number_pad is set  to  1  or  3,  otherwise
+            Default  is  `5'  when  number_pad  is set to 1 or 3, otherwise
             `M-5' when it is set to 2 or 4.
 
           rush
           rush.numpad
             Prefix key to rush towards a direction.  With number_pad only.
 
-            Default  is  `M-5'  when number_pad is set to 1 or 3, otherwise
+            Default is `M-5' when number_pad is set to 1  or  3,  otherwise
             `5' when it is set to 2 or 4.
 
           9.10.  Configuring Message Types
                You can change the way the messages are shown in the message
           area, when the message matches a user-defined pattern.
 
-               In  general,  the configuration file entries to describe the
+               In general, the configuration file entries to  describe  the
           message types look like this: MSGTYPE=type "pattern"
 
           type    - how the message should be shown;
             show  - show message normally;
             hide  - never show the message;
             stop  - wait for user with more-prompt;
-            norep - show the message once, but not again if no  other  mes-
+            norep - show  the  message once, but not again if no other mes-
                     sage is shown in between.
 
-            Here's  an  example  of  message types using NetHack's internal
-            pattern matching facility:
 
-                 MSGTYPE=stop "You feel hungry."
-                 MSGTYPE=hide "You displaced *."
 
-            specifies that whenever a message "You feel hungry"  is  shown,
-            the  user  is prompted with more-prompt, and a message matching
-            "You displaced <something>." is not shown at all.
 
+          NetHack 3.7                                       January 6, 2021
 
 
 
-          NetHack 3.7                                       January 6, 2021
 
 
+          NetHack Guidebook                                              85
 
 
 
-          NetHack Guidebook                                              85
+            Here's an example of message  types  using  NetHack's  internal
+            pattern matching facility:
 
+                 MSGTYPE=stop "You feel hungry."
+                 MSGTYPE=hide "You displaced *."
 
+            specifies  that  whenever a message "You feel hungry" is shown,
+            the user is prompted with more-prompt, and a  message  matching
+            "You displaced <something>." is not shown at all.
 
-            The order of the defined MSGTYPE lines is important;  the  last
-            matching  rule  is used. Put the general case first, exceptions
+            The  order  of the defined MSGTYPE lines is important; the last
+            matching rule is used. Put the general case  first,  exceptions
             below them.
 
           9.11.  Configuring Menu Colors
 
                Some platforms allow you to define colors used in menu lines
-          when  the  line matches a user-defined pattern.  At this time the
+          when the line matches a user-defined pattern.  At this  time  the
           tty, curses, win32tty and win32gui interfaces support this.
 
-               In general, the configuration file entries to  describe  the
+               In  general,  the configuration file entries to describe the
           menu color mappings look like this:
 
                MENUCOLOR="pattern"=color&attribute
 
                  pattern    - the pattern to match;
-                 color      - the  color to use for lines matching the pat-
+                 color      - the color to use for lines matching the  pat-
                               tern;
-                 attribute  - the attribute to use for lines  matching  the
-                              pattern.  The  attribute  is optional, and if
+                 attribute  - the  attribute  to use for lines matching the
+                              pattern. The attribute is  optional,  and  if
                               left out, you must also leave out the preced-
-                              ing  ampersand.   If no attribute is defined,
+                              ing ampersand.  If no attribute  is  defined,
                               no attribute is used.
 
             The pattern should be a regular expression.
 
-            Allowed colors are black, red,  green,  brown,  blue,  magenta,
-            cyan,  gray, orange, light-green, yellow, light-blue, light-ma-
-            genta, light-cyan, and white.  And no-color, the default  fore-
-            ground  color,  which  isn't necessarily the same as any of the
+            Allowed  colors  are  black,  red, green, brown, blue, magenta,
+            cyan, gray, orange, light-green, yellow, light-blue,  light-ma-
+            genta,  light-cyan, and white.  And no-color, the default fore-
+            ground color, which isn't necessarily the same as  any  of  the
             other colors.
 
-            Allowed attributes are none, bold, dim, underline,  blink,  and
-            inverse.   "Normal"  is  a  synonym  for "none".  Note that the
+            Allowed  attributes  are none, bold, dim, underline, blink, and
+            inverse.  "Normal" is a synonym  for  "none".   Note  that  the
             platform used may interpret the attributes any way it wants.
 
-            Here's an example of menu colors using NetHack's internal  pat-
+            Here's  an example of menu colors using NetHack's internal pat-
             tern matching facility:
 
                  MENUCOLOR="* blessed *"=green
                  MENUCOLOR="* cursed *"=red
                  MENUCOLOR="* cursed *(being worn)"=red&underline
 
-            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  under-
-            lined.  You can have multiple MENUCOLOR entries in your config-
-            uration file, and the last MENUCOLOR line that matches  a  menu
-            line will be used for the line.
-
-               Note that if you intend to have one or more color specifica-
-          tions match " uncursed ", you will probably want to turn the  im-
-          plicit_uncursed option off so that all items known to be uncursed
+            specifies that any menu line with " blessed " contained  in  it
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+            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 under-
+            lined.  You can have multiple MENUCOLOR entries in your config-
+            uration  file,  and the last MENUCOLOR line that matches a menu
+            line will be used for the line.
+
+               Note that if you intend to have one or more color specifica-
+          tions  match " uncursed ", you will probably want to turn the im-
+          plicit_uncursed option off so that all items known to be uncursed
           are actually displayed with the "uncursed" description.
 
           9.12.  Configuring User Sounds
 
-               Some platforms allow you to define sound files to be  played
-          when  a  message that matches a user-defined pattern is delivered
+               Some  platforms allow you to define sound files to be played
+          when a message 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.
 
-               The  following  configuration  file  entries are relevant to
+               The following configuration file  entries  are  relevant  to
           mapping user sounds to messages:
 
           SOUNDDIR
             The directory that houses the sound files to be played.
 
           SOUND
-            An entry that maps a sound file  to  a  user-specified  message
-            pattern.   Each  SOUND  entry is broken down into the following
+            An  entry  that  maps  a sound file to a user-specified message
+            pattern.  Each SOUND entry is broken down  into  the  following
             parts:
 
             MESG        - message window mapping (the only one supported in
                           3.6);
             pattern     - the pattern to match;
             sound file  - the sound file to play;
-            volume      - the  volume  to  be  set  while playing the sound
+            volume      - the volume to be  set  while  playing  the  sound
                           file;
-            sound index - optional; the  index  corresponding  to  a  sound
+            sound  index - optional;  the  index  corresponding  to a sound
                           file.
 
             The pattern should be a POSIX extended regular expression.
           9.13.  Configuring Status Hilites
 
                Your copy of NetHack may have been compiled with support for
-          "Status Hilites".  If so, you can customize your game display  by
+          "Status  Hilites".  If so, you can customize your game display by
           setting thresholds to change the color or appearance of fields in
           the status display.
 
 
           OPTION=hilite_status:field-name/behavior/color&attributes
 
-               For example, the following line in your  configuration  file
-          will  cause  the  hitpoints  field to display in the color red if
-          your hitpoints drop to or below a threshold of 30%:
+               For  example,  the following line in your configuration file
+          will cause the hitpoints field to display in  the  color  red  if
 
-          OPTION=hilite_status:hitpoints/<=30%/red/normal
 
-          (That example is actually specifying red&normal for <=30% and no-
-          color&normal for >30%.)
+          NetHack 3.7                                       January 6, 2021
+
 
-               For  another  example, the following line in your configura-
-          tion file will cause wisdom to be displayed red if it  drops  and
-          green if it rises:
 
 
-          NetHack 3.7                                       January 6, 2021
 
+          NetHack Guidebook                                              87
 
 
 
+          your hitpoints drop to or below a threshold of 30%:
 
-          NetHack Guidebook                                              87
+          OPTION=hilite_status:hitpoints/<=30%/red/normal
 
+          (That example is actually specifying red&normal for <=30% and no-
+          color&normal for >30%.)
 
+               For another example, the following line in  your  configura-
+          tion  file  will cause wisdom to be displayed red if it drops and
+          green if it rises:
 
           OPTION=hilite_status:wisdom/down/red/up/green
 
-               Allowed  colors are black, red, green, brown, blue, magenta,
+               Allowed colors are black, red, green, brown, blue,  magenta,
           cyan, gray, orange, light-green, yellow, light-blue, light-magen-
-          ta,  light-cyan,  and  white.   And "no-color", the default fore-
+          ta, light-cyan, and white.  And  "no-color",  the  default  fore-
           ground color on the display, which is not necessarily the same as
           black or white or any of the other colors.
 
-               Allowed  attributes  are  none, bold, dim, underline, blink,
-          and inverse.  "Normal" is a synonym for "none"; they  should  not
+               Allowed attributes are none, bold,  dim,  underline,  blink,
+          and  inverse.   "Normal" is a synonym for "none"; they should not
           be used in 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.
+          them.   To specify multiple attributes, use `+' to combine those.
           For example: "magenta&inverse+dim".
 
-               Note  that  the  display may substitute or ignore particular
-          attributes depending upon its capabilities, and  in  general  may
-          interpret  the attributes any way it wants.  For example, on some
+               Note that the display may substitute  or  ignore  particular
+          attributes  depending  upon  its capabilities, and in general may
+          interpret the attributes any way it wants.  For example, on  some
           display systems a request for bold might yield blink or vice ver-
           sa.  On others, issuing an attribute request while another is al-
-          ready set up will replace the earlier attribute rather than  com-
-          bine  with  it.   Since NetHack issues attribute requests sequen-
+          ready  set up will replace the earlier attribute rather than com-
+          bine with it.  Since NetHack issues  attribute  requests  sequen-
           tially (at least with the tty interface) rather than all at once,
           the only way a situation like that can be controlled is to speci-
           fy just one attribute.
 
-               You can  adjust  the  appearance  of  the  following  status
+               You  can  adjust  the  appearance  of  the  following status
           fields:
                      title       dungeon-level   experience-level
                     strength         gold           experience
                     charisma      armor-class        condition
                    alignment                           score
 
-            The  pseudo-field  "characteristics" can be used to set all six
-            of Str, Dex, Con, Int, Wis, and Cha  at  once.   "HD"  is  "hit
-            dice",  an  approximation  of  experience  level displayed when
-            polymorphed.  "experience", "time", and "score" are  condition-
+            The pseudo-field "characteristics" can be used to set  all  six
+            of  Str,  Dex,  Con,  Int,  Wis, and Cha at once.  "HD" is "hit
+            dice", an approximation  of  experience  level  displayed  when
+            polymorphed.   "experience", "time", and "score" are condition-
             ally displayed depending upon your other option settings.
 
-            Instead  of  a behavior, "condition" takes the following condi-
-            tion flags: stone, slime,  strngl,  foodpois,  termill,  blind,
-            deaf,  stun, conf, hallu, lev, fly, and ride.  You can use "ma-
-            jor_troubles" as an  alias  for  stone  through  termill,  "mi-
-            nor_troubles" for blind through hallu, "movement" for lev, fly,
-            and ride, and "all" for every condition.
-
-            Allowed behaviors are "always", "up", "down", "changed", a per-
-            centage or absolute number threshold, or text to match against.
-
-
 
           NetHack 3.7                                       January 6, 2021
 
 
 
 
+            Instead of a behavior, "condition" takes the  following  condi-
+            tion  flags:  stone,  slime,  strngl, foodpois, termill, blind,
+            deaf, stun, conf, hallu, lev, fly, and ride.  You can use  "ma-
+            jor_troubles"  as  an  alias  for  stone  through termill, "mi-
+            nor_troubles" for blind through hallu, "movement" for lev, fly,
+            and ride, and "all" for every condition.
+
+            Allowed behaviors are "always", "up", "down", "changed", a per-
+            centage or absolute number threshold, or text to match against.
+
                * "always" will set the default attributes for that field.
 
-               * "up",  "down"  set the field attributes for when the field
-                 value changes upwards or downwards.  This attribute  times
+               * "up", "down" set the field attributes for when  the  field
+                 value  changes upwards or downwards.  This attribute times
                  out after statushilites turns.
 
                * "changed" sets the field attribute for when the field val-
-                 ue changes.  This attribute times out after  statushilites
-                 turns.   (If a field has both a "changed" rule and an "up"
-                 or "down" rule which matches a change in the field's  val-
+                 ue  changes.  This attribute times out after statushilites
+                 turns.  (If a field has both a "changed" rule and an  "up"
+                 or  "down" rule which matches a change in the field's val-
                  ue, the "up" or "down" one takes precedence.)
 
-               * percentage  sets  the field attribute when the field value
-                 matches the percentage.  It is specified as a  number  be-
-                 tween  0  and 100, followed by `%' (percent sign).  If the
-                 percentage is prefixed with `<=' or `>=', it also  matches
-                 when  value  is below or above the percentage.  Use prefix
-                 `<' or `>' to match when strictly below  or  above.   (The
-                 numeric  limit  is  relaxed  slightly  for those: >-1% and
-                 <101% are allowed.)  Only four fields  support  percentage
-                 rules.    Percentages  for  "hitpoints"  and  "power"  are
-                 straightforward; they're based on the corresponding  maxi-
-                 mum  field.   Percentage  highlight rules are also allowed
+               * percentage sets the field attribute when the  field  value
+                 matches  the  percentage.  It is specified as a number be-
+                 tween 0 and 100, followed by `%' (percent sign).   If  the
+                 percentage  is prefixed with `<=' or `>=', it also matches
+                 when value is below or above the percentage.   Use  prefix
+                 `<'  or  `>'  to match when strictly below or above.  (The
+                 numeric limit is relaxed  slightly  for  those:  >-1%  and
+                 <101%  are  allowed.)  Only four fields support percentage
+                 rules.   Percentages  for  "hitpoints"  and  "power"   are
+                 straightforward;  they're based on the corresponding maxi-
+                 mum field.  Percentage highlight rules  are  also  allowed
                  for "experience level" and "experience points" (valid when
                  the showexp option is enabled).  For those, the percentage
                  is based on the progress from the start of the current ex-
                  perience level to the start of the next level.  So if lev-
-                 el 2 starts at 20 points and level 3 starts at 40  points,
-                 having  30  points  is  50% and 35 points is 75%.  100% is
-                 unattainable for experience because you'll  gain  a  level
+                 el  2 starts at 20 points and level 3 starts at 40 points,
+                 having 30 points is 50% and 35 points  is  75%.   100%  is
+                 unattainable  for  experience  because you'll gain a level
                  and the calculations will be reset for that new level, but
-                 a rule for =100% is allowed and matches the  special  case
+                 a  rule  for =100% is allowed and matches the special case
                  of being exactly 1 experience point short of the next lev-
                  el.
 
-               * absolute value sets the attribute  when  the  field  value
-                 matches  that number.  The number must be 0 or higher, ex-
-                 cept for "armor-class' which allows negative  values,  and
-                 may  optionally be preceded by `='.  If the number is pre-
-                 ceded by `<=' or `>=' instead, it also matches when  value
-                 is  below  or  above.   If  the prefix is `<' or `>', only
+               * absolute  value  sets  the  attribute when the field value
+                 matches that number.  The number must be 0 or higher,  ex-
+                 cept  for  "armor-class' which allows negative values, and
+                 may optionally be preceded by `='.  If the number is  pre-
+                 ceded  by `<=' or `>=' instead, it also matches when value
+                 is below or above.  If the prefix  is  `<'  or  `>',  only
                  match when strictly above or below.
 
-               * text match sets the attribute when the field value matches
-                 the  text.  Text matches can only be used for "alignment",
-                 "carrying-capacity", "hunger", "dungeon-level",  and  "ti-
-                 tle".   For  title,  only the role's rank title is tested;
-                 the character's name is ignored.
-
-               The in-game options menu can help you determine the  correct
-          syntax for a configuration file.
 
-               The  whole  feature  can  be disabled by setting option sta-
-          tushilites to 0.
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+               * text match sets the attribute when the field value matches
+                 the text.  Text matches can only be used for  "alignment",
+                 "carrying-capacity",  "hunger",  "dungeon-level", and "ti-
+                 tle".  For title, only the role's rank  title  is  tested;
+                 the character's name is ignored.
+
+               The  in-game options menu can help you determine the correct
+          syntax for a configuration file.
+
+               The whole feature can be disabled  by  setting  option  sta-
+          tushilites to 0.
+
                Example hilites:
 
                OPTION=hilite_status: gold/up/yellow/down/brown
 
                NetHack can load entire symbol sets from the symbol file.
 
-               The options that are used to select a particular symbol  set
+               The  options that are used to select a particular symbol set
           from the symbol file are:
 
           symset
             Set the name of the symbol set that you want to load.
 
           roguesymset
-            Set  the  name of the symbol set that you want to load for dis-
+            Set the name of the symbol set that you want to load  for  dis-
             play on the rogue level.
 
-               You can also override one or more symbols using the  SYMBOLS
-          and  ROGUESYMBOLS configuration file options.  Symbols are speci-
+               You  can also override one or more symbols using the SYMBOLS
+          and ROGUESYMBOLS configuration file options.  Symbols are  speci-
           fied 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.  Thus  \  needs
-          to  be represented as \\.  The special prefix form \m switches on
-          the meta bit in the symbol value, and the  ^  prefix  causes  the
+          value string in conventional C fashion.  This means that \  is  a
+          prefix  to  take the following character literally.  Thus \ needs
+          to be represented as \\.  The special prefix form \m switches  on
+          the  meta  bit  in  the symbol value, and the ^ prefix causes the
           following character to be treated as a control character.
 
           NetHack Symbols
           -----------------------------------------------------------------
              S_air                  (air)
           _  S_altar                (altar)
-          "  S_amulet               (amulet)
-          A  S_angel                (angelic being)
-          a  S_ant                  (ant or other insect)
-          ^  S_anti_magic_trap      (anti-magic field)
-          [  S_armor                (suit or piece of armor)
-          [  S_armour               (suit or piece of armor)
-          ^  S_arrow_trap           (arrow trap)
-          0  S_ball                 (iron ball)
-          #  S_bars                 (iron bars)
-          B  S_bat                  (bat or bird)
-          ^  S_bear_trap            (bear trap)
-          -  S_blcorn               (bottom left corner)
 
 
 
 
 
 
+          "  S_amulet               (amulet)
+          A  S_angel                (angelic being)
+          a  S_ant                  (ant or other insect)
+          ^  S_anti_magic_trap      (anti-magic field)
+          [  S_armor                (suit or piece of armor)
+          [  S_armour               (suit or piece of armor)
+          ^  S_arrow_trap           (arrow trap)
+          0  S_ball                 (iron ball)
+          #  S_bars                 (iron bars)
+          B  S_bat                  (bat or bird)
+          ^  S_bear_trap            (bear trap)
+          -  S_blcorn               (bottom left corner)
           b  S_blob                 (blob)
           +  S_book                 (spellbook)
           )  S_boomleft             (boomerang open left)
           {  S_fountain             (fountain)
           F  S_fungus               (fungus or mold)
           *  S_gem                  (gem or rock)
-             S_ghost                (ghost)
-          H  S_giant                (giant humanoid)
-          G  S_gnome                (gnome)
-          '  S_golem                (golem)
-          |  S_grave                (grave)
-          g  S_gremlin              (gremlin)
-          -  S_hbeam                (horizontal beam [zap animation])
-          #  S_hcdbridge            (horizontal raised drawbridge)
-          +  S_hcdoor               (closed door in horizontal wall)
-          .  S_hodbridge            (horizontal lowered drawbridge)
-          |  S_hodoor               (open door in horizontal wall)
-          ^  S_hole                 (hole)
 
 
 
 
 
 
+             S_ghost                (ghost)
+          H  S_giant                (giant humanoid)
+          G  S_gnome                (gnome)
+          '  S_golem                (golem)
+          |  S_grave                (grave)
+          g  S_gremlin              (gremlin)
+          -  S_hbeam                (horizontal beam [zap animation])
+          #  S_hcdbridge            (horizontal raised drawbridge)
+          +  S_hcdoor               (closed door in horizontal wall)
+          .  S_hodbridge            (horizontal lowered drawbridge)
+          |  S_hodoor               (open door in horizontal wall)
+          ^  S_hole                 (hole)
           @  S_human                (human or elf)
           h  S_humanoid             (humanoid)
           -  S_hwall                (horizontal wall)
           =  S_ring                 (ring)
           `  S_rock                 (boulder or statue)
           r  S_rodent               (rodent)
-          ^  S_rolling_boulder_trap (rolling boulder trap)
-          .  S_room                 (floor of a room)
-          /  S_rslant               (diagonal beam [zap animation])
-          ^  S_rust_trap            (rust trap)
-          R  S_rustmonst            (rust monster or disenchanter)
-          ?  S_scroll               (scroll)
-          #  S_sink                 (sink)
-          ^  S_sleeping_gas_trap    (sleeping gas trap)
-          S  S_snake                (snake)
-          s  S_spider               (arachnid or centipede)
-          ^  S_spiked_pit           (spiked pit)
-          ^  S_squeaky_board        (squeaky board)
 
 
 
 
 
 
+          ^  S_rolling_boulder_trap (rolling boulder trap)
+          .  S_room                 (floor of a room)
+          /  S_rslant               (diagonal beam [zap animation])
+          ^  S_rust_trap            (rust trap)
+          R  S_rustmonst            (rust monster or disenchanter)
+          ?  S_scroll               (scroll)
+          #  S_sink                 (sink)
+          ^  S_sleeping_gas_trap    (sleeping gas trap)
+          S  S_snake                (snake)
+          s  S_spider               (arachnid or centipede)
+          ^  S_spiked_pit           (spiked pit)
+          ^  S_squeaky_board        (squeaky board)
           0  S_ss1                  (magic shield 1 of 4)
           #  S_ss2                  (magic shield 2 of 4)
           @  S_ss3                  (magic shield 3 of 4)
           ^  S_vibrating_square     (vibrating square)
           .  S_vodbridge            (vertical lowered drawbridge)
           -  S_vodoor               (open door in vertical wall)
-          v  S_vortex               (vortex)
-          |  S_vwall                (vertical wall)
-          /  S_wand                 (wand)
-          }  S_water                (water)
-          )  S_weapon               (weapon)
-          "  S_web                  (web)
-          w  S_worm                 (worm)
-          ~  S_worm_tail            (long worm tail)
-          W  S_wraith               (wraith)
-          x  S_xan                  (xan or other extraordinary insect)
-          X  S_xorn                 (xorn)
-          Y  S_yeti                 (apelike creature)
 
 
 
 
 
 
+          v  S_vortex               (vortex)
+          |  S_vwall                (vertical wall)
+          /  S_wand                 (wand)
+          }  S_water                (water)
+          )  S_weapon               (weapon)
+          "  S_web                  (web)
+          w  S_worm                 (worm)
+          ~  S_worm_tail            (long worm tail)
+          W  S_wraith               (wraith)
+          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)
           Notes:
 
           * 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 en-
+            space  character, except for S_pet_override and S_hero_override
+            which don't have any default value and can only be used if  en-
             abled in the "sysconf" file.
 
-          * 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  de-
-            pict.   So S_rock is only used for boulders and not used at all
+          * 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 de-
+            pict.  So S_rock is only used for boulders and not used at  all
             if overridden by the more specific S_boulder.
 
           9.15.  Configuring NetHack for Play by the Blind
 
-               NetHack can be set up to use only standard ASCII  characters
-          for  making  maps of the dungeons. This makes the MS-DOS versions
-          of NetHack completely accessible to  the  blind  who  use  speech
-          and/or  Braille access technologies.  Players will require a good
-          working knowledge of their screen-reader's review  features,  and
-          will  have  to  know  how to navigate horizontally and vertically
-          character by character. They will also find the search  capabili-
-          ties  of their screen-readers to be quite valuable. Be certain to
-          examine this Guidebook before playing so you have  an  idea  what
-          the  screen layout is like. You'll also need to be able to locate
-          the PC cursor. It is always  where  your  character  is  located.
-          Merely  searching for an @-sign will not always find your charac-
+               NetHack  can be set up to use only standard ASCII characters
+          for making maps of the dungeons. This makes the  MS-DOS  versions
+          of  NetHack  completely  accessible  to  the blind who use speech
+          and/or Braille access technologies.  Players will require a  good
+          working  knowledge  of their screen-reader's review features, and
+          will have to know how to  navigate  horizontally  and  vertically
+          character  by character. They will also find the search capabili-
+          ties of their screen-readers to be quite valuable. Be certain  to
+          examine  this  Guidebook  before playing so you have an idea what
+          the screen layout is like. You'll also need to be able to  locate
+          the  PC  cursor.  It  is  always where your character is located.
+          Merely searching for an @-sign will not always find your  charac-
           ter since there are other humanoids represented by the same sign.
-          Your  screen-reader  should  also have a function which gives you
-          the row and column of your  review  cursor  and  the  PC  cursor.
-          These  co-ordinates  are  often useful in giving players a better
+          Your screen-reader should also have a function  which  gives  you
+          the  row  and  column  of  your  review cursor and the PC cursor.
+          These co-ordinates are often useful in giving  players  a  better
           sense of the overall location of items on the screen.
 
-               NetHack can also be compiled with support  for  sending  the
-          game  messages  to  an external program, such as a text-to-speech
-          synthesizer.  If the "#version" extended command shows  "external
-          program  as  a  message  handler", your NetHack has been compiled
-          with the capability.  When compiling NetHack from source on Linux
-          and  other POSIX systems, define MSGHANDLER to enable it.  To use
-          the capability, set the environment  variable  NETHACK_MSGHANDLER
-          to an executable, which will be executed with the game message as
-          the program's only parameter.
-
-               While it is not difficult for experienced users to edit  the
-          defaults.nh  file  to accomplish this, novices may find this task
-          somewhat daunting.  Included within the "symbols" file of all of-
-          ficial distributions of NetHack is a symset called NHAccess.  Se-
-          lecting that symset in your configuration  file  will  cause  the
-          game  to run in a manner accessible to the blind.  After you have
+               NetHack  can  also  be compiled with support for sending the
+          game messages to an external program, such  as  a  text-to-speech
+          synthesizer.   If the "#version" extended command shows "external
+          program as a message handler", your  NetHack  has  been  compiled
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
-          gained some experience with the game and with editing files,  you
+          with the capability.  When compiling NetHack from source on Linux
+          and other POSIX systems, define MSGHANDLER to enable it.  To  use
+          the  capability,  set the environment variable NETHACK_MSGHANDLER
+          to an executable, which will be executed with the game message as
+          the program's only parameter.
+
+               While  it is not difficult for experienced users to edit the
+          defaults.nh file to accomplish this, novices may find  this  task
+          somewhat daunting.  Included within the "symbols" file of all of-
+          ficial distributions of NetHack is a symset called NHAccess.  Se-
+          lecting  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 SYMBOLS= and ROGUESYMBOLS= in your
           configuration file to better suit your preferences.  See the pre-
-          vious  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 accessibility is en-
+          vious 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  accessibility  is  en-
           abled in the sysconf file.
 
-               The most crucial settings to make the game  more  accessible
+               The  most  crucial settings to make the game more accessible
           are:
 
           symset:NHAccess
             Load a symbol set appropriate for use by blind players.
 
           roguesymset:NHAccess
-            Load  a  symbol set for the rogue level that is appropriate for
+            Load a symbol set for the rogue level that is  appropriate  for
             use by blind players.
 
           menustyle:traditional
             Show menus on a cleared screen and aligned to the left edge.
 
           number_pad
-            A lot of speech access programs use the  number-pad  to  review
+            A  lot  of  speech access programs use the number-pad to review
             the screen.  If this is the case, disable the number_pad option
             and use the traditional Rogue-like commands.
 
           autodescribe
-            Automatically describe the terrain under the cursor  when  tar-
+            Automatically  describe  the terrain under the cursor when tar-
             geting.
 
           mention_walls
-            Give  feedback  messages  when  walking  towards a wall or when
+            Give feedback messages when walking  towards  a  wall  or  when
             travel command was interrupted.
 
           whatis_coord:compass
-            When targeting with cursor, describe the cursor  position  with
+            When  targeting  with cursor, describe the cursor position with
             coordinates relative to your character.
 
-          whatis_filter:area
-            When  targeting  with cursor, filter possible locations so only
-            those in the same area (eg. same room, or  same  corridor)  are
-            considered.
-
-          whatis_moveskip
-            When  targeting  with cursor and using fast-move, skip the same
-            glyphs instead of moving 8 units at a time.
 
-          nostatus_updates
-            Prevent updates to the  status  lines  at  the  bottom  of  the
-            screen,  if  your screen-reader reads those lines. The same in-
-            formation can be seen via the "#attributes" command.
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+          whatis_filter:area
+            When targeting with cursor, filter possible locations  so  only
+            those  in  the  same area (eg. same room, or same corridor) are
+            considered.
+
+          whatis_moveskip
+            When targeting with cursor and using fast-move, skip  the  same
+            glyphs instead of moving 8 units at a time.
+
+          nostatus_updates
+            Prevent  updates  to  the  status  lines  at  the bottom of the
+            screen, if your screen-reader reads those lines. The  same  in-
+            formation can be seen via the "#attributes" command.
+
           9.16.  Global Configuration for System Administrators
 
-               If NetHack is compiled with the SYSCF option, a  system  ad-
-          ministrator  should set up a global configuration; this is a file
+               If  NetHack  is compiled with the SYSCF option, a system ad-
+          ministrator should set up a global configuration; this is a  file
           in the same format as the traditional per-user configuration file
           (see above).  This file should be named sysconf and placed in the
-          same directory as the other NetHack support files.   The  options
+          same  directory  as the other NetHack support files.  The options
           recognized in this file are listed below.  Any option not set us-
-          es a compiled-in default (which may not be appropriate  for  your
+          es  a  compiled-in default (which may not be appropriate for your
           system).
 
-            WIZARDS = A  space-separated list of user names who are allowed
+            WIZARDS = A space-separated list of user names who are  allowed
             to play in debug mode (commonly referred to as wizard mode).  A
             value of a single asterisk (*) allows anyone to start a game in
             debug mode.
             SHELLERS = A list of users who are allowed to use the shell es-
             cape command (!).  The syntax is the same as WIZARDS.
 
-            EXPLORERS = A  list of users who are allowed to use the explore
+            EXPLORERS = A list of users who are allowed to use the  explore
             mode.  The syntax is the same as WIZARDS.
 
             MAXPLAYERS = Limit the maximum number of games that can be run-
             ning at the same time.
 
             SAVEFORMAT = A list of up to two save file formats separated by
-            space.  The first format in the list will written  as  well  as
-            read.  The  second  format will be read only if no save file in
-            the first format exists.  Valid choices  are  "historical"  for
-            binary  writing of entire structs, "lendian" for binary writing
-            of each field in little-endian order, "ascii" for  writing  the
+            space.   The  first  format in the list will written as well as
+            read. The second format will be read only if no  save  file  in
+            the  first  format  exists.  Valid choices are "historical" for
+            binary writing of entire structs, "lendian" for binary  writing
+            of  each  field in little-endian order, "ascii" for writing the
             save file content in ascii text.
 
-            BONESFORMAT = A  list of up to two bones file formats separated
+            BONESFORMAT = A list of up to two bones file formats  separated
             by space.  The first format in the list will written as well as
-            read.  The second format will be read only if no bones files in
+            read. The second format will be read only if no bones files  in
             the first format exist.  Valid choices are "historical" for bi-
             nary writing of entire structs, "lendian" for binary writing of
-            each field in little-endian  order,  "ascii"  for  writing  the
+            each  field  in  little-endian  order,  "ascii" for writing the
             bones file content in ascii text.
 
-            SUPPORT = A  string explaining how to get local support (no de-
-            fault value).
-
-            RECOVER = A string explaining how to recover  a  game  on  this
-            system (no default value).
 
-            SEDUCE = 0  or 1 to disable or enable, respectively, the SEDUCE
-            option.  When disabled, incubi and succubi behave like nymphs.
+          NetHack 3.7                                       January 6, 2021
 
-            CHECK_PLNAME = Setting this to 1 will make the EXPLORERS,  WIZ-
-            ARDS, and SHELLERS check for the player name instead of the us-
-            er's login name.
 
 
 
-          NetHack 3.7                                       January 6, 2021
 
+          NetHack Guidebook                                              96
 
 
 
+            SUPPORT = A string explaining how to get local support (no  de-
+            fault value).
 
-          NetHack Guidebook                                              96
+            RECOVER = A  string  explaining  how  to recover a game on this
+            system (no default value).
 
+            SEDUCE = 0 or 1 to disable or enable, respectively, the  SEDUCE
+            option.  When disabled, incubi and succubi behave like nymphs.
 
+            CHECK_PLNAME = Setting  this to 1 will make the EXPLORERS, WIZ-
+            ARDS, and SHELLERS check for the player name instead of the us-
+            er's login name.
 
             CHECK_SAVE_UID = 0 or 1 to disable or enable, respectively, the
-            UID  (used  identification  number) checking for save files (to
-            verify that the user who is  restoring  is  the  same  one  who
+            UID (used identification number) checking for  save  files  (to
+            verify  that  the  user  who  is  restoring is the same one who
             saved).
 
                The following options affect the score file:
 
             ENTRYMAX = Maximum number of entries in the score file.
 
-            POINTSMIN = Minimum  number  of  points  to get an entry in the
+            POINTSMIN = Minimum number of points to get  an  entry  in  the
             score file.
 
-            PERS_IS_UID = 0 or 1 to use user names or numeric userids,  re-
+            PERS_IS_UID = 0  or 1 to use user names or numeric userids, re-
             spectively, to identify unique people for the score file.
 
-            MAX_STATUENAME_RANK = Maximum  number  of score file entries to
+            MAX_STATUENAME_RANK = Maximum number of score file  entries  to
             use for random statue names (default is 10).
 
-            ACCESSIBILITY = 0 or 1 to disable or enable, respectively,  the
-            ability  for  players to set S_pet_override and S_hero_override
+            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.
 
-            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  loca-
+            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 loca-
             tions.
 
             DUMPLOGFILE = A  filename  where  the  end-of-game  dumplog  is
-            saved.  Not defining this will prevent dumplog from being  cre-
+            saved.   Not defining this will prevent dumplog from being cre-
             ated. Only available if your game is compiled with DUMPLOG. Al-
             lows the following placeholders:
 
             %T - current time, UNIX timestamp format
             %d - game start time, YYYYMMDDhhmmss format
             %D - current time, YYYYMMDDhhmmss format
-            %n - player name
-            %N - first character of player name
 
-          10.  Scoring
 
-               NetHack maintains a list of the top  scores  or  scorers  on
-          your machine, depending on how it is set up.  In the latter case,
-          each account on the machine can post only one  non-winning  score
-          on  this  list.   If  you  score higher than someone else on this
-          list, or better your previous score, you will be inserted in  the
-          proper  place  under your current name.  How many scores are kept
-          can also be set up when NetHack is compiled.
+          NetHack 3.7                                       January 6, 2021
 
 
 
-          NetHack 3.7                                       January 6, 2021
 
 
+          NetHack Guidebook                                              97
 
 
 
-          NetHack Guidebook                                              97
+            %n - player name
+            %N - first character of player name
 
+          10.  Scoring
 
+               NetHack  maintains  a  list  of the top scores or scorers on
+          your machine, depending on how it is set up.  In the latter case,
+          each  account  on the machine can post only one non-winning score
+          on this list.  If you score higher  than  someone  else  on  this
+          list,  or better your previous score, you will be inserted in the
+          proper place under your current name.  How many scores  are  kept
+          can also be set up when NetHack is compiled.
 
-               Your score is chiefly based upon  how  much  experience  you
+               Your  score  is  chiefly  based upon how much experience you
           gained, how much loot you accumulated, how deep you explored, and
           how the game ended.  If you quit the game, you escape with all of
-          your  gold  intact.   If, however, you get killed in the Mazes of
+          your gold intact.  If, however, you get killed in  the  Mazes  of
           Menace, the guild will only hear about 90% of your gold when your
-          corpse  is  discovered  (adventurers  have  been known to collect
-          finder's fees).  So, consider whether you want to take  one  last
-          hit  at  that  monster  and  possibly live, or quit and stop with
-          whatever you have.  If you quit, you keep all your gold,  but  if
+          corpse is discovered (adventurers  have  been  known  to  collect
+          finder's  fees).   So, consider whether you want to take one last
+          hit at that monster and possibly live,  or  quit  and  stop  with
+          whatever  you  have.  If you quit, you keep all your gold, but if
           you swing and live, you might find more.
 
-               If  you  just want to see what the current top players/games
+               If you just want to see what the current  top  players/games
           list is, you can type nethack -s all on most versions.
 
           11.  Explore mode
 
-               NetHack is an intricate and difficult game.   Novices  might
+               NetHack  is  an intricate and difficult game.  Novices might
           falter in fear, aware of their ignorance of the means to survive.
           Well, fear not.  Your dungeon comes equipped with an "explore" or
-          "discovery"  mode  that  enables  you  to keep old save files and
-          cheat death, at the paltry cost of not getting on the high  score
+          "discovery" mode that enables you to  keep  old  save  files  and
+          cheat  death, at the paltry cost of not getting on the high score
           list.
 
-               There  are  two  ways  of  enabling explore mode.  One is to
-          start the game with the -X command-line switch or with the  play-
-          mode:explore  option.   The  other is to issue the "#exploremode"
-          extended command while already playing the game.  Starting a  new
+               There are two ways of enabling  explore  mode.   One  is  to
+          start  the game with the -X command-line switch or with the play-
+          mode:explore option.  The other is to  issue  the  "#exploremode"
+          extended  command while already playing the game.  Starting a new
           game in explore mode provides your character with a wand of wish-
-          ing in initial inventory; switching during play  does  not.   The
-          other  benefits of explore mode are left for the trepid reader to
+          ing  in  initial  inventory; switching during play does not.  The
+          other benefits of explore mode are left for the trepid reader  to
           discover.
 
           11.1.  Debug mode
 
                Debug mode, also known as wizard mode, is undocumented aside
-          from  this  brief  description  and the various "debug mode only"
-          commands listed among the command descriptions.  It  is  intended
+          from this brief description and the  various  "debug  mode  only"
+          commands  listed  among the command descriptions.  It is intended
           for tracking down problems within the program rather than to pro-
-          vide god-like powers to your character, and players  who  attempt
-          debugging  are  expected  to figure out how to use it themselves.
-          It is initiated by starting the game  with  the  -D  command-line
-          switch or with the playmode:debug option.
-
-               For  some systems, the player must be logged in under a par-
-          ticular user name to be allowed to use debug  mode;  for  others,
-          the  hero  must  be given a particular character name (but may be
-          any role; there's no connection between  "wizard  mode"  and  the
-          Wizard  role).  Attempting to start a game in debug mode when not
-          allowed or not available will result in falling back  to  explore
-          mode instead.
-
-
-
-
+          vide  god-like  powers to your character, and players who attempt
+          debugging are expected to figure out how to  use  it  themselves.
+          It  is  initiated  by  starting the game with the -D command-line
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+          switch or with the playmode:debug option.
+
+               For some systems, the player must be logged in under a  par-
+          ticular  user  name  to be allowed to use debug mode; for others,
+          the hero must be given a particular character name  (but  may  be
+          any  role;  there's  no  connection between "wizard mode" and the
+          Wizard role).  Attempting to start a game in debug mode when  not
+          allowed  or  not available will result in falling back to explore
+          mode instead.
+
           12.  Credits
 
-               The  original  hack  game  was  modeled on the Berkeley UNIX
-          rogue game.  Large portions of  this  document  were  shamelessly
-          cribbed  from  A Guide to the Dungeons of Doom, by Michael C. Toy
-          and Kenneth C. R. C. Arnold.  Small portions  were  adapted  from
+               The original hack game was  modeled  on  the  Berkeley  UNIX
+          rogue  game.   Large  portions  of this document were shamelessly
+          cribbed from A Guide to the Dungeons of Doom, by Michael  C.  Toy
+          and  Kenneth  C.  R. C. Arnold.  Small portions were adapted from
           Further Exploration of the Dungeons of Doom, by Ken Arromdee.
 
                NetHack is the product of literally scores of people's work.
-          Main events in the course of the game development  are  described
+          Main  events  in the course of the game development are described
           below:
 
-               Jay  Fenlason  wrote the original Hack, with help from Kenny
+               Jay Fenlason wrote the original Hack, with help  from  Kenny
           Woodland, Mike Thome, and Jon Payne.
 
-               Andries Brouwer did a  major  re-write  while  at  Stichting
+               Andries  Brouwer  did  a  major  re-write while at Stichting
           Mathematisch Centrum (now Centrum Wiskunde & Informatica), trans-
-          forming Hack into a very different game.  He published  the  Hack
-          source  code  for  use  on UNIX systems by posting that to Usenet
+          forming  Hack  into a very different game.  He published the Hack
+          source code for use on UNIX systems by  posting  that  to  Usenet
           newsgroup net.sources (later renamed comp.sources) releasing ver-
           sion 1.0 in December of 1984, then versions 1.0.1, 1.0.2, and fi-
-          nally 1.0.3 in July of  1985.   Usenet  newsgroup  net.games.hack
-          (later    renamed    rec.games.hack,   eventually   replaced   by
+          nally  1.0.3  in  July  of 1985.  Usenet newsgroup net.games.hack
+          (later   renamed   rec.games.hack,   eventually    replaced    by
           rec.games.roguelike.nethack) was created for discussing it.
 
-               Don G. Kneller ported Hack 1.0.3 to Microsoft C and  MS-DOS,
-          producing  PC  HACK 1.01e, added support for DEC Rainbow graphics
-          in version 1.03g, and went on to produce at least four more  ver-
+               Don  G. Kneller ported Hack 1.0.3 to Microsoft C and MS-DOS,
+          producing PC HACK 1.01e, added support for DEC  Rainbow  graphics
+          in  version 1.03g, and went on to produce at least four more ver-
           sions (3.0, 3.2, 3.51, and 3.6; note that these are old Hack ver-
           sion numbers, not contemporary NetHack ones).
 
-               R. Black ported PC HACK 3.51 to  Lattice  C  and  the  Atari
+               R.  Black  ported  PC  HACK  3.51 to Lattice C and the Atari
           520/1040ST, producing ST Hack 1.03.
 
                Mike Stephenson merged these various versions back together,
-          incorporating many of the added features,  and  produced  NetHack
-          version  1.4 in 1987.  He then coordinated a cast of thousands in
+          incorporating  many  of  the added features, and produced NetHack
+          version 1.4 in 1987.  He then coordinated a cast of thousands  in
           enhancing and debugging NetHack 1.4 and released NetHack versions
-          2.2  and  2.3.   Like  Hack,  they were released by posting their
-          source code to Usenet where they remained  available  in  various
-          archives  accessible  via  ftp  and  uucp after expiring from the
+          2.2 and 2.3.  Like Hack, they  were  released  by  posting  their
+          source  code  to  Usenet where they remained available in various
+          archives accessible via ftp and  uucp  after  expiring  from  the
           newsgroup.
 
-               Later, Mike coordinated a major re-write of the game,  head-
-          ing  a  team which included Ken Arromdee, Jean-Christophe Collet,
-          Steve Creps, Eric Hendrickson, Izchak Miller,  Eric  S.  Raymond,
-          John  Rupley, Mike Threepoint, and Janet Walz, to produce NetHack
-          3.0c.
-
-               NetHack 3.0 was ported to the Atari by  Eric  R.  Smith,  to
-          OS/2  by  Timo Hakulinen, and to VMS by David Gentzel.  The three
-          of them and Kevin Darcy later joined the main NetHack Development
-          Team to produce subsequent revisions of 3.0.
 
 
 
 
 
 
-               Olaf  Seibert ported NetHack 2.3 and 3.0 to the Amiga.  Norm
-          Meluch, Stephen Spackman and Pierre  Martineau  designed  overlay
-          code  for  PC  NetHack 3.0.  Johnny Lee ported NetHack 3.0 to the
-          Macintosh.  Along with various other Dungeoneers, they  continued
-          to  enhance  the PC, Macintosh, and Amiga ports through the later
+               Later,  Mike coordinated a major re-write of the game, head-
+          ing a team which included Ken Arromdee,  Jean-Christophe  Collet,
+          Steve  Creps,  Eric  Hendrickson, Izchak Miller, Eric S. Raymond,
+          John Rupley, Mike Threepoint, and Janet Walz, to produce  NetHack
+          3.0c.
+
+               NetHack  3.0  was  ported  to the Atari by Eric R. Smith, to
+          OS/2 by Timo Hakulinen, and to VMS by David Gentzel.   The  three
+          of them and Kevin Darcy later joined the main NetHack Development
+          Team to produce subsequent revisions of 3.0.
+
+               Olaf Seibert ported NetHack 2.3 and 3.0 to the Amiga.   Norm
+          Meluch,  Stephen  Spackman  and Pierre Martineau designed overlay
+          code for PC NetHack 3.0.  Johnny Lee ported NetHack  3.0  to  the
+          Macintosh.   Along with various other Dungeoneers, they continued
+          to enhance the PC, Macintosh, and Amiga ports through  the  later
           revisions of 3.0.
 
-               Version 3.0 went through  ten  relatively  rapidly  released
-          "patch-level"  revisions.  Versions at the time were known as 3.0
-          for the base release and  variously  as  "3.0a"  through  "3.0j",
-          "3.0 patchlevel 1"   through   "3.0 patchlevel 10",  or  "3.0pl1"
+               Version  3.0  went  through  ten relatively rapidly released
+          "patch-level" revisions.  Versions at the time were known as  3.0
+          for  the  base  release  and  variously as "3.0a" through "3.0j",
+          "3.0 patchlevel 1"  through  "3.0 patchlevel 10",   or   "3.0pl1"
           through "3.0pl10" rather than 3.0.0 and 3.0.1 through 3.0.10; the
           three component numbering scheme began to be used with 3.1.0.
 
-               Headed  by  Mike Stephenson and coordinated by Izchak Miller
-          and Janet Walz, the NetHack Development Team which  now  included
-          Ken  Arromdee,  David Cohrs, Jean-Christophe Collet, Kevin Darcy,
-          Matt Day, Timo Hakulinen, Steve Linhart, Dean Luick, Pat  Rankin,
+               Headed by Mike Stephenson and coordinated by  Izchak  Miller
+          and  Janet  Walz, the NetHack Development Team which now included
+          Ken Arromdee, David Cohrs, Jean-Christophe Collet,  Kevin  Darcy,
+          Matt  Day, Timo Hakulinen, Steve Linhart, Dean Luick, Pat Rankin,
           Eric Raymond, and Eric Smith undertook a radical revision of 3.0.
           They re-structured the game's design, and re-wrote major parts of
-          the  code.   They added multiple dungeons, a new display, special
-          individual character quests, a new endgame  and  many  other  new
-          features,  and  produced NetHack 3.1.  Version 3.1.0 was released
+          the code.  They added multiple dungeons, a new  display,  special
+          individual  character  quests,  a  new endgame and many other new
+          features, and produced NetHack 3.1.  Version 3.1.0  was  released
           in January of 1993.
 
-               Ken Lorber, Gregg Wonderly and Greg Olson,  with  help  from
-          Richard  Addison,  Mike  Passaretti,  and Olaf Seibert, developed
+               Ken  Lorber,  Gregg  Wonderly and Greg Olson, with help from
+          Richard Addison, Mike Passaretti,  and  Olaf  Seibert,  developed
           NetHack 3.1 for the Amiga.
 
-               Norm Meluch and Kevin Smolkowski, with help from Carl  Sche-
+               Norm  Meluch and Kevin Smolkowski, with help from Carl Sche-
           lin, Stephen Spackman, Steve VanDevender, and Paul Winner, ported
           NetHack 3.1 to the PC.
 
                Jon W{tte and Hao-yang Wang, with help from Ross Brown, Mike
-          Engber,  David  Hairston, Michael Hamel, Jonathan Handler, Johnny
-          Lee, Tim Lennan, Rob Menke, and Andy Swanson,  developed  NetHack
+          Engber, David Hairston, Michael Hamel, Jonathan  Handler,  Johnny
+          Lee,  Tim  Lennan, Rob Menke, and Andy Swanson, developed NetHack
           3.1 for the Macintosh, porting it for MPW.  Building on their de-
           velopment, Bart House added a Think C port.
 
                Timo Hakulinen ported NetHack 3.1 to OS/2.  Eric Smith port-
-          ed  NetHack  3.1 to the Atari.  Pat Rankin, with help from Joshua
-          Delahunty, was responsible for the VMS version  of  NetHack  3.1.
+          ed NetHack 3.1 to the Atari.  Pat Rankin, with help  from  Joshua
+          Delahunty,  was  responsible  for the VMS version of NetHack 3.1.
           Michael Allison ported NetHack 3.1 to Windows NT.
 
-               Dean  Luick,  with  help from David Cohrs, developed NetHack
-          3.1 for X11.  It drew the map as text rather than graphically but
-          included  nh10.bdf,  an optionally used custom X11 font which has
-          tiny images in place of letters and punctuation, a  precursor  of
-          tiles.   Those  images don't extend to individual monster and ob-
-          ject types, just replacements for monster and object classes  (so
-          one  custom image for all "a" insects and another for all "[" ar-
-          mor and so forth, not separate images for beetles and ants or for
-          cloaks and boots).
-
-
 
           NetHack 3.7                                       January 6, 2021
 
 
 
 
-               Warwick  Allison  wrote  a  graphically displayed version of
-          NetHack for the Atari where the tiny pictures were  described  as
-          "icons"  and were distinct for specific types of monsters and ob-
+               Dean Luick, with help from David  Cohrs,  developed  NetHack
+          3.1 for X11.  It drew the map as text rather than graphically but
+          included nh10.bdf, an optionally used custom X11 font  which  has
+          tiny  images  in place of letters and punctuation, a precursor of
+          tiles.  Those images don't extend to individual monster  and  ob-
+          ject  types, just replacements for monster and object classes (so
+          one custom image for all "a" insects and another for all "["  ar-
+          mor and so forth, not separate images for beetles and ants or for
+          cloaks and boots).
+
+               Warwick Allison wrote a  graphically  displayed  version  of
+          NetHack  for  the Atari where the tiny pictures were described as
+          "icons" and were distinct for specific types of monsters and  ob-
           jects rather than just their classes.  He contributed them to the
-          NetHack  Development Team which rechristened them "tiles", origi-
-          nal usage which has subsequently been picked up by various  other
-          games.   NetHack's  tiles  support  was then implemented on other
-          platforms (initially MS-DOS but eventually Windows, Qt,  and  X11
+          NetHack Development Team which rechristened them "tiles",  origi-
+          nal  usage which has subsequently been picked up by various other
+          games.  NetHack's tiles support was  then  implemented  on  other
+          platforms  (initially  MS-DOS but eventually Windows, Qt, and X11
           too).
 
                The 3.2 NetHack Development Team, comprised of Michael Alli-
           son, Ken Arromdee, David Cohrs, Jessie Collet, Steve Creps, Kevin
           Darcy, Timo Hakulinen, Steve Linhart, Dean Luick, Pat Rankin, Er-
-          ic Smith, Mike Stephenson, Janet Walz, and Paul Winner,  released
+          ic  Smith, Mike Stephenson, Janet Walz, and Paul Winner, released
           version 3.2.0 in April of 1996.
 
                Version 3.2 marked the tenth anniversary of the formation of
-          the development team.  In a testament to their dedication to  the
-          game,  all  thirteen  members of the original NetHack Development
-          Team remained on the team at the start of work on  that  release.
-          During  the  interval between the release of 3.1.3 and 3.2.0, one
-          of the founding members of  the  NetHack  Development  Team,  Dr.
-          Izchak  Miller,  was diagnosed with cancer and passed away.  That
-          release of the game was dedicated to him by the  development  and
+          the  development team.  In a testament to their dedication to the
+          game, all thirteen members of the  original  NetHack  Development
+          Team  remained  on the team at the start of work on that release.
+          During the interval between the release of 3.1.3 and  3.2.0,  one
+          of  the  founding  members  of  the NetHack Development Team, Dr.
+          Izchak Miller, was diagnosed with cancer and passed  away.   That
+          release  of  the game was dedicated to him by the development and
           porting teams.
 
                Version 3.2 proved to be more stable than previous versions.
-          Many bugs were fixed, abuses eliminated, and game features  tuned
+          Many  bugs were fixed, abuses eliminated, and game features tuned
           for better game play.
 
                During the lifespan of NetHack 3.1 and 3.2, several enthusi-
-          asts of the game added their own modifications to  the  game  and
+          asts  of  the  game added their own modifications to the game and
           made these "variants" publicly available:
 
-               Tom  Proudfoot  and  Yuval Oren created NetHack++, which was
-          quickly renamed NetHack-- when some  people  incorrectly  assumed
-          that  it  was  a conversion of the C source code to C++.  Working
-          independently, Stephen White wrote NetHack Plus.   Tom  Proudfoot
+               Tom Proudfoot and Yuval Oren created  NetHack++,  which  was
+          quickly  renamed  NetHack--  when some people incorrectly assumed
+          that it was a conversion of the C source code  to  C++.   Working
+          independently,  Stephen  White wrote NetHack Plus.  Tom Proudfoot
           later merged NetHack Plus and his own NetHack-- to produce SLASH.
-          Larry Stewart-Zerba and Warwick Allison improved the spell  cast-
-          ing  system  with  the Wizard Patch.  Warwick Allison also ported
+          Larry  Stewart-Zerba and Warwick Allison improved the spell cast-
+          ing system with the Wizard Patch.  Warwick  Allison  also  ported
           NetHack to use the Qt interface.
 
-               Warren Cheung combined SLASH with the Wizard Patch  to  pro-
-          duce  Slash'EM,  and with the help of Kevin Hugo, added more fea-
-          tures.  Kevin later joined the NetHack Development Team  and  in-
-          corporated the best of these ideas into NetHack 3.3.
-
-               The final update to 3.2 was the bug fix release 3.2.3, which
-          was released simultaneously with 3.3.0 in December 1999  just  in
-          time  for the Year 2000.  Because of the newer version, 3.2.3 was
-          released as a source code patch only, without  any  ready-to-play
-          distribution for systems that usually had such.
 
 
 
 
 
 
-               (To  anyone  considering  resurrecting  an old version:  all
-          versions before 3.2.3 had a Y2K bug.  The high  scores  file  and
-          the  log  file  contained dates which were formatted using a two-
-          digit year, and 1999's year 99 was followed by 2000's  year  100.
-          That  got  written out successfully but it unintentionally intro-
-          duced an extra column in the file layout  which  prevented  score
-          entries  from  being read back in correctly, interfering with in-
-          sertion of new high scores and with retrieval  of  old  character
-          names  to  use  for  random ghost and statue names in the current
+               Warren  Cheung  combined SLASH with the Wizard Patch to pro-
+          duce Slash'EM, and with the help of Kevin Hugo, added  more  fea-
+          tures.   Kevin  later joined the NetHack Development Team and in-
+          corporated the best of these ideas into NetHack 3.3.
+
+               The final update to 3.2 was the bug fix release 3.2.3, which
+          was  released  simultaneously with 3.3.0 in December 1999 just in
+          time for the Year 2000.  Because of the newer version, 3.2.3  was
+          released  as  a source code patch only, without any ready-to-play
+          distribution for systems that usually had such.
+
+               (To anyone considering resurrecting  an  old  version:   all
+          versions  before  3.2.3  had a Y2K bug.  The high scores file and
+          the log file contained dates which were formatted  using  a  two-
+          digit  year,  and 1999's year 99 was followed by 2000's year 100.
+          That got written out successfully but it  unintentionally  intro-
+          duced  an  extra  column in the file layout which prevented score
+          entries from being read back in correctly, interfering  with  in-
+          sertion  of  new  high scores and with retrieval of old character
+          names to use for random ghost and statue  names  in  the  current
           game.)
 
-               The 3.3 NetHack Development Team, consisting of Michael  Al-
-          lison,  Ken  Arromdee,  David  Cohrs, Jessie Collet, Steve Creps,
-          Kevin Darcy, Timo Hakulinen, Kevin Hugo, Steve Linhart, Ken  Lor-
-          ber,  Dean  Luick, Pat Rankin, Eric Smith, Mike Stephenson, Janet
-          Walz, and Paul Winner, released 3.3.0 in December 1999 and  3.3.1
+               The  3.3 NetHack Development Team, consisting of Michael Al-
+          lison, Ken Arromdee, David Cohrs,  Jessie  Collet,  Steve  Creps,
+          Kevin  Darcy, Timo Hakulinen, Kevin Hugo, Steve Linhart, Ken Lor-
+          ber, Dean Luick, Pat Rankin, Eric Smith, Mike  Stephenson,  Janet
+          Walz,  and Paul Winner, released 3.3.0 in December 1999 and 3.3.1
           in August of 2000.
 
                Version 3.3 offered many firsts. It was the first version to
-          separate race and profession. The Elf class was removed in  pref-
+          separate  race and profession. The Elf class was removed in pref-
           erence to an elf race, and the races of dwarves, gnomes, and orcs
-          made their first appearance in the game  alongside  the  familiar
-          human  race.  Monk and Ranger roles joined Archeologists, Barbar-
-          ians,  Cavemen,  Healers,  Knights,  Priests,  Rogues,   Samurai,
-          Tourists,  Valkyries  and  of  course,  Wizards.  It was also the
-          first version to allow you to ride a steed,  and  was  the  first
-          version  to  have  a  publicly available web-site listing all the
-          bugs that had been discovered.  Despite that  constantly  growing
-          bug  list,  3.3 proved stable enough to last for more than a year
+          made  their  first  appearance in the game alongside the familiar
+          human race.  Monk and Ranger roles joined Archeologists,  Barbar-
+          ians,   Cavemen,  Healers,  Knights,  Priests,  Rogues,  Samurai,
+          Tourists, Valkyries and of course,  Wizards.   It  was  also  the
+          first  version  to  allow  you to ride a steed, and was the first
+          version to have a publicly available  web-site  listing  all  the
+          bugs  that  had been discovered.  Despite that constantly growing
+          bug list, 3.3 proved stable enough to last for more than  a  year
           and a half.
 
-               The 3.4 NetHack  Development  Team  initially  consisted  of
-          Michael  Allison, Ken Arromdee, David Cohrs, Jessie Collet, Kevin
-          Hugo, Ken Lorber, Dean Luick, Pat Rankin, Mike Stephenson,  Janet
-          Walz,  and Paul Winner, with  Warwick Allison joining just before
+               The  3.4  NetHack  Development  Team  initially consisted of
+          Michael Allison, Ken Arromdee, David Cohrs, Jessie Collet,  Kevin
+          Hugo,  Ken Lorber, Dean Luick, Pat Rankin, Mike Stephenson, Janet
+          Walz, and Paul Winner, with  Warwick Allison joining just  before
           the release of NetHack 3.4.0 in March 2002.
 
-               As with version 3.3, various people contributed to the  game
+               As  with version 3.3, various people contributed to the game
           as a whole as well as supporting ports on the different platforms
           that NetHack runs on:
 
                Pat Rankin maintained 3.4 for VMS.
 
-               Michael Allison maintained NetHack 3.4 for the MS-DOS  plat-
-          form.  Paul Winner and Yitzhak Sapir provided encouragement.
-
-               Dean  Luick, Mark Modrall, and Kevin Hugo maintained and en-
-          hanced the Macintosh port of 3.4.
-
-               Michael Allison, David Cohrs, Alex  Kompel,  Dion  Nicolaas,
-          and  Yitzhak  Sapir maintained and enhanced 3.4 for the Microsoft
-          Windows platform.  Alex Kompel contributed a new graphical inter-
-          face  for  the Windows port.  Alex Kompel also contributed a Win-
-          dows CE port for 3.4.1.
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+               Michael  Allison maintained NetHack 3.4 for the MS-DOS plat-
+          form.  Paul Winner and Yitzhak Sapir provided encouragement.
+
+               Dean Luick, Mark Modrall, and Kevin Hugo maintained and  en-
+          hanced the Macintosh port of 3.4.
+
+               Michael  Allison,  David  Cohrs, Alex Kompel, Dion Nicolaas,
+          and Yitzhak Sapir maintained and enhanced 3.4 for  the  Microsoft
+          Windows platform.  Alex Kompel contributed a new graphical inter-
+          face for the Windows port.  Alex Kompel also contributed  a  Win-
+          dows CE port for 3.4.1.
+
                Ron Van Iwaarden was the sole maintainer of NetHack for OS/2
-          the  past several releases. Unfortunately Ron's last OS/2 machine
-          stopped working in early 2006. A great many  thanks  to  Ron  for
+          the past several releases. Unfortunately Ron's last OS/2  machine
+          stopped  working  in  early  2006. A great many thanks to Ron for
           keeping NetHack alive on OS/2 all these years.
 
-               Janne  Salmijarvi  and  Teemu Suikki maintained and enhanced
-          the Amiga port of 3.4 after Janne Salmijarvi resurrected  it  for
+               Janne Salmijarvi and Teemu Suikki  maintained  and  enhanced
+          the  Amiga  port of 3.4 after Janne Salmijarvi resurrected it for
           3.3.1.
 
                Christian "Marvin" Bressler maintained 3.4 for the Atari af-
                The release of NetHack 3.4.3 in December 2003 marked the be-
           ginning of a long release hiatus. 3.4.3 proved to be a remarkably
           stable version that provided continued enjoyment by the community
-          for  more  than a decade. The NetHack Development Team slowly and
-          quietly continued to work on the game behind  the  scenes  during
-          the  tenure of 3.4.3. It was during that same period that several
+          for more than a decade. The NetHack Development Team  slowly  and
+          quietly  continued  to  work on the game behind the scenes during
+          the tenure of 3.4.3. It was during that same period that  several
           new  variants  emerged  within  the  NetHack  community.  Notably
           sporkhack by Derek S. Ray, unnethack by Patric Mueller, nitrohack
-          and its successors originally by Daniel Thaler and then  by  Alex
-          Smith,  and Dynahack by Tung Nguyen.  Some of those variants con-
-          tinue to be developed, maintained, and enjoyed by  the  community
+          and  its  successors originally by Daniel Thaler and then by Alex
+          Smith, and Dynahack by Tung Nguyen.  Some of those variants  con-
+          tinue  to  be developed, maintained, and enjoyed by the community
           to this day.
 
                In September 2014, an interim snapshot of the code under de-
-          velopment was released publicly by  other  parties.   Since  that
-          code  was a work-in-progress and had not gone through the process
-          of debugging it as a suitable release, it was  decided  that  the
-          version  numbers  present  on that code snapshot would be retired
-          and never used in an official NetHack release.   An  announcement
+          velopment  was  released  publicly  by other parties.  Since that
+          code was a work-in-progress and had not gone through the  process
+          of  debugging  it  as a suitable release, it was decided that the
+          version numbers present on that code snapshot  would  be  retired
+          and  never  used in an official NetHack release.  An announcement
           was posted on the NetHack Development Team's official nethack.org
-          website to that effect, stating  that  there  would  never  be  a
+          website  to  that  effect,  stating  that  there would never be a
           3.4.4, 3.5, or 3.5.0 official release version.
 
-               In  January  2015,  preparation  began  for  the  release of
+               In January  2015,  preparation  began  for  the  release  of
           NetHack 3.6.
 
-               At the beginning of development for  what  would  eventually
-          get  released as 3.6.0, the NetHack Development Team consisted of
-          Warwick Allison, Michael  Allison,  Ken  Arromdee,  David  Cohrs,
-          Jessie  Collet, Ken Lorber, Dean Luick, Pat Rankin, Mike Stephen-
-          son, Janet Walz, and Paul Winner.  In early 2015,  ahead  of  the
-          release of 3.6.0, new members Sean Hunt, Pasi Kallinen, and Derek
-          S. Ray joined the NetHack Development Team.
-
-               Near the end of the development of 3.6.0, one of the signif-
-          icant  inspirations  for  many  of  the humorous and fun features
-          found in the game, author Terry Pratchett, passed away.   NetHack
-          3.6.0 introduced a tribute to him.
-
-               3.6.0 was released in December 2015, and merged work done by
-          the development team since the release of 3.4.3 with some of  the
-          beloved community patches. Many bugs were fixed and some code was
+               At  the  beginning  of development for what would eventually
+          get released as 3.6.0, the NetHack Development Team consisted  of
+          Warwick  Allison,  Michael  Allison,  Ken  Arromdee, David Cohrs,
+          Jessie  Collet,  Ken  Lorber,  Dean  Luick,  Pat   Rankin,   Mike
 
 
           NetHack 3.7                                       January 6, 2021
 
 
 
+          Stephenson, Janet Walz, and Paul Winner.  In early 2015, ahead of
+          the release of 3.6.0, new members Sean Hunt, Pasi  Kallinen,  and
+          Derek S. Ray joined the NetHack Development Team.
+
+               Near the end of the development of 3.6.0, one of the signif-
+          icant inspirations for many of  the  humorous  and  fun  features
+          found  in the game, author Terry Pratchett, passed away.  NetHack
+          3.6.0 introduced a tribute to him.
+
+               3.6.0 was released in December 2015, and merged work done by
+          the  development team since the release of 3.4.3 with some of the
+          beloved community patches. Many bugs were fixed and some code was
           restructured.
 
-               The NetHack Development Team, as well as  Steve  VanDevender
+               The  NetHack  Development Team, as well as Steve VanDevender
           and Kevin Smolkowski, ensured that NetHack 3.6 continued to oper-
           ate on various UNIX flavors and maintained the X11 interface.
 
-               Ken Lorber, Haoyang Wang, Pat Rankin, and Dean  Luick  main-
+               Ken  Lorber,  Haoyang Wang, Pat Rankin, and Dean Luick main-
           tained the port of NetHack 3.6 for Mac OSX.
 
-               Michael  Allison,  David  Cohrs,  Bart House, Pasi Kallinen,
-          Alex Kompel, Dion Nicolaas, Derek S. Ray and Yitzhak Sapir  main-
+               Michael Allison, David Cohrs,  Bart  House,  Pasi  Kallinen,
+          Alex  Kompel, Dion Nicolaas, Derek S. Ray and Yitzhak Sapir main-
           tained the port of NetHack 3.6 for Microsoft Windows.
 
-               Pat  Rankin  attempted  to  keep  the  VMS  port running for
+               Pat Rankin attempted  to  keep  the  VMS  port  running  for
           NetHack 3.6, hindered by limited access. Kevin Smolkowski has up-
-          dated  and tested it for the most recent version of OpenVMS (V8.4
+          dated and tested it for the most recent version of OpenVMS  (V8.4
           as of this writing) on Alpha and Integrity (aka Itanium aka IA64)
           but not VAX.
 
-               Ray  Chason resurrected the MS-DOS port for 3.6 and contrib-
+               Ray Chason resurrected the MS-DOS port for 3.6 and  contrib-
           uted the necessary updates to the community at large.
 
-               In late April 2018, several hundred bug fixes for 3.6.0  and
-          some  new  features were assembled and released as NetHack 3.6.1.
+               In  late April 2018, several hundred bug fixes for 3.6.0 and
+          some new features were assembled and released as  NetHack  3.6.1.
           The NetHack Development Team at the time of release of 3.6.1 con-
-          sisted  of  Warwick Allison, Michael Allison, Ken Arromdee, David
-          Cohrs, Jessie Collet, Pasi  Kallinen,  Ken  Lorber,  Dean  Luick,
-          Patric  Mueller,  Pat  Rankin,  Derek  S.  Ray,  Alex Smith, Mike
+          sisted of Warwick Allison, Michael Allison, Ken  Arromdee,  David
+          Cohrs,  Jessie  Collet,  Pasi  Kallinen,  Ken Lorber, Dean Luick,
+          Patric Mueller, Pat  Rankin,  Derek  S.  Ray,  Alex  Smith,  Mike
           Stephenson, Janet Walz, and Paul Winner.
 
                In early May 2019, another 320 bug fixes along with some en-
-          hancements  and  the adopted curses window port, were released as
+          hancements and the adopted curses window port, were  released  as
           3.6.2.
 
-               Bart House, who had contributed to the  game  as  a  porting
+               Bart  House,  who  had  contributed to the game as a porting
           team participant for decades, joined the NetHack Development Team
           in late May 2019.
 
-               NetHack 3.6.3 was released on December  5,  2019  containing
+               NetHack  3.6.3  was  released on December 5, 2019 containing
           over 190 bug fixes to NetHack 3.6.2.
 
-               NetHack 3.6.4 was released on December 18, 2019 containing a
-          security fix and a few bug fixes.
 
-               NetHack 3.6.5 was released on January  27,  2020  containing
-          some security fixes and a small number of bug fixes.
 
-               NetHack 3.6.6 was released on March 8, 2020 containing a se-
-          curity fix and some bug fixes.
 
-               The official NetHack web site is maintained by Ken Lorber at
-          https://www.nethack.org/.
+          NetHack 3.7                                       January 6, 2021
 
 
 
 
-          NetHack 3.7                                       January 6, 2021
 
+          NetHack Guidebook                                             104
 
 
 
+               NetHack 3.6.4 was released on December 18, 2019 containing a
+          security fix and a few bug fixes.
 
-          NetHack Guidebook                                             104
+               NetHack  3.6.5  was  released on January 27, 2020 containing
+          some security fixes and a small number of bug fixes.
 
+               NetHack 3.6.6 was released on March 8, 2020 containing a se-
+          curity fix and some bug fixes.
 
+               The official NetHack web site is maintained by Ken Lorber at
+          https://www.nethack.org/.
 
           12.1.  SPECIAL THANKS
 
                On behalf of the NetHack community, thank you very much once
-          again to M. Drew Streib and Pasi Kallinen for providing a  public
-          NetHack  server  at  nethack.alt.org. Thanks to Keith Simpson and
+          again  to M. Drew Streib and Pasi Kallinen for providing a public
+          NetHack server at nethack.alt.org. Thanks to  Keith  Simpson  and
           Andy Thomson for hardfought.org. Thanks to all those unnamed dun-
-          geoneers  who  invest  their  time and effort into annual NetHack
-          tournaments such as Junethack, The November  NetHack  Tournament,
+          geoneers who invest their time and  effort  into  annual  NetHack
+          tournaments  such  as Junethack, The November NetHack Tournament,
           and in days past, devnull.net (gone for now, but not forgotten).
 
                                  - - - - - - - - - -
 
-               From  time  to  time,  some depraved individual out there in
-          netland sends a particularly intriguing modification to help  out
+               From time to time, some depraved  individual  out  there  in
+          netland  sends a particularly intriguing modification to help out
           with the game.  The NetHack Development Team sometimes makes note
-          of the names of the worst of these miscreants in this,  the  list
+          of  the  names of the worst of these miscreants in this, the list
           of Dungeoneers:
                Adam Aronow           J. Ali Harlow          Mikko Juola
                Alex Kompel             Janet Walz           Nathan Eady
                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
 
 
 
 
 
 
+              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
           Irina Rempt-Drijfhout     Mike Passaretti
               Izchak Miller         Mike Stephenson
 
-               Brand  and product names are trademarks or registered trade-
+               Brand and product names are trademarks or registered  trade-
           marks of their respective holders.
 
 
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-