Source:NetHack 3.4.3/include/patchlevel.h

From NetHackWiki
Jump to: navigation, search

Below is the full text to include/patchlevel.h from the source code of NetHack 3.4.3. To link to a particular line, write [[patchlevel.h#line123]], for example.

This header file specifies the version number for this copy of NetHack. It also specifies the oldest version from which this NetHack will accept save files and bones files. The makedefs program will use both patchlevel.h and config.h to generate another header, date.h, that contains the version string and more version information.

NetHack 3.2.0/patchlevel.h introduces this header file in its modern form. Before that, patchlevel.h only contains a PATCHLEVEL definition and some comments.

Top of file

  1. /*	SCCS Id: @(#)patchlevel.h	3.4	2003/12/06	*/
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3. /* NetHack may be freely redistributed.  See license for details. */

The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

This header file does not have a guard against multiple inclusion. All other header files must not include patchlevel.h; only those few source files that need it should include it.

Version number

  1. /* NetHack 3.4.3 */
  2. #define VERSION_MAJOR	3
  3. #define VERSION_MINOR	4
  4. /*
  5. * PATCHLEVEL is updated for each release.
  6. */
  7. #define PATCHLEVEL	3

Together, the major version number, minor version number and patch level identify the 3.4.3 release. If the DevTeam would release 3.4.4, then it would increment PATCHLEVEL to 4; but if it would release 4.0.0, then it would increment VERSION_MAJOR to 4 and reset both VERSION_MINOR and PATCHLEVEL to 0.

Edit level

  1. /*
  2. * Incrementing EDITLEVEL can be used to force invalidation of old bones
  3. * and save files.
  4. */
  5. #define EDITLEVEL	0

The edit level is part of the version number stored in save files, and you may increment it without changing the displayed "3.4.3" number. To actually invalidate the older bones and saves, you need to disable the VERSION_COMPATIBILITY feature below.

Most releases from the DevTeam have EDITLEVEL set to 0. However, NetHack 3.3.0/patchlevel.h has EDITLEVEL set to 19. There may have been beta versions of 3.3.0 with lower edit levels; adding a "#define BETA" would cause makedefs to produce a version string like "3.3.0-19".

SLASH'EM releases include the edit level in the version number, after the letter "E". For example, SLASH'EM 0.0.7E6 (edit level 6) cannot load bones or saves from SLASH'EM 0.0.7E5 (edit level 5).

Copyright banner

  1. #define COPYRIGHT_BANNER_A \
  2. "NetHack, Copyright 1985-2003"
  3.  
  4. #define COPYRIGHT_BANNER_B \
  5. "         By Stichting Mathematisch Centrum and M. Stephenson."
  6.  
  7. #define COPYRIGHT_BANNER_C \
  8. "         See license for details."

You may recall seeing this familiar copyright banner when you start NetHack.

VERSION_COMPATIBILITY

  1. /*
  2. * If two or more successive releases have compatible data files, define
  3. * this with the version number of the oldest such release so that the
  4. * new release will accept old save and bones files.  The format is
  5. *	0xMMmmPPeeL
  6. * 0x = literal prefix "0x", MM = major version, mm = minor version,
  7. * PP = patch level, ee = edit level, L = literal suffix "L",
  8. * with all four numbers specified as two hexadecimal digits.
  9. */
  10. #define VERSION_COMPATIBILITY 0x03040000L	/* 3.4.0-0 */

The VERSION_COMPATIBILITY feature specifies an older version of NetHack with compatible bones and saves. This field specifies an upper bound. The makedefs program will compute an upper bound VERSION_NUMBER and store it in date.h. NetHack 3.4.3 will accept bones and saves files from any version in the range from 0x03040000L to 0x03040300UL.

When VERSION_COMPATIBILITY is undefined (for example with an "#if 0 ... #endif" block as in NetHack 3.4.0/patchlevel.h), NetHack accepts bones and saves from only one version. SLASH'EM releases also do not define VERSION_COMPATIBILITY.

A SLASH'EM release that preserves bones compatibility and save compatibility will increment its fix level, the number after the "F". SLASH'EM does not store the fix level in its bones or saves. For example, SLASH'EM 0.0.7E7F3 (patch level 7, fix level 3) may exchange bones and saves with SLASH'EM 0.0.7E7F2 (patch level 7, fix level 2).

Comments about changes

When the DevTeam increments PATCHLEVEL, it leaves a comment in patchlevel.h about the changes in the new release. The DevTeam has provided more information about these changes in the doc/fixes??.? files in the source code archive.

NetHack 3.4.3

  1. /*****************************************************************************/
  2. /* Version 3.4.x */
  3.  
  4. /*  Patch 3, December 7, 2003
  5. *  Several dozen general bug fixes including at least one fatal bug
  6. *  Correct several inconsistencies
  7. *  Handle level completely filled with monsters better
  8. *  Performance enhancements for win32tty port on Windows 98 and Me
  9. *  win32gui player selection fixes
  10. *  X11 player selection fixes, one of which could be fatal
  11. *  Eliminated a gold-in-shop-container cheat
  12. *  Include bones file version compatibility info in options file
  13. */

NetHack 3.4.2

  1. /*  Patch 2, August 30, 2003
  2. *  Fix a fatal bug that caused a crash when applying figurine, candle, or
  3. *      bell that gets used up
  4. *  Fix a fatal bug that triggered a panic when your secondary weapon was
  5. *      cursed during bones file creation
  6. *  Several dozen general bug fixes
  7. *  Fixed some Gnome compilation problems on Redhat 7.2 and 8.0
  8. *  Fixed a problem in the util Makefile
  9. *  Use random() by default under linux instead of lrand48()
  10. *  win32 tty adjustments and support for loading alternative key handlers
  11. */

NetHack 3.4.1

  1. /*  Patch 1, February 22, 2003
  2. *  Fix a few fatal errors including one for reentering shops, one
  3. *     involving land mines and boulders/statues, one for delayed
  4. *     polymorph, and one from a chest trap exploding ball and chain
  5. *  Fix a buffer overflow that could lead to security problems
  6. *  Hundreds of general bug fixes
  7. *  Several message and other glitches corrected
  8. *  Travel command adjustments and ability to disable travel command
  9. *  message recall window extensions (by Christian Cooper)
  10. *  win32: some interface improvements
  11. *  unix: improved tile support
  12. *  gnome: some fixes, and some enhancements by Dylan Alex Simon
  13. *  winCE: Windows CE port included (by Alex Kompel)
  14. */

NetHack 3.4.0

  1. /*
  2. *  NetHack 3.4.0, March 20, 2002
  3. *
  4. *  Hundreds of general bug fixes including some for sliming, zapping, conduct,
  5. *	and several more for riding
  6. *  Eliminated a few potentially fatal bugs including one for stone-to-flesh,
  7. *	trouble-fixing during prayer, riding down stairs while punished,
  8. *	polyd player demon summoning, throwing digging tools into shops, and
  9. *	a couple from having the vision system enabled at inappropriate times 
  10. *  Corrected some incorrect calculations in final scoring
  11. *  Enhanced config file processing and alert to duplication of entries
  12. *  Player selection prompt enhancements for TTY and X11
  13. *  Objects merge in containers
  14. *  Wish for "nothing", and genocide "none" to preserve your conduct
  15. *  Changes to Wizard quest
  16. *  Added the travel command which works by mouse click or '_' command
  17. *  Config file BOULDER option to specify the symbol for displaying boulders
  18. *  Incorporate modified versions of several 3.3.1 patches that have been
  19. *      in circulation in the NetHack community
  20. *  New Gnomish Mines levels (courtesy Kelly Bailey)
  21. *  Mac: command-key shortcuts in the player selection dialog
  22. *  Amiga: screenmode requester, and several amiga specific bug fixes
  23. *  Win32 graphical port contributed by Alex Kompel is now included
  24. */
  25.  
  26. /* Version 3.4 */

NetHack 3.3.1

  1. /*****************************************************************************/
  2. /* Version 3.3.x */
  3.  
  4. /*  Patch 1, August 9, 2000
  5. *  Many, many general fixes, including a number for riding, twoweapon,
  6. *	and invisible monsters
  7. *  A security fix for a couple of potentially exploitable buffer overflows
  8. *	in previous versions
  9. *  Redo Ranger quest
  10. *  Introduction of differentiation between different causes of blindness
  11. *  Overhaul of warning
  12. *  Functionality restored to Amiga (courtesy Janne Salmijarvi) and Atari
  13. *	(courtesy Christian "Marvin" Bressler) ports
  14. *  Mac: multiple interface fixes
  15. *  win32: fixed bug that caused messages to stop displaying after escape
  16. *  tty: use ANSI color (AF) over standard color (Sf) when given the choice
  17. *  several ports: offer for player selection only choices consistent with
  18. *	those already made by config file/command line (e.g., only offer roles
  19. *	that are compatible with specified race)
  20. */

NetHack 3.3.0

  1. /*
  2. *  NetHack 3.3.0, December 10, 1999
  3. *
  4. *  Implement the differentiation of character class or role from the
  5. *  character race.
  6. *  Removal of the Elf class, in preference to the Elf as a race.
  7. *  Introduction of Dwarves, Elves, Gnomes and Orcs as distinct races in
  8. *  addition to the Human "norm".
  9. *  Addition of the Monk and Ranger classes.
  10. *  Integrate some of the features of several branch versions of the game,
  11. *  notably NetHack--, NHplus, SLASH, and Slash'em.
  12. *  Adopt "the wizard patch" spellcasting system.
  13. *  Support for the Qt widget set.
  14. *  Y2K fix: use 4 digit year values for the dates in the score file
  15. *  updated COPYRIGHT_BANNER_A to reflect year of release.
  16. *  Dozens of other bug fixes, and minor improvements.
  17. */
  18.  
  19. /* Version 3.3 */

NetHack 3.2.3

  1. /*****************************************************************************/
  2. /* Version 3.2.x */
  3.  
  4. /*  Patch 3, December 10, 1999
  5. *  Released simultaneously with 3.3.0 for the benefit of
  6. *  ports and platforms that were unable to get working
  7. *  versions of 3.3.0 ready prior to the year 2000. It
  8. *  consisted of just a few bug fixes and offered no new
  9. *  functionality changes over 3.2.2.
  10. *
  11. *  Y2K fix: use 4 digit year values for the dates in the score file
  12. *  updated COPYRIGHT_BANNER_A to reflect year of release
  13. *  Fatal Mac bug removed
  14. *  DOS Makefile problem removed
  15. *  several bugs that could potentially trigger crashes removed
  16. */

NetHack 3.2.2

  1. /*  Patch 2, December 10, 1996
  2. *  fix the `recover' utility
  3. *  fix priest/minion name overflow which could cause Astral Plane crashes
  4. *  avoid crash when hit by own thrown boomerang
  5. *    "     "	 "   worn blindfold pushed off by applying cursed towel
  6. *  handle returning live Wizard correctly in deep dungeon levels
  7. *  don't occasionally display unseen areas of new levels during level change
  8. *  other minor display fixes
  9. *  fix several minor reason for death inconsistencies and shop bugs
  10. *  high dexterity doesn't guarantee that thrown eggs & potions will hit
  11. *
  12. *  Selected platform- or configuration-specific changes:
  13. *  Mac: update `mrecover'
  14. *  MSDOS: don't switch into tiles mode when resuming play on rogue level
  15. *  tty: support object class characters for 'I' command in menu mode
  16. *  Unix: work around several <curses.h> compilation problems
  17. *  X11: as tty above, plus implement tty-style count handling in menus;
  18. *	better window placement support for old window managers
  19. */

NetHack 3.2.1

  1. /*  Patch 1, May 28, 1996
  2. *  eliminate `#qualifications'; fix weapon proficiency handling for missiles
  3. *  keep Medusa from continuing to move after she's been killed by reflection
  4. *	of her own gaze (fixes relmon panic)
  5. *  make monsters a little smarter; assorted eating and chatting changes
  6. *  fix object amnesia for spellbooks; fix Nazgul's sleep gas attack
  7. *  fix bullwhip usage for case of having recently been in a trap
  8. *  egg hatching fixes, oil potion fixes, magic marker fixes
  9. *  support object class chars as selection accelerators for some menus
  10. *  stricter parsing of run-time options at startup time
  11. *  interactive setting of options via menu (courtesy Per Liboriussen)
  12. *
  13. *  Selected platform- or configuration-specific changes:
  14. *  Amiga: fix panic for tiles display in Gnomish mines
  15. *  BeOS: preliminary support for new BeBox platform; initially tty only
  16. *  DLB: avoid excessive fseek calls (major performance hit for MSDOS)
  17. *  HPUX: workaround for gcc-2.6.3 bug adversely affecting monster generation
  18. *  Mac: avoid MW 68K struct copy optimization bug which caused crashes;
  19. *	fix dragging of scrollbar; boost partitions to 2MB minimum
  20. *  MSDOS: wasn't safe to enter endgame for MFLOPPY configuration;
  21. *	fix re-entry into game after "!" (shell escape) + chdir + EXIT;
  22. *	F3/F4/F5 display interface swapping improvements;
  23. *	add support for preloading all tiles in protected mode environment
  24. *  TERMINFO: colors were wrong for some systems, such as Linux
  25. *  X11: display help files properly
  26. */

NetHack 3.2.0

  1. /*
  2. *  NetHack 3.2.0, April 11, 1996
  3. *  enhancements to the windowing systems including "tiles" or icons to
  4. *	visually represent monsters and objects (courtesy Warwick Allison)
  5. *  window based menu system introduced for inventory and selection
  6. *  moving light sources besides the player
  7. *  improved #untrap (courtesy Helge Hafting)
  8. *  spellcasting logic changes to balance spellcasting towards magic-using
  9. *	classes (courtesy Stephen White)
  10. *  many, many bug fixes and abuse eliminations
  11. */
  12.  
  13. /* Version 3.2 */

NetHack 3.1.3

  1. /*****************************************************************************/
  2. /* Version 3.1.x */
  3.  
  4. /*
  5. *  Patch 3, July 12, 1993
  6. *  further revise Mac windowing and extend to Think C (courtesy
  7. *	Barton House)
  8. *  fix confusing black/gray/white display on some MSDOS hardware
  9. *  remove fatal bugs dealing with horns of plenty and VMS bones levels,
  10. *	as well as more minor ones
  11. */

NetHack 3.1.2

  1. /*
  2. *  Patch 2, June 1, 1993
  3. *  add tty windowing to Mac and Amiga ports and revise native windowing
  4. *  allow direct screen I/O for MS-DOS versions instead of going through
  5. *	termcap routines (courtesy Michael Allison and Kevin Smolkowski)
  6. *  changes for NEC PC-9800 and various termcap.zip fixes by Yamamoto Keizo
  7. *  SYSV 386 music driver ported to 386BSD (courtesy Andrew Chernov) and
  8. *	SCO UNIX (courtesy Andreas Arens)
  9. *  enhanced pickup and disclosure options
  10. *  removed fatal bugs dealing with cursed bags of holding, renaming
  11. *	shopkeepers, objects falling through trapdoors on deep levels,
  12. *	and kicking embedded objects loose, and many more minor ones
  13. */

NetHack 3.1.1

  1. /*
  2. *  Patch 1, February 25, 1993
  3. *  add Windows NT console port (courtesy Michael Allison)
  4. *  polishing of Amiga, Mac, and X11 windowing
  5. *  fixing many small bugs, including the infamous 3.0 nurse relmon bug
  6. */

NetHack 3.1.0

  1. /*
  2. *  NetHack 3.1.0, January 25, 1993
  3. *  many, many changes and bugfixes -- some of the highlights include:
  4. *  display rewrite using line-of-sight vision
  5. *  general window interface, with the ability to use multiple interfaces
  6. *	in the same executable
  7. *  intelligent monsters
  8. *  enhanced dungeon mythology
  9. *  branching dungeons with more special levels, quest dungeons, and
  10. *	multi-level endgame
  11. *  more artifacts and more uses for artifacts
  12. *  generalization to multiple shops with damage repair
  13. *  X11 interface
  14. *  ability to recover crashed games
  15. *  full rewrite of Macintosh port
  16. *  Amiga splitter
  17. *  directory rearrangement (dat, doc, sys, win, util)
  18. */
  19.  
  20. /* Version 3.1 */

NetHack 3.0.10

  1. /*****************************************************************************/
  2. /* Version 3.0 */
  3.  
  4. /*
  5. *  Patch 10, February 5, 1991
  6. *  extend overlay manager to multiple files for easier binary distribution
  7. *  allow for more system and compiler variance
  8. *  remove more small insects
  9. */

NetHack 3.0.9

  1. /*
  2. *  Patch 9, June 26, 1990
  3. *  clear up some confusing documentation
  4. *  smooth some more rough edges in various ports
  5. *  and fix a couple more bugs
  6. */

NetHack 3.0.8

  1. /*
  2. *  Patch 8, June 3, 1990
  3. *  further debug and refine Macintosh port
  4. *  refine the overlay manager, rearrange the OVLx breakdown for better
  5. *	efficiency, rename the overlay macros, and split off the overlay
  6. *	instructions to Install.ovl
  7. *  introduce NEARDATA for better Amiga efficiency
  8. *  support for more VMS versions (courtesy Joshua Delahunty and Pat Rankin)
  9. *  more const fixes
  10. *  better support for common graphics (DEC VT and IBM)
  11. *  and a number of simple fixes and consistency extensions
  12. */

NetHack 3.0.7

  1. /*
  2. *  Patch 7, February 19, 1990
  3. *  refine overlay support to handle portions of .c files through OVLx
  4. *	(courtesy above plus Kevin Smolkowski)
  5. *  update and extend Amiga port and documentation (courtesy Richard Addison,
  6. *	Jochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike Passaretti,
  7. *	and Gregg Wonderly)
  8. *  refine and extend Macintosh port and documentation (courtesy Johnny Lee,
  9. *	Kevin Sitze, Michael Sokolov, Andy Swanson, Jon Watte, and Tom West)
  10. *  refine VMS documentation
  11. *  continuing ANSIfication, this time of const usage
  12. *  teach '/' about differences within monster classes
  13. *  smarter eating code (yet again), death messages, and treatment of
  14. *	non-animal monsters, monster unconsciousness, and naming
  15. *  extended version command to give compilation options
  16. *  and the usual bug fixes and hole plugs
  17. */

NetHack 3.0.6

  1. /*
  2. *  Patch 6, November 19, 1989
  3. *  add overlay support for MS-DOS (courtesy Pierre Martineau, Stephen
  4. *	Spackman, and Norm Meluch)
  5. *  refine Macintosh port
  6. *  different door states show as different symbols (courtesy Ari Huttunen)
  7. *  smarter drawbridges (courtesy Kevin Darcy)
  8. *  add CLIPPING and split INFERNO off HARD
  9. *  further refine eating code wrt picking up and resumption
  10. *  make first few levels easier, by adding :x monsters and increasing initial
  11. *	attribute points and hitting probability
  12. *  teach '/' about configurable symbols
  13. */

NetHack 3.0.5

  1. /*
  2. *  Patch 5, October 15, 1989
  3. *  add support for Macintosh OS (courtesy Johnny Lee)
  4. *  fix annoying dependency loop via new color.h file
  5. *  allow interruption while eating -- general handling of partially eaten food
  6. *  smarter treatment of iron balls (courtesy Kevin Darcy)
  7. *  a handful of other bug fixes
  8. */

NetHack 3.0.4

  1. /*
  2. *  Patch 4, September 27, 1989
  3. *  add support for VMS (courtesy David Gentzel)
  4. *  move monster-on-floor references into functions and implement the new
  5. *	lookup structure for both objects and monsters
  6. *  extend the definitions of objects and monsters to provide "living color"
  7. *	in the dungeon, instead of a single monster color
  8. *  ifdef varargs usage to satisfy ANSI compilers
  9. *  standardize on the color 'gray'
  10. *  assorted bug fixes
  11. */

NetHack 3.0.3

  1. /*
  2. *  Patch 3, September 6, 1989
  3. *  add war hammers and revise object prices
  4. *  extend prototypes to ANSI compilers in addition to the previous MSDOS ones
  5. *  move object-on-floor references into functions in preparation for planned
  6. *	data structures to allow faster access and better colors
  7. *  fix some more bugs, and extend the portability of things added in earlier
  8. *	patches
  9. */

NetHack 3.0.2

  1. /*
  2. *  Patch 2, August 16, 1989
  3. *  add support for OS/2 (courtesy Timo Hakulinen)
  4. *  add a better makefile for MicroSoft C (courtesy Paul Gyugyi)
  5. *  more accomodation of compilers and preprocessors
  6. *  add better screen-size sensing
  7. *  expand color use for PCs and introduce it for SVR3 UNIX machines
  8. *  extend '/' to multiple identifications
  9. *  allow meta key to be used to invoke extended commands
  10. *  fix various minor bugs, and do further code cleaning
  11. */

NetHack 3.0.1

  1. /*
  2. *  Patch 1, July 31, 1989
  3. *  add support for Atari TOS (courtesy Eric Smith) and Andrew File System
  4. *	(courtesy Ralf Brown)
  5. *  include the uuencoded version of termcap.arc for the MSDOS versions that
  6. *	was included with 2.2 and 2.3
  7. *  make a number of simple changes to accommodate various compilers
  8. *  fix a handful of bugs, and do some code cleaning elsewhere
  9. *  add more instructions for new environments and things commonly done wrong
  10. */

NetHack 3.0.0

  1. /*
  2. *  NetHack 3.0 baseline release, July, 1989
  3. */
  4.  
  5. /* Version 3.0 */
  6.  
  7. /*****************************************************************************/
  8.  
  9. /*patchlevel.h*/