1 /* NetHack 3.6 patchlevel.h $NHDT-Date: 1674867524 2023/01/28 00:58:44 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.141 $ */
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /*-Copyright (c) Michael Allison, 2012. */
4 /* NetHack may be freely redistributed. See license for details. */
7 #define VERSION_MAJOR 3
8 #define VERSION_MINOR 6
10 * PATCHLEVEL is updated for each release.
14 * Incrementing EDITLEVEL can be used to force invalidation of old bones
19 #define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2023"
20 #define COPYRIGHT_BANNER_B \
21 " By Stichting Mathematisch Centrum and M. Stephenson."
22 /* COPYRIGHT_BANNER_C is generated by makedefs into date.h */
23 #define COPYRIGHT_BANNER_D " See license for details."
26 * If two or more successive releases have compatible data files, define
27 * this with the version number of the oldest such release so that the
28 * new release will accept old save and bones files. The format is
30 * 0x = literal prefix "0x", MM = major version, mm = minor version,
31 * PP = patch level, ee = edit level, L = literal suffix "L",
32 * with all four numbers specified as two hexadecimal digits.
34 #define VERSION_COMPATIBILITY 0x03060002L
36 /****************************************************************************/
39 /* Patch 7, February 16, 2023
41 * during engraving, spaces were counted instead of non-space (cherry-pick of
42 * 4e0a1e04 from NetHack-3.7)
43 * avoid potential buffer overflow in append_str()
44 * resolve missing dependency in NetHack.sln
45 * code in include/tradstdc.h was trying to suppress warn_unused result by
46 * defining warn_unused_result to an empty string and that began causing
47 * a build error within a system-supplied header file cdefs.h when using
48 * ubuntu impish 21.10; disable that for any Linux unless GCC_URWARN is
49 * defined to force it back into effect
50 * update_inventory() after leash goes slack
51 * player assigned name for monsters, specific objects, or object types could be
52 longer than what was intented to be allowed; for 'curses', much longer
53 * windows: added winflexbison to travis-ci configuration to permit full build of
55 * windows: a bad chdir specified in win/win32/dgnstuff.mak caused full build to
57 * windows: the console.rc file had outdated information stating 3.6.3 when the
58 * official 3.6.6 binary was built.
59 * windows: switch from using keyhandling dll's to incorporating the three
60 * variations (default, ray, 340) in sys/winnt/nttty.c
61 * curses: cherry-picked selectsaved code from 3.7 for menu of save files
62 * NetHackW: fix delayed rendering of cursor when using farlook
65 /* Patch 6, March 8, 2020
67 * invalid status highlight color could be maliciously used to corrupt memory
68 * formatting corpse names used internal buffers differently from formatting
69 * other objects and could potentially clobber memory
70 * avoid divide by 0 crash if 'bogusmon' (file of bogus monster types) is empty
71 * avoid #wizrumorcheck crash if either 'rumors.tru' or 'rumors.fal' or both
72 * were empty when makedefs built 'rumors'
75 /* Patch 5, January 27, 2020
77 * fix accessing mons[-1] when trying to gate in a non-valid demon
78 * fix accessing mons[-1] when monster figures out if a tin cures stoning
79 * have string_for_opt() return empty_optstr on failure
80 * ensure existing callers of string_for_opt() check return value before using it
81 * fix potential buffer overflow in add_menu_coloring()
82 * fix potential buffer overflow in sym_val()
83 * fix potential buffer overflow in pline(), raw_printf(), and config_error_add()
84 * fix potential buffer overflow in choose_windows()
85 * use vsnprintf instead of vsprintf in pline.c where possible
86 * Windows: incldues a fix from a 3.6.4 post-release update where
87 * OPTIONS=map_mode:fit_to_screen could cause a game start failure
88 * Windows: users with C-locale unmappable names could get game start failure
91 /* Patch 4, December 18, 2019
93 * fix potential buffer overflow when parsing run-time configuration file
94 * GDBPATH and GREPPATH from sysconf or -D... on compilation command line were
95 * being processed even if PANICTRACE was disabled but only being freed
96 * at end of game when that was enabled
97 * fix the article used in the message when your steed encounters a polymorph
99 * allow teleporting onto the vibrating square
100 * message "your knapsack can't accomodate any more items" when picking stuff
101 * up or removing such from container was inaccurate if there was some
102 * gold pending; vary the message rather than add more convoluted pickup
104 * dozen-ish assorted spelling/typo fixes in messages and source comments
105 * wizard mode wishing for terrain would leave it unmapped if done while blind
106 * wizard mode terrain wish could leave hero in water (severe vision limits)
107 * or in lava (trapped, sinking) which wasn't there any more
108 * flying hero can go down (via '>') holes or trap doors instead of escaping
110 * polymorphed hero hiding on the ceiling can now use '>' to unhide instead of
111 * being told "you can't go down here"
112 * fix compilation on platforms that split the ncurses and tinfo libraries
113 * Windows: allow all game files to be on a portable device via the sysconf
114 * option 'portable_device_paths'
117 /* Patch 3, December 5, 2019
119 * Fixed stale 'thrownobj' pointer for returning thrown aklys while engulfed
120 * Fixed uarmh null pointer dereference if a helm of opposite alignment came
121 * off due to being polymorphed
122 * Fixed 'object lost' panic when attempting to crawl of of the water during
123 * emergency disrobing/dropping
124 * Running now stops when moving over engravings so you can tell where they are
125 * Fixed detection of unseen/secret doors which failed to find monsters hiding
126 * under objects and failed to find monsters hiding at trap locations
127 * Ensured fatal status conditions made it to disclosure and/or dumplog
128 * Fixed "Bad fruit #N" warnings when saving bones with 'perm_invent' On
129 * Fixed it so yellow dragons don't have green breath
130 * Added several grammar corrections
131 * Improved recognition of deafness for several situations including the
132 * playing of musical instruments and bribing negotiations with demon lords
133 * Fixed ignoring of god's wrath when hero injured himself during altar kick
134 * Fixed several cases where persistent inventory window was not updated
135 * Fixed temple priests or shopkeepers moving over other monsters
136 * Fixed a crash-causing bug when putting on levitation boots over a sink
137 * Ensured that thrown or kicked objects will end up in bones
138 * Made water go all the way to the edges of level on the Plane of Water
139 * Made clouds disrupt line of sight along the edges of the Plane of Air
140 * Improved and expanded usage of status highlighting percentage rules
141 * Added more than 15 improvements and fixes to the curses window port
142 * Added and documented significant changes to default directory choices for
143 * the Windows platform
144 * Improved the layout and display of the player selection dialog used on the
145 * Windows graphical implementation
146 * Improved performance of some tty versions by reducing the number of
147 * function calls made from mapglyph
148 * Allowed the msdos implementation to build with curses and PDCurses
149 * Included over 100 other fixes and improvements as outlined in doc/fixes36.3
152 /* Patch 2, May 7, 2019
154 * Over 320 bug fixes including a couple of crash bug fixes as outlined in
156 * More than 15 enhancements or improvements
157 * Ensuring that unix Makefiles do not rely on features unique to gnu make
158 * Improvements to hilite_status parsing in an effort to ensure that expected
159 * and sensible values ranges are more easily specified and accepted
160 * Performance optimizations for tty
161 * Windows console tty via use of a back buffer
162 * Mac OS X build improvements and inclusion of an Xcode project
163 * Adopted the community curses window port
166 /* Patch 1, April 27, 2018
168 * Over four hundred and seventy bug fixes and improvements as outlined in
173 * NetHack 3.6.0, December 7, 2015
175 * Hundreds of bug fixes as outlined in doc/fixes36.0.
176 * Some code reorganization.
178 * Variations of some community patches rolled in.
181 /****************************************************************************/
184 /* Version 3.5 was never officially released.
187 /****************************************************************************/
190 /* Patch 3, December 7, 2003
191 * Several dozen general bug fixes including at least one fatal bug
192 * Correct several inconsistencies
193 * Handle level completely filled with monsters better
194 * Performance enhancements for win32tty port on Windows 98 and Me
195 * win32gui player selection fixes
196 * X11 player selection fixes, one of which could be fatal
197 * Eliminated a gold-in-shop-container cheat
198 * Include bones file version compatibility info in options file
201 /* Patch 2, August 30, 2003
202 * Fix a fatal bug that caused a crash when applying figurine, candle, or
203 * bell that gets used up
204 * Fix a fatal bug that triggered a panic when your secondary weapon was
205 * cursed during bones file creation
206 * Several dozen general bug fixes
207 * Fixed some Gnome compilation problems on Redhat 7.2 and 8.0
208 * Fixed a problem in the util Makefile
209 * Use random() by default under linux instead of lrand48()
210 * win32 tty adjustments and support for loading alternative key handlers
213 /* Patch 1, February 22, 2003
214 * Fix a few fatal errors including one for reentering shops, one
215 * involving land mines and boulders/statues, one for delayed
216 * polymorph, and one from a chest trap exploding ball and chain
217 * Fix a buffer overflow that could lead to security problems
218 * Hundreds of general bug fixes
219 * Several message and other glitches corrected
220 * Travel command adjustments and ability to disable travel command
221 * message recall window extensions (by Christian Cooper)
222 * win32: some interface improvements
223 * unix: improved tile support
224 * gnome: some fixes, and some enhancements by Dylan Alex Simon
225 * winCE: Windows CE port included (by Alex Kompel)
229 * NetHack 3.4.0, March 20, 2002
231 * Hundreds of general bug fixes including some for sliming, zapping,
233 * and several more for riding
234 * Eliminated a few potentially fatal bugs including one for stone-to-flesh,
235 * trouble-fixing during prayer, riding down stairs while punished,
236 * polyd player demon summoning, throwing digging tools into shops, and
237 * a couple from having the vision system enabled at inappropriate times
238 * Corrected some incorrect calculations in final scoring
239 * Enhanced config file processing and alert to duplication of entries
240 * Player selection prompt enhancements for TTY and X11
241 * Objects merge in containers
242 * Wish for "nothing", and genocide "none" to preserve your conduct
243 * Changes to Wizard quest
244 * Added the travel command which works by mouse click or '_' command
245 * Config file BOULDER option to specify the symbol for displaying boulders
246 * Incorporate modified versions of several 3.3.1 patches that have been
247 * in circulation in the NetHack community
248 * New Gnomish Mines levels (courtesy Kelly Bailey)
249 * Mac: command-key shortcuts in the player selection dialog
250 * Amiga: screenmode requester, and several amiga specific bug fixes
251 * Win32 graphical port contributed by Alex Kompel is now included
256 /****************************************************************************/
259 /* Patch 1, August 9, 2000
260 * Many, many general fixes, including a number for riding, twoweapon,
261 * and invisible monsters
262 * A security fix for a couple of potentially exploitable buffer overflows
263 * in previous versions
265 * Introduction of differentiation between different causes of blindness
266 * Overhaul of warning
267 * Functionality restored to Amiga (courtesy Janne Salmijarvi) and Atari
268 * (courtesy Christian "Marvin" Bressler) ports
269 * Mac: multiple interface fixes
270 * win32: fixed bug that caused messages to stop displaying after escape
271 * tty: use ANSI color (AF) over standard color (Sf) when given the choice
272 * several ports: offer for player selection only choices consistent with
273 * those already made by config file/command line (e.g., only offer roles
274 * that are compatible with specified race)
278 * NetHack 3.3.0, December 10, 1999
280 * Implement the differentiation of character class or role from the
282 * Removal of the Elf class, in preference to the Elf as a race.
283 * Introduction of Dwarves, Elves, Gnomes and Orcs as distinct races in
284 * addition to the Human "norm".
285 * Addition of the Monk and Ranger classes.
286 * Integrate some of the features of several branch versions of the game,
287 * notably NetHack--, NHplus, SLASH, and Slash'em.
288 * Adopt "the wizard patch" spellcasting system.
289 * Support for the Qt widget set.
290 * Y2K fix: use 4 digit year values for the dates in the score file
291 * updated COPYRIGHT_BANNER_A to reflect year of release.
292 * Dozens of other bug fixes, and minor improvements.
297 /****************************************************************************/
300 /* Patch 3, December 10, 1999
301 * Released simultaneously with 3.3.0 for the benefit of
302 * ports and platforms that were unable to get working
303 * versions of 3.3.0 ready prior to the year 2000. It
304 * consisted of just a few bug fixes and offered no new
305 * functionality changes over 3.2.2.
307 * Y2K fix: use 4 digit year values for the dates in the score file
308 * updated COPYRIGHT_BANNER_A to reflect year of release
309 * Fatal Mac bug removed
310 * DOS Makefile problem removed
311 * several bugs that could potentially trigger crashes removed
314 /* Patch 2, December 10, 1996
315 * fix the `recover' utility
316 * fix priest/minion name overflow which could cause Astral Plane crashes
317 * avoid crash when hit by own thrown boomerang
318 * " " " worn blindfold pushed off by applying cursed towel
319 * handle returning live Wizard correctly in deep dungeon levels
320 * don't occasionally display unseen areas of new levels during level change
321 * other minor display fixes
322 * fix several minor reason for death inconsistencies and shop bugs
323 * high dexterity doesn't guarantee that thrown eggs & potions will hit
325 * Selected platform- or configuration-specific changes:
326 * Mac: update `mrecover'
327 * MSDOS: don't switch into tiles mode when resuming play on rogue level
328 * tty: support object class characters for 'I' command in menu mode
329 * Unix: work around several <curses.h> compilation problems
330 * X11: as tty above, plus implement tty-style count handling in menus;
331 * better window placement support for old window managers
334 /* Patch 1, May 28, 1996
335 * eliminate `#qualifications'; fix weapon proficiency handling for missiles
336 * keep Medusa from continuing to move after she's been killed by reflection
337 * of her own gaze (fixes relmon panic)
338 * make monsters a little smarter; assorted eating and chatting changes
339 * fix object amnesia for spellbooks; fix Nazgul's sleep gas attack
340 * fix bullwhip usage for case of having recently been in a trap
341 * egg hatching fixes, oil potion fixes, magic marker fixes
342 * support object class chars as selection accelerators for some menus
343 * stricter parsing of run-time options at startup time
344 * interactive setting of options via menu (courtesy Per Liboriussen)
346 * Selected platform- or configuration-specific changes:
347 * Amiga: fix panic for tiles display in Gnomish mines
348 * BeOS: preliminary support for new BeBox platform; initially tty only
349 * DLB: avoid excessive fseek calls (major performance hit for MSDOS)
350 * HPUX: workaround for gcc-2.6.3 bug adversely affecting monster generation
351 * Mac: avoid MW 68K struct copy optimization bug which caused crashes;
352 * fix dragging of scrollbar; boost partitions to 2MB minimum
353 * MSDOS: wasn't safe to enter endgame for MFLOPPY configuration;
354 * fix re-entry into game after "!" (shell escape) + chdir + EXIT;
355 * F3/F4/F5 display interface swapping improvements;
356 * add support for preloading all tiles in protected mode environment
357 * TERMINFO: colors were wrong for some systems, such as Linux
358 * X11: display help files properly
362 * NetHack 3.2.0, April 11, 1996
363 * enhancements to the windowing systems including "tiles" or icons to
364 * visually represent monsters and objects (courtesy Warwick Allison)
365 * window based menu system introduced for inventory and selection
366 * moving light sources besides the player
367 * improved #untrap (courtesy Helge Hafting)
368 * spellcasting logic changes to balance spellcasting towards magic-using
369 * classes (courtesy Stephen White)
370 * many, many bug fixes and abuse eliminations
375 /****************************************************************************/
379 * Patch 3, July 12, 1993
380 * further revise Mac windowing and extend to Think C (courtesy
382 * fix confusing black/gray/white display on some MSDOS hardware
383 * remove fatal bugs dealing with horns of plenty and VMS bones levels,
384 * as well as more minor ones
388 * Patch 2, June 1, 1993
389 * add tty windowing to Mac and Amiga ports and revise native windowing
390 * allow direct screen I/O for MS-DOS versions instead of going through
391 * termcap routines (courtesy Michael Allison and Kevin Smolkowski)
392 * changes for NEC PC-9800 and various termcap.zip fixes by Yamamoto Keizo
393 * SYSV 386 music driver ported to 386BSD (courtesy Andrew Chernov) and
394 * SCO UNIX (courtesy Andreas Arens)
395 * enhanced pickup and disclosure options
396 * removed fatal bugs dealing with cursed bags of holding, renaming
397 * shopkeepers, objects falling through trapdoors on deep levels,
398 * and kicking embedded objects loose, and many more minor ones
402 * Patch 1, February 25, 1993
403 * add Windows NT console port (courtesy Michael Allison)
404 * polishing of Amiga, Mac, and X11 windowing
405 * fixing many small bugs, including the infamous 3.0 nurse relmon bug
409 * NetHack 3.1.0, January 25, 1993
410 * many, many changes and bugfixes -- some of the highlights include:
411 * display rewrite using line-of-sight vision
412 * general window interface, with the ability to use multiple interfaces
413 * in the same executable
414 * intelligent monsters
415 * enhanced dungeon mythology
416 * branching dungeons with more special levels, quest dungeons, and
417 * multi-level endgame
418 * more artifacts and more uses for artifacts
419 * generalization to multiple shops with damage repair
421 * ability to recover crashed games
422 * full rewrite of Macintosh port
424 * directory rearrangement (dat, doc, sys, win, util)
429 /****************************************************************************/
433 * Patch 10, February 5, 1991
434 * extend overlay manager to multiple files for easier binary distribution
435 * allow for more system and compiler variance
436 * remove more small insects
440 * Patch 9, June 26, 1990
441 * clear up some confusing documentation
442 * smooth some more rough edges in various ports
443 * and fix a couple more bugs
447 * Patch 8, June 3, 1990
448 * further debug and refine Macintosh port
449 * refine the overlay manager, rearrange the OVLx breakdown for better
450 * efficiency, rename the overlay macros, and split off the overlay
451 * instructions to Install.ovl
452 * introduce NEARDATA for better Amiga efficiency
453 * support for more VMS versions (courtesy Joshua Delahunty and Pat Rankin)
455 * better support for common graphics (DEC VT and IBM)
456 * and a number of simple fixes and consistency extensions
460 * Patch 7, February 19, 1990
461 * refine overlay support to handle portions of .c files through OVLx
462 * (courtesy above plus Kevin Smolkowski)
463 * update and extend Amiga port and documentation (courtesy Richard Addison,
464 * Jochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike Passaretti,
465 * and Gregg Wonderly)
466 * refine and extend Macintosh port and documentation (courtesy Johnny Lee,
467 * Kevin Sitze, Michael Sokolov, Andy Swanson, Jon Watte, and Tom West)
468 * refine VMS documentation
469 * continuing ANSIfication, this time of const usage
470 * teach '/' about differences within monster classes
471 * smarter eating code (yet again), death messages, and treatment of
472 * non-animal monsters, monster unconsciousness, and naming
473 * extended version command to give compilation options
474 * and the usual bug fixes and hole plugs
478 * Patch 6, November 19, 1989
479 * add overlay support for MS-DOS (courtesy Pierre Martineau, Stephen
480 * Spackman, and Norm Meluch)
481 * refine Macintosh port
482 * different door states show as different symbols (courtesy Ari Huttunen)
483 * smarter drawbridges (courtesy Kevin Darcy)
484 * add CLIPPING and split INFERNO off HARD
485 * further refine eating code wrt picking up and resumption
486 * make first few levels easier, by adding :x monsters and increasing initial
487 * attribute points and hitting probability
488 * teach '/' about configurable symbols
492 * Patch 5, October 15, 1989
493 * add support for Macintosh OS (courtesy Johnny Lee)
494 * fix annoying dependency loop via new color.h file
495 * allow interruption while eating -- general handling of partially eaten
497 * smarter treatment of iron balls (courtesy Kevin Darcy)
498 * a handful of other bug fixes
502 * Patch 4, September 27, 1989
503 * add support for VMS (courtesy David Gentzel)
504 * move monster-on-floor references into functions and implement the new
505 * lookup structure for both objects and monsters
506 * extend the definitions of objects and monsters to provide "living color"
507 * in the dungeon, instead of a single monster color
508 * ifdef varargs usage to satisfy ANSI compilers
509 * standardize on the color 'gray'
514 * Patch 3, September 6, 1989
515 * add war hammers and revise object prices
516 * extend prototypes to ANSI compilers in addition to the previous MSDOS ones
517 * move object-on-floor references into functions in preparation for planned
518 * data structures to allow faster access and better colors
519 * fix some more bugs, and extend the portability of things added in earlier
524 * Patch 2, August 16, 1989
525 * add support for OS/2 (courtesy Timo Hakulinen)
526 * add a better makefile for MicroSoft C (courtesy Paul Gyugyi)
527 * more accommodation of compilers and preprocessors
528 * add better screen-size sensing
529 * expand color use for PCs and introduce it for SVR3 UNIX machines
530 * extend '/' to multiple identifications
531 * allow meta key to be used to invoke extended commands
532 * fix various minor bugs, and do further code cleaning
536 * Patch 1, July 31, 1989
537 * add support for Atari TOS (courtesy Eric Smith) and Andrew File System
538 * (courtesy Ralf Brown)
539 * include the uuencoded version of termcap.arc for the MSDOS versions that
540 * was included with 2.2 and 2.3
541 * make a number of simple changes to accommodate various compilers
542 * fix a handful of bugs, and do some code cleaning elsewhere
543 * add more instructions for new environments and things commonly done wrong
547 * NetHack 3.0 baseline release, July, 1989
552 /****************************************************************************/