• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

Guidebook.mnH A D08-Dec-2013116.1 KiB2,8222,778

Guidebook.texH A D08-Dec-2013128.2 KiB3,4913,193

README.menucolorH A D08-Dec-20133.1 KiB10776

README.new_lev_compH A D08-Dec-20134.4 KiB147119

README.nh343H A D08-Dec-201311.9 KiB227193

README.statuscolorsH A D08-Dec-20132 KiB6350

dgn_comp.6H A D08-Dec-20137 KiB403387

dlb.6H A D08-Dec-20131.9 KiB8483

fixes22.0H A D08-Dec-201314.4 KiB354264

fixes30.0H A D08-Dec-20138.7 KiB165157

fixes31.1H A D08-Dec-20135.9 KiB111107

fixes31.2H A D08-Dec-20135.5 KiB9391

fixes31.3H A D08-Dec-20131.2 KiB2320

fixes32.0H A D08-Dec-201320.8 KiB345343

fixes32.1H A D08-Dec-20137.3 KiB134126

fixes32.2H A D08-Dec-20137.3 KiB129121

fixes32.3H A D08-Dec-20131.6 KiB3128

fixes33.0H A D08-Dec-201321 KiB373366

fixes33.1H A D08-Dec-201324.9 KiB445438

fixes34.0H A D08-Dec-201335.3 KiB596588

fixes34.1H A D08-Dec-201328.5 KiB472466

fixes34.2H A D08-Dec-201310.3 KiB181172

fixes34.3H A D08-Dec-20138.1 KiB147138

lev_comp.6H A D08-Dec-201310.4 KiB573461

parsexlog.plH A D08-Dec-20132.4 KiB7557

recover.6H A D08-Dec-20133.5 KiB117116

tmac.nH A D08-Dec-201324.5 KiB765763

unnethack.6H A D08-Dec-20137.9 KiB306302

window.docH A D08-Dec-201339.6 KiB821722

xlog.readmeH A D08-Dec-20137.7 KiB187165

README.menucolor

1
2   This is version 1.5 of the menucolors patch.
3
4   This patch allows the user to define in what color menus are shown.
5   For example, putting
6
7   OPTIONS=menucolors
8   MENUCOLOR=" blessed "=green
9   MENUCOLOR=" holy "=green
10   MENUCOLOR=" cursed "=red
11   MENUCOLOR=" unholy "=red
12   MENUCOLOR=" cursed .* (being worn)"=orange&underline
13
14   in the configuration file makes all known blessed items
15   show up in green, all cursed items show up in red and
16   all cursed worn items show up in orange and underlined
17   when viewing inventory.
18
19   If you have regex.h but it is not GNU (e.g. DJGPP, *BSD), uncomment
20   #define MENU_COLOR_REGEX_POSIX in include/config.h
21
22   If you do not have regex.h, comment
23   #define MENU_COLOR_REGEX out from include/config.h
24   and replace the MENUCOLOR lines in your config file with these:
25
26   MENUCOLOR="* blessed *"=green
27   MENUCOLOR="* holy *"=green
28   MENUCOLOR="* cursed *"=red
29   MENUCOLOR="* unholy *"=red
30   MENUCOLOR="* cursed * (being worn)"=orange&underline
31
32
33   Colors: black, red, green, brown, blue, magenta, cyan, gray, orange,
34           lightgreen, yellow, lightblue, lightmagenta, lightcyan, white.
35   Attributes: none, bold, dim, underline, blink, inverse.
36
37   Note that the terminal is free to interpret the attributes however
38   it wants.
39
40
41   TODO/BUGS:
42
43    o Only works with TTY and Windows GUI.
44    o You can't use '=' or '&' in the match-string.
45    o Maybe add color-field to tty_menu_item in include/wintty.h
46      (so there's no need to find the color for the line again)
47    o Guidebook is not up to date
48    o Better place to put the functions, colornames[] and attrnames[]?
49    o Some menus do not need coloring; maybe add new parameter
50      to process_menu_window()?
51
52
53   FIXES:
54
55   v1.5:
56    o Partial support for Windows GUI windowport; supports colors,
57      but not attributes.
58
59   v1.4:
60    o Option to use standard instead of GNU regex functions.
61
62   v1.3:
63    o Updated to use 3.4.3 codebase.
64    o Added a text to #version to show menucolors is compiled in.
65
66   v1.2:
67    o Updated to use 3.4.2 codebase.
68
69   v1.1:
70    o Updated to use 3.4.1 codebase.
71    o replaced USE_REGEX_MATCH with MENU_COLOR_REGEX
72
73   v1.04:
74    o Oops! 1.03 worked only on *nixes... (GNU regex.h)
75    o Compile-time option USE_REGEX_MATCH: if it's defined, use regex,
76      otherwise use globbing. ('?' and '*' wildcards)
77
78   v1.03:
79
80    o Now using Nethack 3.4.0 codebase
81    o Compile-time option MENU_COLOR
82    o Strings match using regular expressions instead of globbing
83    o You can use attribute with color (attr must come after '&')
84    o Use ``MENUCOLOR="foo"=color'' instead of ``OPTIONS=menucolor=...''
85      (Both work, but OPTIONS complains if you define menucolor
86      more than once)
87
88   v1.02:
89
90    o Should now work with OS/2, thanks to Jukka Lahtinen
91    o Strings match now using simple globbing. ('?' and '*' wildcards)
92
93   v1.01:
94
95    o Moved 'menucolors' boolean option, so now the options-menu
96      is in alphabetical order.
97    o Fixed 'menucolor' description in dat/opthelp.
98    o menu_colorings is now initialized to null in src/decl.c.
99
100   v1.0:
101
102    o Initial release
103
104--
105 Pasi Kallinen
106 paxed@alt.org
107

README.new_lev_comp

1What is this patch?
2---------------------
3Almost a total redesign of the special level code;
4the level compiler outputs a kind of a bytecode, which Nethack can
5read and execute. The output of the executed bytecode program
6is a dungeon level.
7Most of the changes are not visible to normal player.
8
9
10Visible changes:
11
12-New wizard-mode extended command #mazewalkmap, which shows the
13 MAZEWALK paths.
14
15Changes under the hood:
16
17-*.des file format change: If the level is LEVEL-type,
18 replace DOORs with ROOMDOORs.
19
20-"IF [xx%] THEN ... ENDIF;"
21 and
22 "IF [xx%] THEN ... ELSE ... ENDIF;"
23 (See dat/sokoban.des for an example)
24
25-It's much easier to shoot yourself in the foot when creating
26 new special levels.  For example, MAZE-level shops do not get
27 stocked, unless the shop areas are defined before the doors.
28 (This was evident in orcustown)
29
30
31Affected Files:
32-----------------
33include/mkroom.h
34include/sp_lev.h
35doc/README.new_lev_comp	(this file)
36src/cmd.c
37src/mkmaze.c
38src/sp_lev.c
39util/lev_comp.l
40util/lev_comp.y
41util/lev_main.c
42dat/*.des
43
44
45BUGS:
46-------
47-shops do not get stocked unless the shop area is defined before
48 the shop door.
49
50
51TODO, problems, ideas and other miscellany:
52---------------------------------------------
53-There may be some regressions, due to the fact that I basically took
54 the 3.3.1 new_lev_comp diff, and applied it by hand on to 3.4.2, but
55 I did check the incremental diffs, up to 3.4.2 and added the missing
56 new parts to the files changed by this patch.
57 (minetn-6 is buggy due to remove_rooms(), as in vanilla 3.4.2)
58
59-Due to the changes how MAZEWALKs are done and how they keep track which
60 parts of the level they should walk on, empty mazes may now get filled
61 with slightly fewer items/traps, etc.
62
63-sort_rooms() causes a problem with subroom door indexes.
64 You can tell when the problem shows up only because shops are
65 not filled correctly; eg. shopkeepers are out of their shops, etc.
66 Currently all I've done is remove sort_rooms() from the random
67 corridor creation, as this doesn't seem to cause any problems.
68
69-When doing ROOM-type level, there's no easy way to put monsters
70 or objects, etc, in a parent room on a random coord, because
71 subrooms come afterwards, and likely on top of them.
72 This causes eg. monsters to be inside subroom walls.
73 Could maybe make change the [sub]room definition,
74 ROOM: <blahblah>
75     <define room stuff here>
76     SUBROOM: <blahblah>
77	      <define subroom stuff here>
78     ENDROOM;
79     <define room stuff here>
80 ENDROOM;
81
82-maybe allow subrooms in a subroom? Need a stack where you push
83 the parent room, while doing the subroom, instead of using
84 mkr and mkrsub in sp_level_coder.
85 But this might complicate level creation a bit too much...
86
87-should be able to list room walls in the room door definition,
88 "ROOMDOOR:false, closed, north|south|west, random"
89 and the door is placed on one of those walls.
90 (then the coordinate must be random)
91
92-src/lev_comp.y: there is no easy way to put back the checks whether
93 mon/obj will be put in a wall, unless we run the special level through
94 the sp_level_coder(), with a flag that says it's a test run, or something.
95
96-Add a "transparent" map char, "x". eg.
97 MAP
98 xxLxx
99 xxLxx
100 LLLLL
101 xxLxx
102 xxLxx
103 ENDMAP;
104 puts a cross made out of lavapools, but doesn't change
105 the mapgrids in those places where there are any 'x'.
106
107-Allow x- and y-align in GEOMETRY and ROOM to be random, eg.
108 GEOMETRY: random, random;
109 Also, an explicitly set coordinates:
110 GEOMETRY: (60,8)
111
112-Allow setting of light-state for each MAP:
113 GEOMETRY: center,center;
114 MAPLIGHT:lit;
115 MAP
116 ...
117 .L.
118 ...
119 ENDMAP;
120 Parameters for MAPLIGHT:
121  "random"  	The map is either light or dark.
122  "lit"	    	The map is lighted.
123  "unlit"   	The map is dark.
124  "nolitchange" No change in the lighting.
125  "litreverse"  Reverse the lighting.
126
127-Add a new command, TERRAIN. For example
128 TERRAIN: (20, 10), 'L', lit;
129 Puts a lighted pool of lava on (20,10).
130
131-Add a new command, LINE. For example
132 LINE: (1,1), (40,10), 'T', lit, true;
133 Creates a lighted line of trees from (1,1) to (40,10). The last parameter
134 is optional. If it's true, the line doesn't have any 'holes' to walk
135 diagonally through.
136
137-Add new commands:
138 SHUFFLE_RANDOM_OBJS, which shuffles the objects given in RANDOM_OBJECTS,
139 SHUFFLE_RANDOM_MONS, which does the same for RANDOM_MONSTERS,
140 SHUFFLE_RANDOM_PLACES, which shuffles RANDOM_PLACES, and
141 EXIT, which exits from the level script immediately.
142
143
144-----
145Pasi Kallinen
146paxed@alt.org
147

README.nh343

1                NetHack 3.4.3 -- General information
2
3NetHack 3.4 is an enhancement to the dungeon exploration game NetHack.
4It is a distant descendent of Rogue and Hack, and a direct descendent of
5NetHack 3.3.
6
7NetHack 3.4.3 is a bugfix release for NetHack 3.4.2.
8 *  Several dozen general bug fixes including at least one fatal bug
9 *  Correct several inconsistencies
10 *  Handle level completely filled with monsters better
11 *  win32tty performance enhancements when playing on Windows 98 and Windows Me
12 *  win32gui player selection fixes
13 *  X11 player selection fixes, one of which could be fatal
14 *  Eliminated a gold-in-shop-container cheat
15 *  Include bones file version compatibility info in options file
16
17A fuller list of changes for this release can be found in the file
18doc/fixes34.3 in the source distribution.  The text in there was written
19for the development team's own use and is provided "as is", so please do
20not ask us to further explain the entries in that file.
21
22The internal structure of bones and save files has not changed between
23NetHack 3.4.0, 3.4.1, 3.4.2 and now 3.4.3. That means that if you use the
24same compiler, the same compiler version and compiler switches, the same
25NetHack compile-time options, and you have not incorporated any additional
26source code patches that altered the save file format on your system, then
27bones and save files from 3.4.0 through 3.4.3 should be compatible.
28
29
30                        - - - - - - - - - - -
31
32Please read items (1), (2) and (3) BEFORE doing anything with your new code.
33
341.  Unpack the code in a dedicated new directory.  We will refer to that
35    directory as the 'Top' directory.  It makes no difference what you
36    call it.
37
382.  If there is no flaw in the packaging, many sub-directories will be
39    automatically created, and files will be deposited in them:
40
41    a.  A 'dat' directory, which contains a variety of data files.
42    b.  A 'doc' directory, which contains various documentation.
43    c.  An 'include' directory, which contains *.h files.
44    d.  A 'src' directory, which contains game *.c files used by all versions.
45    e.  A 'util' directory, which contains files for utility programs.
46    f.  A 'sys' directory, which contains subdirectories for files that
47        are operating-system specific.
48    g.  A 'sys/share' subdirectory, which contains files shared by some OSs.
49    h.  A 'sys/share/sounds' subsubdirectory, which contains sound files
50        shared by some OSs.
51    i.  A 'sys/amiga' subdirectory, which contains files specific to AmigaDOS.
52    j.  A 'sys/amiga/ship' subsubdirectory
53    k.  A 'sys/atari' subdirectory, which contains files specific to TOS.
54    l.  A 'sys/be' subdirectory, which contains files specific to Be OS.
55    m.  A 'sys/mac' subdirectory, which contains files specific to MacOS.
56    n.  A 'sys/msdos' subdirectory, which contains files specific to MS-DOS.
57    o.  A 'sys/os2' subdirectory, which contains files specific to OS/2.
58    p.  A 'sys/unix' subdirectory, which contains files specific to UNIX.
59    q.  A 'sys/vms' subdirectory, which contains files specific to VMS.
60    r.  A 'sys/wince' subdirectory, which contains files specific to Windows CE.
61    s.  A 'sys/winnt' subdirectory, which contains files specific to Windows NT.
62    t.  A 'win' directory, which contains subdirectories for files that
63        are windowing-system specific (but not operating-system specific).
64    u.  A 'win/share' subdirectory, which contains files shared by some
65        windowing systems.
66    v.  A 'win/Qt' subdirectory, which contains files specific to Qt.
67    w.  A 'win/X11' subdirectory, which contains files specific to X11.
68    x.  A 'win/gem' subdirectory, which contains files specific to GEM.
69    y.  A 'win/gnome' subdirectory, which contains files specific to GNOME.
70    z.  A 'win/tty' subdirectory, which contains files specific to ttys.
71    A.  A 'win/win32' subdirectory, which contains files specific to the
72        Windows Win32 API.
73
74    The names of these directories should not be changed unless you are
75    ready to go through the makefiles and the makedefs program and change
76    all the directory references in them.
77
783.  Having unpacked, you should have a file called 'Files' in your Top
79    directory.  This file contains the list of all the files you now SHOULD
80    have in each directory.  Please check the files in each directory
81    against this list to make sure that you have a complete set.
82
834.  Before you do anything else, please read carefully the file called
84    "license" in the 'dat' subdirectory.  It is expected that you comply
85    with the terms of that license, and we are very serious about it.
86
875.  If everything is in order, you can now turn to trying to get the program
88    to compile and run on your particular system.  It is worth mentioning
89    that the default configuration is SysV/Sun/Solaris2.x (simply because
90    the code was housed on such a system).  It is also worth mentioning
91    here that NetHack 3.4 is a huge program.  If you intend to run it on a
92    small machine, you'll have to make hard choices among the options
93    available in config.h.
94
95    The files sys/*/Install.* were written to guide you in configuring the
96    program for your operating system.  The files win/*/Install.* are
97    available, where necessary, to help you in configuring the program
98    for particular windowing environments.  Reading them, and the man pages,
99    should answer most of your questions.
100
101    At the time of this release, NetHack 3.4 is known to run/compile on:
102
103        Apple Macintosh running MacOS 7.5 or higher, LinuxPPC, BeOS 4.0
104        Atari ST/TT/Falcon running TOS (or MultiTOS) with GCC
105        Commodore Amiga running AmigaDOS 3.0 or higher with SAS/C 6.x
106                (but see Makefile.ami about DICE and Manx)
107        DEC Alpha/VMS (aka OpenVMS AXP), running V1.x through V7.1
108        DEC VAX/VMS, running V4.6 through V7.1
109        HP 9000s700 running HP-UX 10.x, 11.x
110        IBM PS/2 and AT compatibles running OS/2 - 2.0 and up with GCC emx
111        Intel 80386 or greater (or clone) boxes running MS-DOS with DPMI.
112        Intel 80386 or greater (or clone) boxes running Linux, or BSDI.
113        Intel 80386 or greater (or clone) boxes running Windows 95/98/Me.
114        Intel 80386 or greater (or clone) boxes running Windows NT/2000/XP/2003.
115        Intel Pentium or better (or clone) running BeOS 4.5
116        Sun SPARC based machine running SunOS 4.x, Solaris 2.x, or Solaris 7
117
118    NetHack 3.4 will also run on the following, but a cross-compiler hosted
119    on another platform, such as win32, is required to build from source.
120
121        Pocket PC devices running Windows CE 3.0 and higher
122        H/PC Pro devices running Windows CE 2.11 and higher.
123	Palm Size PC 1.1 devices running Windows CE 2.11
124
125    Previous versions of NetHack were tested on the following systems,
126    and we expect that NetHack 3.4 will work on them as well:
127
128        AT&T 3B1 running System V (3.51)
129        AT&T 3B2/600 & 3B2/622 running System V R3.2.1
130        AT&T 3B2/1000 Model 80 running System V R3.2.2
131        AT&T 3B4000 running System V
132        AT&T 6386 running System V R3.2
133        Data General AViiON systems running DG/UX
134        DEC vaxen running BSD, Ultrix
135        Decstations running Ultrix 3.1, 4.x
136        Encore Multimax running UMAX 4.2
137        Gould NP1 running UTX 3/2
138        HP 9000s300 running HP-UX
139        HP 9000s700 running HP-UX 9.x
140        IBM PC/RT and RS/6000 running AIX 3.x
141        IBM PS/2 and AT compatibles running OS/2 1.1 - 2.0 (and probably
142           Warp) with Microsoft 6.0, and OS/2 2.0 and up with IBM CSet++ 2.0.
143        Intel 80386 or greater (or clone) running 386BSD
144        Mips M2000 running RiscOS 4.1
145        NeXT running Mach (using BSD configuration)
146        Pyramid 9820x running OSx 4.4c
147        SGI Iris running IRIX
148        Stardent Vistra 800 running SysV R4.0
149        Stride 460 running UniStride 2.1
150        Sun-3s, -4s, and -386is running SunOS 3.x
151        Sun-3s and -386is running SunOS 4.x
152        Valid Logic Systems SCALD-System
153
154    Unless otherwise mentioned, the compiler used was the OS-vendor's
155    C compiler.
156
157    With the demise of Windows NT on the DEC Alpha, no attempt has been
158    made to build NetHack 3.4.3 on that platform.
159
160    Windows 98/Me have been the most problematic Windows platforms for
161    running NetHack so far. Patches for 3.4.2 (courtesy Michael Lehotay)
162    have been incorporated into 3.4.3 to help make them work better. Your
163    results may vary.
164
165    A build for Intel 80286 machines and DOS "real mode" overlaid versions
166    has not been produced for 3.4.3.  Nobody on the porting team has
167    the time or the software to attempt the necessary tuning that will allow
168    it to achieve the balance of having just the right amount of available
169    memory, and still have acceptable performance.  The sources necessary
170    to do so are still included in the source distribution, so if someone
171    has access to a real-mode compiler and lots of spare time on their hands,
172    you may be able to get things working. Of course you do so at your own risk.
173
174                        - - - - - - - - - - -
175
176If you have problems building the game, or you find bugs in it, we recommend
177filing a bug report from our "Contact Us" web page at:
178    http://www.nethack.org/
179
180When sending correspondence, please observe the following:
181o Please be sure to include your machine type, OS, and patchlevel.
182o Never send us binary files (e.g. save files or bones files). Whichever
183  platform you are using, only a small minority of the development team has
184  access to it, and you will rapidly annoy the others.  If you have found
185  a bug and think that your save file would aid in solving the problem,
186  send us a description in words of the problem, your machine type, your
187  operating system, and the version of NetHack.  Tell us that you have a
188  save file, but do not actually send it.
189  In the rare case that we think your save file would be helpful, you will
190  be contacted by a member of the development team with the address of a
191  specific person to send the save file to.
192o Though we make an effort to reply to each bug report, it may take some
193  time before you receive feedback.  This is especially true during the
194  period immediately after a new release, when we get the most bug reports.
195o We don't give hints for playing the game.
196o Don't bother to ask when the next version will be out.  You will not get
197  a reply.
198
199If you don't have access to the world wide web, or if you want to submit
200a patch for the NetHack source code via email directly, you can direct it
201to this address:
202    nethack-bugs (at) nethack.org
203
204If you've changed something to get NetHack to run on your system, it's likely
205that others have done it by making slightly different modifications.  By routing
206your patches through the development team, we should be able to avoid making
207everyone else choose among variant patches claiming to do the same thing, to keep
208most of the copies of 3.4 synchronized by means of official patches, and to
209maintain the painfully-created file organization.  (This process has been working
210since the time when everyone just posted their own patches to 2.3.  At that time,
211there were no archived bug-fixes to give to people who got 2.3 after its initial
212release, so the same bugs kept being discovered by new batches of people.)
213We have been successful in preventing this from happening since the 3.0
214release.  Please cooperate to keep this from happening to 3.4.
215
216It is inevitable that we will reject some proposed additions of new features
217either because they do not fit our conception of the game, or because they
218require more code than we consider they're worth.  If we reject your feature,
219you are free, of course, to post the patches to the net yourself and let the
220marketplace decide their worth.
221
222All of this amounts to the following:  If you decide to apply a free-lanced
223patch to your 3.4 code, you are on your own.  In our own patches, we will
224assume that your code is synchronized with ours.
225
226                  -- Good luck, and happy Hacking --
227

README.statuscolors

1Statuscolors is a patch for Nethack (version 3.4.3) that attempts to generalize
2the hpmon patch to be more like the menucolor patch. As of v1.2, the
3statuscolors patch may be applied after the menucolor patch (but not before
4it). Unlike menucolor, it does not use regexps. Instead, it provides the
5following options:
6
7To enable statuscolors:
8    OPTIONS=statuscolors
9
10To specify statuscolor options, write:
11    STATUSCOLOR=<option>,<option>
12
13Numeric options have the format <field>%<max-percent>:<color-option>. For
14example:
15    STATUSCOLOR=hp%15:red&bold,pw%100=green
16
17Text options have the format <text>:<color-option>. Text is case-insensitive.
18For example:
19    STATUSCOLOR=hallu:orange,foodpois:red&inverse&blink
20
21A color option is a <color> followed by an optional sequence of &<attr>. Color
22and attribute names are case insensitive. Valid colors are:
23    black blue brown cyan gray green lightblue lightcyan lightgreen
24    lightmagenta magenta none orange red white yellow
25
26Valid attributes are:
27    blink bold dim inverse none underline
28
29A reasonable set of defaults might be:
30    # HP
31    STATUSCOLOR=hp%100=green,hp%66=yellow,hp%50=orange
32    STATUSCOLOR=hp%33=red&bold,hp%15:red&inverse,hp%0:red&inverse&blink
33    # Pw
34    STATUSCOLOR=pw%100=green,pw%66=yellow,pw%50:orange,pw%33=red&bold
35    # Carry
36    STATUSCOLOR=burdened:yellow,stressed:orange,strained:red&bold
37    STATUSCOLOR=overtaxed:red&inverse,overloaded:red&inverse&blink
38    # Hunger
39    STATUSCOLOR=satiated:yellow,hungry:orange,weak:red&bold
40    STATUSCOLOR=fainting:red&inverse,fainted:red&inverse&blink
41    # Mental
42    STATUSCOLOR=hallu:yellow,conf:orange,stun:red&bold
43    # Health
44    STATUSCOLOR=ill:red&inverse,foodpois:red&inverse,slime:red&inverse
45    # Other
46    STATUSCOLOR=held:red&inverse,blind:red&inverse
47
48Changelog:
49
50    v1.2:
51      - Menucolor compatibility.
52
53    v1.1:
54      - Fixed several shameful bugs.
55
56    v1.0:
57      - Initial release.
58
59---
60Shachaf & Oren Ben-Kiki
61shachaf+nethack@gmail.com
62nethack-oren@ben-kiki.org
63

xlog.readme

1Extended logfile patch for Nethack 3.4.3
2Version 3
3
4This patch creates a new, more verbose logfile of all of the games
5completed, in order to make interpreting the logfile easier, as well as
6providing a simple way to add new fields to the log.  A new file (named, by
7default, 'xlogfile') is created, with each line representing a completed
8game.  The format looks something like:
9
10version=3.4.3:points=24978:deathdnum=4:deathlev=8:maxlvl=12:hp=-4:maxhp=95:death
11s=1:deathdate=20051215:birthdate=20051215:uid=1000:role=Bar:race=Hum:gender=Mal:
12align=Neu:name=aardvark:death=killed by a gargoyle, while helpless:conduct=0xf80
13:turns=5925:achieve=0x200:realtime=1414:starttime=1134705144:endtime=1134706562
14
15The standard record and logfile both work the same as usual.
16
17All of the information from the standard logfile is stored in the extended
18logfile.  In addition, code to record some extra game data is included.
19
20version   - the version of nethack (eg '3.4.3')
21points    - the final score
22deathdnum - death dungeon number
23deathlev  - death level
24maxlvl    - max dungeon level
25hp        - final hit points
26maxhp     - max hit points
27deaths    - number of deaths
28deathdate - the date that the game ended (eg '20041130' is Nov 30, 2004)
29birthdate - the date that the game started
30uid       - the player's UID
31role      - the player's role (3-letter abbreviation, eg 'Sam')
32race      - the player's race (3-letter abbreviation, eg 'Hum')
33gender    - the player's gender (3-letter abbreviation, eg 'Mal')
34align     - the player's alignment (3-letter abbreviation, eg 'Law')
35name      - the player's name
36death     - the death string (eg 'killed by a woodchuck')
37
38* turns   - The number of turns elapsed during the game
39
40* conduct - The conducts followed during the game
41  The conducts are encoded as a bitfield, with each bit representing one
42  conduct.  If a bit is set, then the corresponding conduct was followed
43  during the game.  (Note: this is backwards from my original conduct
44  patch, but it seems more natural this way.)
45
46  Bit 1  (0x0001) - Went without food
47  Bit 2  (0x0002) - Strict vegan diet
48  Bit 3  (0x0004) - Vegetarian diet
49  Bit 4  (0x0008) - Atheist
50  Bit 5  (0x0010) - Never hit with a wielded weapon
51  Bit 6  (0x0020) - Pacifist
52  Bit 7  (0x0040) - Illiterate
53  Bit 8  (0x0080) - Never polymorphed an object
54  Bit 9  (0x0100) - Never changed form
55  Bit 10 (0x0200) - Used no wishes
56  Bit 11 (0x0400) - Did not wish for any artifacts
57  Bit 12 (0x0800) - Never genocided any monsters
58
59* realtime - The amount of time spent playing the game
60  Records the time (in seconds) actually spent playing the game.  (Or, more
61  accurately, all of the time that nethack is loaded and running the game.)
62  Specifically, the timer is started right before giving the welcome
63  message, and stopped when you save or when the game is over.
64
65  Note that this will invalidate save files, because the current value of
66  the timer is recorded in the save file.  Bones files should not be
67  invalidated.
68
69* achieve - Whether or not the player reached certain milestones
70  This is another bitfield that records whether or not certain things were
71  achieved.
72
73  Achievement bitfield:
74  bit  meaning
75   1   obtained the Bell of Opening
76   2   entered gehennom (by any means)
77   3   obtained the Candelabrum of Invocation
78   4   obtained the Book of the Dead
79   5   performed the invocation ritual
80   6   obtained the amulet
81   7   entered elemental planes
82   8   entered astral plane
83   9   ascended (not "escaped in celestial disgrace!")
84   10  obtained the luckstone from the Mines
85   11  obtained the sokoban prize
86   12  defeated Medusa (killed her by any means)
87
88  This will also invalidate save files, as a structure (u_achieve)
89  containing flags corresponding to a few of these achievements is added
90  to the savefile.  Bones files should not be invalidated.
91
92* starttime - The time the game was started, as obtained from time(2).
93              (That is, stored as a 32-bit integer number of seconds
94              since 00:00:00 UTC, January 1, 1970.)  This is the same
95              time as "birthdate" above, but with greater precision.
96
97* endtime - The time the game ended; it is the same time as "deathdate"
98            above.
99
100* gender0 - The player's original gender (3 letter abbreviation, eg 'Mal')
101
102* align0 - The player's original alignment (3 letter abbreviation, eg 'Law')
103
104The file sys/unix/Makefile.top is modified to add xlogfile to the install
105target.  If you are using a different system, you may need to either initially
106create xlogfile, or modify your makefiles appropriately.
107
108Also included in this patch is an option to display the actual elapsed time
109(the time that RECORD_REALTIME logs) on the status line.  It is disabled
110by default, so to enable it you can uncomment the definition of
111REALTIME_ON_BOTL in config.h (and then set the flag showrealtime in either
112nethackrc or via the options menu.)
113
114The REALTIME_ON_BOTL option does not depend on XLOGFILE being defined; I
115just added it to the same patch because they share most of the same code.
116It does break savefile compatibility for the same reasons that
117RECORD_REALTIME does.
118
119Breakdown of files changed:
120include/config.h
121  Added a definition for XLOGFILE, the extended logfile filename
122  Added definition of REALTIME_ON_BOTL
123  Added definitions for RECORD_CONDUCT, RECORD_TURNS, RECORD_ACHIEVE,
124  RECORD_REALTIME, RECORD_START_END_TIME, RECORD_GENDER0, RECORD_ALIGN0
125  in order to give fine-grained control of what should be logged.
126include/decl.h
127  add d_mineend_level and d_sokoend_level to dungeon_topology structure
128  declaration of u_achieve structure and extern definition of achieve
129  declaration of realtime_data structure and extern definition
130include/dungeon.h
131  add definitions of Is_mineend_level() and Is_sokoend_level()
132include/extern.h
133  declaration of get_realtime function
134include/flag.h
135  added showrealtime to iflags structure
136include/obj.h
137  add definition of "record_achieve_special" as "corpsenm"
138src/allmain.c
139  update the status line whenever the number of elapsed minutes changes
140  start the realtime timer and store the time that the game started
141  add get_realtime() function to calculate elapsed time
142src/botl.c
143  display elapsed time
144src/decl.c
145  declaration of globals achieve, realtime_data
146src/do.c
147  set enter_gehennom=1 when the player enters gehennom
148src/dungeon.c
149  add the mine end and sokoban end levels to the level_map list
150src/end.c
151  update the realtime counter when the game ends
152src/invent.c
153  set get_amulet=1, get_candelabrum=1, get_bell=1, and get_book=1 when the
154  corresponding item enters your inventory
155  set get_luckstone and finish_sokoban when the mines luckstone or sokoban
156  prize enters your inventory
157src/mklev.c
158  set perform_invocation=1 when you successfully perform the invocation
159  ritual
160src/mon.c
161  set killed_medusa=1 when Medusa is killed
162src/options.c
163  add "showrealtime" option
164src/pray.c
165  set ascended=1 when ascending
166src/restore.c
167  read the stored value of the realtime timer from the savefile, and set the
168  restore time properly
169src/save.c
170  write the elapsed time to the savefile
171src/sp_lev.c
172  set otmp->record_achieve_special = 1 when generating mines luckstone and
173  sokoban prize
174src/topten.c
175  add definition of deathtime
176  add munge_xlstring to convert any ':' in a string to '_'
177  add write_xlentry which writes a single xlogfile entry
178  add encodeconduct which converts the current player's conduct to a number
179  add encodeachieve which converts the game achievements to a number
180  store the time to deathtime when deathdate is calculated
181  open and write to the xlogfile just after writing to the logfile
182sys/unix/Makefile.top
183  create and set permissions on xlogfile when doing a 'make install'
184util/makedefs.c
185  add entries for XLOGFILE, RECORD_*, and REALTIME_ON_BOTL to
186  build_opts[] list
187