OSDN Git Service

fix #48255
[jnethack/source.git] / include / patchlevel.h
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. */
5
6 /* NetHack 3.6.x */
7 #define VERSION_MAJOR 3
8 #define VERSION_MINOR 6
9 /*
10  * PATCHLEVEL is updated for each release.
11  */
12 #define PATCHLEVEL 7
13 /*
14  * Incrementing EDITLEVEL can be used to force invalidation of old bones
15  * and save files.
16  */
17 #define EDITLEVEL 0
18
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."
24
25 /*
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
29  *      0xMMmmPPeeL
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.
33  */
34 #define VERSION_COMPATIBILITY 0x03060002L
35
36 /****************************************************************************/
37 /* Version 3.6.x */
38
39 /*  Patch 7, February 16, 2023
40  *
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
54  *      levcomp and dgncomp
55  *  windows: a bad chdir specified in win/win32/dgnstuff.mak caused full build to
56  *      abort
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
63  */
64
65 /*  Patch 6, March 8, 2020
66  *
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'
73  */
74
75 /*  Patch 5, January 27, 2020
76  *
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
89  */
90
91 /*  Patch 4, December 18, 2019
92  *
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
98  *      trap
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
103  *      code
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
109  *      trap
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'
115  */
116
117 /*  Patch 3, December 5, 2019
118  *
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
150  */
151
152 /*  Patch 2, May 7, 2019
153  *
154  *  Over 320 bug fixes including a couple of crash bug fixes as outlined in
155  *      doc/fixes36.2
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
164  */
165
166 /*  Patch 1, April 27, 2018
167  *
168  *  Over four hundred and seventy bug fixes and improvements as outlined in
169  *      doc/fixes36.1
170  */
171
172 /*
173  *  NetHack 3.6.0, December 7, 2015
174  *
175  *  Hundreds of bug fixes as outlined in doc/fixes36.0.
176  *  Some code reorganization.
177  *  Some new features.
178  *  Variations of some community patches rolled in.
179  */
180
181 /****************************************************************************/
182 /* Version 3.5.x */
183
184 /*  Version 3.5 was never officially released.
185  */
186
187 /****************************************************************************/
188 /* Version 3.4.x */
189
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
199  */
200
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
211  */
212
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)
226  */
227
228 /*
229  *  NetHack 3.4.0, March 20, 2002
230  *
231  *  Hundreds of general bug fixes including some for sliming, zapping,
232  *conduct,
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
252  */
253
254 /* Version 3.4 */
255
256 /****************************************************************************/
257 /* Version 3.3.x */
258
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
264  *  Redo Ranger quest
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)
275  */
276
277 /*
278  *  NetHack 3.3.0, December 10, 1999
279  *
280  *  Implement the differentiation of character class or role from the
281  *  character race.
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.
293  */
294
295 /* Version 3.3 */
296
297 /****************************************************************************/
298 /* Version 3.2.x */
299
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.
306  *
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
312  */
313
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
324  *
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
332  */
333
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)
345  *
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
359  */
360
361 /*
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
371  */
372
373 /* Version 3.2 */
374
375 /****************************************************************************/
376 /* Version 3.1.x */
377
378 /*
379  *  Patch 3, July 12, 1993
380  *  further revise Mac windowing and extend to Think C (courtesy
381  *      Barton House)
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
385  */
386
387 /*
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
399  */
400
401 /*
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
406  */
407
408 /*
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
420  *  X11 interface
421  *  ability to recover crashed games
422  *  full rewrite of Macintosh port
423  *  Amiga splitter
424  *  directory rearrangement (dat, doc, sys, win, util)
425  */
426
427 /* Version 3.1 */
428
429 /****************************************************************************/
430 /* Version 3.0 */
431
432 /*
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
437  */
438
439 /*
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
444  */
445
446 /*
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)
454  *  more const fixes
455  *  better support for common graphics (DEC VT and IBM)
456  *  and a number of simple fixes and consistency extensions
457  */
458
459 /*
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
475  */
476
477 /*
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
489  */
490
491 /*
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
496  * food
497  *  smarter treatment of iron balls (courtesy Kevin Darcy)
498  *  a handful of other bug fixes
499  */
500
501 /*
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'
510  *  assorted bug fixes
511  */
512
513 /*
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
520  *      patches
521  */
522
523 /*
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
533  */
534
535 /*
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
544  */
545
546 /*
547  *  NetHack 3.0 baseline release, July, 1989
548  */
549
550 /* Version 3.0 */
551
552 /****************************************************************************/
553
554 /*patchlevel.h*/