diff --git a/Files b/Files index 959393d8e..919d50808 100644 --- a/Files +++ b/Files @@ -22,13 +22,14 @@ engrave.txt epitaph.txt doc: (files for all versions) -Guidebook.mn Guidebook.tex Guidebook.txt dgn_comp.6 dgn_comp.txt -dlb.6 dlb.txt fixes22.0 fixes30.0 fixes31.1 -fixes31.2 fixes31.3 fixes32.0 fixes32.1 fixes32.2 -fixes32.3 fixes33.0 fixes33.1 fixes34.0 fixes34.1 -fixes34.2 fixes34.3 fixes35.0 fixes36.0 lev_comp.6 -lev_comp.txt makedefs.6 makedefs.txt nethack.6 nethack.txt -recover.6 recover.txt tmac.n window.doc +config.nh Guidebook.mn Guidebook.tex Guidebook.txt dgn_comp.6 +dgn_comp.txt dlb.6 dlb.txt fixes22.0 fixes30.0 +fixes31.1 fixes31.2 fixes31.3 fixes32.0 fixes32.1 +fixes32.2 fixes32.3 fixes33.0 fixes33.1 fixes34.0 +fixes34.1 fixes34.2 fixes34.3 fixes35.0 fixes36.0 +fixes36.1 lev_comp.6 lev_comp.txt makedefs.6 makedefs.txt +nethack.6 nethack.txt recover.6 recover.txt tmac.n +window.doc include: (files for all versions) @@ -120,7 +121,7 @@ Install.dos Makefile.BC Makefile.GCC Makefile.MSC moveinit.pat msdos.c msdoshlp.txt ovlinit.c pckeys.c pctiles.c pctiles.h pcvideo.h portio.h schema1.BC schema2.BC schema3.MSC SCHEMA35.MSC setup.bat sound.c tile2bin.c -video.c vidtxt.c vidvga.c +video.c vidtxt.c vidvesa.c vidvga.c (files for running MSDOS binary under Windows) nhico.uu nhpif.uu @@ -264,9 +265,9 @@ NetHackTerm.applescript recover.pl win/share: (files for versions using optional tiles) -gifread.c monsters.txt objects.txt other.txt ppmwrite.c -renumtiles.pl thintile.c tile.doc tile.h tile2bmp.c -tilemap.c tiletext.c +gifread.c giftiles.c monsters.txt objects.txt other.txt +ppmwrite.c renumtiles.pl thintile.c tile.doc tile.h +tile2bmp.c tilemap.c tiletext.c win/tty: (files for tty versions) diff --git a/dat/bigroom.des b/dat/bigroom.des index 3726d74c0..dcec9854b 100644 --- a/dat/bigroom.des +++ b/dat/bigroom.des @@ -139,15 +139,22 @@ MAP --------------------------------------------------------------------------- ENDMAP # Dungeon Description -REGION:(01,01,23,06),lit,"ordinary" -REGION:(01,07,23,10),unlit,"ordinary" -REGION:(01,11,23,16),lit,"ordinary" -REGION:(24,01,50,06),unlit,"ordinary" -REGION:(24,07,50,10),lit,"ordinary" -REGION:(24,11,50,16),unlit,"ordinary" -REGION:(51,01,73,06),lit,"ordinary" -REGION:(51,07,73,10),unlit,"ordinary" -REGION:(51,11,73,16),lit,"ordinary" +REGION:(01,01,73,16),lit,"ordinary" +SWITCH [ 3 ] { + CASE 0: + REGION:(01,07,22,09),unlit,"ordinary" + REGION:(24,01,50,05),unlit,"ordinary" + REGION:(24,11,50,16),unlit,"ordinary" + REGION:(52,07,73,09),unlit,"ordinary" + BREAK + CASE 1: + REGION:(24,01,50,16),unlit,"ordinary" + BREAK + CASE 2: + REGION:(01,01,22,16),unlit,"ordinary" + REGION:(52,01,73,16),unlit,"ordinary" + BREAK +} # Stairs STAIR:random,up STAIR:random,down diff --git a/dat/data.base b/dat/data.base index 50152f2c1..b18af14ef 100644 --- a/dat/data.base +++ b/dat/data.base @@ -5231,6 +5231,9 @@ unicorn horn warm glow stage, then I use my horn to burn off any excess and keep me right there." [ Unicorn Variations, by Roger Zelazny ] +unreconnoitered + Area of map which is beyond limited perception range when + underwater or engulfed by a monster. valkyrie * valkyrie The Valkyries were the thirteen choosers of the slain, the diff --git a/dat/dungeon.def b/dat/dungeon.def index eeb0cbbe1..d4d61fbaf 100644 --- a/dat/dungeon.def +++ b/dat/dungeon.def @@ -1,4 +1,4 @@ -# NetHack 3.6 dungeon.def $NHDT-Date: 1432512783 2015/05/25 00:13:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.13 $ +# NetHack 3.6 dungeon.def $NHDT-Date: 1462486876 2016/05/05 22:21:16 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.14 $ # Copyright (c) 1990-95 by M. Stephenson # NetHack may be freely redistributed. See license for details. # @@ -119,6 +119,10 @@ DESCRIPTION: mazelike ALIGNMENT: chaotic ENTRY: -1 LEVEL: "tower1" "none" @ (1, 0) +# it isn't necessary to list these last two, but doing so makes them +# show up in ^O output and in the level teleport menu +LEVEL: "tower2" "none" @ (2, 0) +LEVEL: "tower3" "none" @ (3, 0) # # The Endgame levels diff --git a/dat/gehennom.des b/dat/gehennom.des index 3d58c3692..65fab4e28 100644 --- a/dat/gehennom.des +++ b/dat/gehennom.des @@ -521,27 +521,37 @@ TRAP:"magic", random MAZE:"baalz",' ' FLAGS: noteleport,corrmaze GEOMETRY:right,center +# the two pools are fakes used to mark spots which need special wall fixups +# the two iron bars are eyes and spots to their left will be made diggable MAP ------------------------------------------------- -| --- ---- -| ---- | ------------ | -| ------ | --------|..........|--- -| |....| -------|...........-------------- +| ---- ---- +| ---- | ----------- | +| ------ | ---------|.........|--P +| F....| -------|...........-------------- ---....|--|..................S............|---- -....--....S..----------------|............S...| ++...--....S..----------------|............S...| ---....|--|..................|............|---- -| |....| -------|...........-----S-------- -| ------ | --------|..........|--- -| ---- | ------------ | -| --- ---- +| F....| -------|...........-----S-------- +| ------ | ---------|.........|--P +| ---- | ----------- | +| ---- ---- ------------------------------------------------- ENDMAP STAIR:levregion(01,00,15,20),levregion(15,1,70,16),up BRANCH:levregion(01,00,15,20),levregion(15,1,70,16) TELEPORT_REGION:levregion(01,00,15,20),levregion(15,1,70,16) -NON_DIGGABLE:(00,00,46,12) +# this actually leaves the farthest right column diggable +NON_DIGGABLE:(00,00,47,12) MAZEWALK:(00,06),west STAIR:(44,06),down +DOOR:locked,(00,06) +IF [50%] { + TERRAIN:(34,08),'-' + TERRAIN:(34,04),'S' + TERRAIN:(29,05),'|' + TERRAIN:(29,07),'S' +} # The fellow in residence MONSTER:('&',"Baalzebub"),(35,06) # Some random weapons and armor. diff --git a/dat/hh b/dat/hh index 146af4275..09eac4c2d 100644 --- a/dat/hh +++ b/dat/hh @@ -80,7 +80,7 @@ Z Zap cast a spell (use Y instead of Z if number_pad is -1) $ gold count your gold + spells list the spells you know; also rearrange them if desired ` classkn display known items for one class of objects -_ travel move via a shortest-path algorithm to a point on the map +_ travel move via a shortest-path algorithm to a point on the map . rest wait a moment , pickup pick up all you can carry @ toggle "pickup" (auto pickup) option on and off @@ -93,7 +93,9 @@ via the meta modifier instead of the # prefix: M-? display extended command help (if the platform allows this) M-2 twoweapon toggle two-weapon combat (unless number_pad is enabled) M-a adjust adjust inventory letters +M-A annotate add a one-line note to the current dungeon level (see M-O) M-c chat talk to someone +M-C conduct view optional challanges M-d dip dip an object into something M-e enhance advance or check weapon and spell skills M-f force force a lock @@ -102,12 +104,16 @@ M-j jump jump to another location M-l loot loot a box on the floor M-m monster use a monster's special ability M-n name name a monster, an individual object, or a type of object +M-N name synonym for M-n M-o offer offer a sacrifice to the gods +M-O overview display information about visited levels and annotations M-p pray pray to the gods for help M-q quit stop playing M-r rub rub a lamp or a stone +M-R ride mount or dismount saddled steed M-s sit sit down M-t turn turn undead +M-T tip upend a container to dump out its contents M-u untrap untrap something M-v version print compile time options for this version M-w wipe wipe off your face diff --git a/dat/knox.des b/dat/knox.des index bf602c1ed..48cef7414 100644 --- a/dat/knox.des +++ b/dat/knox.des @@ -6,6 +6,8 @@ MAZE:"knox",' ' FLAGS: noteleport GEOMETRY:center,center +# Fort's entry is via a secret door rather than a drawbridge; +# the moat must be manually circumvented. MAP ---------------------------------------------------------------------------- | |........|...............................................................| @@ -37,11 +39,27 @@ TELEPORT_REGION:(06,16,09,17),(0,0,0,0),up TELEPORT_REGION:(06,16,09,17),(0,0,0,0),down # Throne room, with Croesus on the throne REGION:(37,08,46,11),lit,"throne" -MONSTER:('@',"Croesus"),(43,10),hostile +# 50% chance each to move throne and/or fort's entry secret door up one row +IF [50%] { + MONSTER:('@',"Croesus"),(43,10),hostile +} ELSE { + MONSTER:('@',"Croesus"),(43,09),hostile + TERRAIN:(43,09), '\' + TERRAIN:(43,10), '.' +} +IF [50%] { + TERRAIN:(47,09), 'S' + TERRAIN:(47,10), '|' +} # The Vault # Using unfilled morgue for # identification in mkmaze.c REGION:(21,08,35,11),lit,"morgue",unfilled +# Vault entrance also varies +IF [50%] { + TERRAIN:(36,09), '|' + TERRAIN:(36,10), 'S' +} # Corner towers REGION:(19,06,21,06),lit,"ordinary" REGION:(46,06,48,06),lit,"ordinary" diff --git a/dat/symbols b/dat/symbols index 9c9308c26..4e308a0e2 100644 --- a/dat/symbols +++ b/dat/symbols @@ -198,7 +198,7 @@ start: RogueEpyx S_armor: \x0a # Vert rect with o S_ring: \x09 # circle with arrow S_amulet: \x0c # "female" symbol - S_food: \x05 # club (as in cards) + S_food: \x05 # club (as in cards) S_potion: \xad # upside down '!' S_scroll: \x0e # musical note S_wand: \xe7 # greek tau @@ -394,3 +394,15 @@ start: NHAccess S_explode9: \047 finish +start: plain + Description: Same as Default symbols, except '+' for corner walls + S_tlcorn: '+' + S_trcorn: '+' + S_blcorn: '+' + S_brcorn: '+' + S_crwall: '+' + S_tuwall: '+' + S_tdwall: '+' + S_tlwall: '+' + S_trwall: '+' +finish #plain -- other symbols implicitly retain their default values diff --git a/dat/tribute b/dat/tribute index 574edfd01..ef2b776cd 100644 --- a/dat/tribute +++ b/dat/tribute @@ -5797,7 +5797,7 @@ the list 'the man who arrived just before you'. # second paragraph is a bit "on the nose" but is too good to leave out %passage 2 The reason for the story was a mix of many things. There was humanity's -desire to do forebidden deeds merely because they were forbidden. +desire to do forbidden deeds merely because they were forbidden. There was its desire to find new horizons and kill the people who live beyond them. There were the mysterious scrolls. There was the cucumber. But mostly there was the knowledge that one day, it would all be over. diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index aab1169f9..977cad2a6 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -345,7 +345,7 @@ show only your experience level here. The number of turns elapsed so far, displayed if you have the .op time option set. -.lp Status +.lp "Status " Hunger: your current hunger status. Values are \fBSatiated\fP, \fBNot Hungry\fP (or \fBNormal\fP), @@ -354,7 +354,7 @@ Values are \fBSatiated\fP, \fBNot Hungry\fP (or \fBNormal\fP), Not shown when \fBNormal\fP. .lp "" Encumbrance: -an indication of how what your are carrying affects your ability to move. +an indication of how what you are carrying affects your ability to move. Values are \fBUnencumbered\fP, \fBEncumbered\fP, \fBStressed\fP, \fBStrained\fP, \fBOvertaxed\fP, and \fBOverloaded\fP. Not shown when \fBUnencumbered\fP. @@ -368,7 +368,7 @@ Fatal conditions: .lp "" Non-fatal conditions: \fBBlind\fP (can't see), \fBDeaf\fP (can't hear), -\fBStun\fB (stunned), \fBConf\fP (confused), \fBHallu\fP (hallucinating). +\fBStun\fP (stunned), \fBConf\fP (confused), \fBHallu\fP (hallucinating). .lp "" Movement modifiers: \fBLev\fP (levitating), \fBFly\fP (flying), \fBRide\fP (riding). @@ -876,6 +876,7 @@ Escape to a shell. .lp # Perform an extended command. .lp "" +.pg As you can see, the authors of NetHack used up all the letters, so this is a way to introduce the less frequently used commands. @@ -982,6 +983,7 @@ Print compile time options for this version of NetHack. Wipe off your face. .lp "#? " Help menu: get the list of available extended commands. +.lp "" .pg If your keyboard has a meta key (which, when pressed in combination with another key, modifies it by setting the `meta' [8th, or `high'] @@ -1049,6 +1051,7 @@ option to have nethack combine them into meta+key. #version .lp M-w #wipe +.lp "" .pg If the .op number_pad @@ -2140,6 +2143,20 @@ lets you refine how it behaves. Here are the valid prefixes: .CC - "do not disclose it and do not prompt." .ei .ed +The listing of vanquished monsters can be sorted, +so there are two additional choices for `v': +.sd +.si +.CC ? "prompt you and default to ask on the prompt;" +.CC # "disclose it without prompting, ask for sort order." +.ei +.ed +Asking refers to picking one of the orderings from a menu. +The `+' disclose without prompting choice, +or being prompted and answering `y' rather than `a', +will default to showing monsters in the traditional order, +from high level to low level. +.lp "" Omitted categories are implicitly added with `n' prefix. Specified categories with omitted prefix implicitly use `+' prefix. Order of the disclosure categories does not matter, program display for diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 8f2e601b4..b66e5466c 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -418,7 +418,7 @@ Not shown when {\it Normal}. %.lp "" Encumbrance: -an indication of how what your are carrying affects your ability to move. +an indication of how what you are carrying affects your ability to move. Values are {\it Unencumbered}, {\it Encumbered}, {\it Stressed}, {\it Strained}, {\it Overtaxed}, and {\it Overloaded}. Not shown when {\it Unencumbered}. @@ -636,7 +636,7 @@ will give a brief reminder about how it works. If the {\it autodescribe\/} option is on, a short description of what you see at each location is -shown as you move the cursor. Typing `{\tt #}' while picking a location will +shown as you move the cursor. Typing `{\tt \#}' while picking a location will toggle that option on or off. The {\it whatis\verb+_+coord\/} @@ -953,10 +953,11 @@ the exchange still takes place. \item[\tb{X}] Toggle two-weapon combat, if your character can do it. Also available via the ``{\tt \#twoweapon}'' extended command.\\ -+.lp "" -+(In versions prior to 3.6 this was the command to switch from normal -+play to ``explore mode'', also known as ``discovery mode'', which has now -+been moved to ``{\tt \#explore}''.) +%.lp "" + +(In versions prior to 3.6 this was the command to switch from normal +play to ``explore mode'', also known as ``discovery mode'', which has now +been moved to ``{\tt \#explore}''.) %.lp \item[\tb{\^{}X}] Display basic information about your character.\\ @@ -2569,6 +2570,22 @@ lets you refine how it behaves. Here are the valid prefixes: %.ei %.ed +The listing of vanquished monsters can be sorted, +so there are two additional choices for `{\tt v}': +%.sd +%.si +{\tt ?} --- prompt you and default to ask on the prompt;\\ +{\tt\#} --- disclose it without prompting, ask for sort order. +%.ei +%.ed + +Asking refers to picking one of the orderings from a menu. +The `{\tt +}' disclose without prompting choice, +or being prompted and answering `{\tt y}' rather than `{\tt a}', +will default to showing monsters in the traditional order, +from high level to low level. +.lp "" + %.lp "" (ex.\ ``{\tt disclose:yi na +v -g o}'') The example sets @@ -3083,15 +3100,15 @@ The possibile settings are: %.sd %.si -{\tt c} --- \verb#compass ('east' or '3s' or '2n,4w')#; -{\tt m} --- \verb#map (map column x=0 is not used)#; -{\tt s} --- \verb#screen [row,column] (row is offset to match tty usage)#; +{\tt c} --- \verb#compass ('east' or '3s' or '2n,4w')#;\\ +{\tt m} --- \verb#map (map column x=0 is not used)#;\\ +{\tt s} --- \verb#screen [row,column] (row is offset to match tty usage)#;\\ {\tt n} --- \verb#none (no coordinates shown) [default]#. %.ei %.ed %.lp "" -+The +The {\it whatis\verb+_+coord\/} option is also used with the `{\tt /m}', `{\tt /M}', `{\tt /o}', and `{\tt /O}' sub-commands diff --git a/doc/config.nh b/doc/config.nh new file mode 100644 index 000000000..b8b5f6ccd --- /dev/null +++ b/doc/config.nh @@ -0,0 +1,527 @@ +# Sample config file for NetHack 3.6 +# +# A '#' at the beginning of a line means the rest of the line is a comment. +# +# Some options must be set in this file, other options can be toggled while +# playing. +# +# Copy the contents of this file into +# * defaults.nh, same folder as nethack.exe or nethackW.exe (DOS, Windows) +# * ~/.nethackrc (Unix, linux, Mac OS X) +# * "NetHack Defaults" on pre-OSX Mac and BeOS +# * NetHack.cnf on Amiga, Atari, OS/2, and VMS +# +# To change the configuration, comment out the unwanted lines, and +# uncomment the configuration you want. +# +# There are two types of options, boolean and compound options. +# Boolean options toggle a setting on or off, while compound options +# take more diverse values. +# Prefix a boolean option with 'no' or '!' to turn it off. +# For compound options, the option name and value are separated by a colon. +# +# Some options are persistent, and apply only to new games. +# +# For more information about the options, see the Guidebook. + + +# Set your character's name. +#OPTIONS=name:Janet + +# Set your character's role, race, gender, and alignment +#OPTIONS=role:Valkyrie, race:Human, gender:female, align:lawful + +# Set the default dog, cat, and horse names, and your fruit +#OPTIONS=dogname:Fido +#OPTIONS=catname:Morris +#OPTIONS=horsename:Silver +#OPTIONS=fruit:guava + +# Turn on autopickup, and set object types which are picked up automatically +# Both are persistent. +#OPTIONS=autopickup,pickup_types:$"=/!?+ +# Automatically pick up items you threw. Persistent. +#OPTIONS=pickup_thrown +# When you pick up an item that would exceed this encumbrance +# level (Unencumbered, Burdened, streSsed, straiNed, overTaxed, +# or overLoaded), you will be asked if you want to continue. Persistent. +#OPTIONS=pickup_burden:u + + +# Enable messages about what your character hears +#OPTIONS=acoustics + +# Causes NetHack's top level command loop to treat two character sequence +# "ESC c" as M-c, for terminals or emulators which send "ESC c" when Alt+c +# is pressed. +#OPTIONS=altmeta + +# NetHack should display an ascii character map if it can. +#OPTIONS=ascii_map + +# Automatically describe the terrain under cursor when asked to +# get a location on the map. +#OPTIONS=autodescribe + +# Automatically dig if walking into a wall and you're wielding a digging +# implement or can otherwise dig through the wall. +#OPTIONS=autodig + +# Automatically try to open doors when walking into them +#OPTIONS=autoopen + +# Let NetHack fill your quiver or make ready some suitable weapon, +# when firing with empty quiver or nothing at the ready. +#OPTIONS=autoquiver + +# Conduct/Role-playing: blind from birth or "zen" +#OPTIONS=blind +# Conduct/Role-playing: starts with no worn armor. +# Wearing any armor will make you lose this conduct +#OPTIONS=nudist + +# Disable loading and saving of bones files +#OPTIONS=!bones + +# Save game state after each level change, for possible recovery +# after program crash +#OPTIONS=checkpoint + +# Allows looking at things on the screen by navigating the mouse +# over them and clicking the right mouse button +#OPTIONS=clicklook + +# Show assistance when you mistype a command +#OPTIONS=cmdassist + +# Display color if possible for different monsters, objects, +# and dungeon features +#OPTIONS=color + +# Have user confirm attacks on pets, shopkeepers, and other +# peaceable creatures (default on). +#OPTIONS=confirm + +# Highlight out-of-sight room floors with different color or glyph +#OPTIONS=dark_room + +# Controls what information the program reveals when the game ends. +#OPTIONS=disclose:+i +a +v +g +c +o + +# NetHack should pass eight-bit character values straight through +# to your terminal (default off). +#OPTIONS=eight_bit_tty + +# Change the extended commands interface to pop-up a menu of +# available commands. +#OPTIONS=extmenu + +# Objects will try to keep their inventory letters +#OPTIONS=fixinv + +# Try and display on the entire screen rather than in a window. +#OPTIONS=fullscreen + +# If more information is available for an object looked at with +# the '/' command, ask if you want to see it (default on). +#OPTIONS=help + +# Hilight pets with a heart symbol (Windows, X11), or inverse attribute (TTY) +#OPTIONS=hilite_pet + +# Visually distinguish piles of objects from individual objects +#OPTIONS=hilite_pile + +# Always show the "uncursed" for inventory objects. Useful for MENUCOLORs +#OPTIONS=implicit_uncursed + +# Do not show the legacy intro text at game start +#OPTIONS=!legacy + +# Show lit corridors differently +#OPTIONS=lit_corridor + +# Use the old 'a', 'b', and 'c' keyboard shortcuts when looting, +# rather than the mnemonics 'o', 'i', and 'b' (default off). +#OPTIONS=lootabc + +# Don't deliver email in-game +#OPTIONS=!mail + +# Mention in the message line when walking at a wall. Useful for blind players. +#OPTIONS=mention_walls + +# How menus are shown. Values are 'traditional', 'combination', +# 'full', or 'partial' +#OPTIONS=menustyle:full + +# Set menu accelerator keys +#OPTIONS=menu_deselect_all:- +#OPTIONS=menu_deselect_page:\ +#OPTIONS=menu_first_page:^ +#OPTIONS=menu_invert_all:@ +#OPTIONS=menu_invert_page:~ +#OPTIONS=menu_last_page:| +#OPTIONS=menu_next_page:> +#OPTIONS=menu_previous_page:< +#OPTIONS=menu_search:: +#OPTIONS=menu_select_all:. +#OPTIONS=menu_select_page:, + +# Controls how the headings in a menu are highlighted. +# Values are 'none', 'bold', 'dim', 'underline', 'blink', or 'inverse'. +# Default is 'inverse' +#OPTIONS=menu_headings:inverse + +# Show object symbols in menus in the item class lines where that object symbol +# acts as an accelerator key to select items of that class. +#OPTIONS=menu_objsyms + +# Do not clear the screen before drawing menus, and align menus to right +#OPTIONS=menu_overlay + +# Set the number of messages saved into message history (^P -command) +#OPTIONS=msghistory:50 + +# Allows you to change the way recalled messages are displayed. +# The possible values are: +# 's' single message (default; only choice prior to 3.4.0) +# 'c' combination, two messages as `single', then as `full' +# 'f' full window, oldest message first +# 'r' full window reversed, newest message first +# Default is 's'. TTY only. +#OPTIONS=msg_window:s + +# Allow use of the mouse for input and travel. +#OPTIONS=mouse_support + +# Read the NetHack news file, if present (default on). +#OPTIONS=news + +# Send padding nulls to the terminal (default on). +#OPTIONS=null + +# Use number pad or vi-keys for movement? +# number_pad option can have an optional value of 0 (off), 1 (on), +# or 2 (on,legacy-mode) which causes 5='g', alt-5='G', alt-0='I' +# -1 (use vi-keys, but swap z and y, for qwertz keyboards) +#OPTIONS=number_pad:2 + +# Set the order in which item classes appear in your inventory +#OPTIONS=packorder:")[%?+/=!(*0_` + +# A space separated list of specific situations where alternate +# prompting is desired. The default is paranoid_confirmation:pray. +#OPTIONS=paranoid_confirmation:confirm quit die bones attack pray remove + +# Always show the inventory window? X11 and Windows GUI only. +#OPTIONS=perm_invent + +# Specify the type of your initial pet, if you are playing a character class +# that uses multiple types of pets; or choose to have no initial pet at all. +# Possible values are "cat", "dog", "horse", and "none". +#OPTIONS=pettype:cat + +# Threshold when item pile under you is shown in a popup list. Persistent. +#OPTIONS=pile_limit:5 + +# Game mode +# Values are 'normal', 'explore', or 'debug'. +#OPTIONS=playmode:normal + +# Preload tiles into memory. MSDOS only. +#OPTIONS=preload_tiles + +# When wielding a weapon, move your previous weapon to other hand +#OPTIONS=pushweapon + +# Space key acts as a wait. +#OPTIONS=rest_on_space + +# Controls the amount of screen updating for the map window when engaged +# in multi-turn movement. Possible values are 'teleport', 'run', 'walk', +# or 'crawl'. Default is 'run'. +#OPTIONS=runmode:run + +# Ask if you really want to hit your pet +#OPTIONS=safe_pet + +# Perform extra data checking. Wizard-mode only. +#OPTIONS=sanity_check + +# Display a menu of existing saved games for the player to choose from +# at game startup, if it can. Not all ports support this option. +#OPTIONS=selectsaved + +# Which parts of the score file to show at end of game +#OPTIONS=scores:10 top/2 around/own + +# Do not show experience points in the status line +#OPTIONS=!showexp + +# Show your own symbol with the symbol of your race +# eg. 'G' if you're a gnome, 'h' if dwarf, etc. +#OPTIONS=showrace + +# Show score on the status line +#OPTIONS=showscore + +# Suppress terminal beeps. Default on. +#OPTIONS=silent + +# Controls the sorting behavior of the pickup lists for inventory. +# Possible values are 'full', 'loot', and 'none'. +#OPTIONS=sortloot:full + +# Sort the pack contents by type when displaying inventory (default on). +#OPTIONS=sortpack + +# Disable sparkly magic resistance animation effect +#OPTIONS=!sparkle + +# Boldface monsters and --More-- (default off). +#OPTIONS=standout + +# NetHack version level to suppress alert notification messages +# about feature changes for that and prior versions. +#OPTIONS=suppress_alert:3.6.0 + +# Show current turn in the status line +#OPTIONS=time + +# When pausing momentarily for display effect, such as with explosions and +# moving objects, use a timer rather than sending extra characters to the +# screen. TTY only. +#OPTIONS=timed_delay + +# Draw a tombstone graphic upon your death (default on). +#OPTIONS=tombstone + +# Do not show top ten list in a separate window. Windows GUI only. +#OPTIONS=!toptenwin + +# Enable travel (_) command. +#OPTIONS=travel + +# Use the dark gray color +#OPTIONS=use_darkgray + +# Use inverse text attribute in eg. menu titles +#OPTIONS=use_inverse + +# Display this number of messages at a time in the message window. +# WinCE, Windows GUI, and GEM only. +#OPTIONS=vary_msgcount:3 + +# Be less verbose with the messages +#OPTIONS=!verbose + +# Set the color palette for PC systems using NO_TERMS (MS-DOS only). +# The order of colors is red, green, brown, blue, magenta, cyan, +# bright.white, bright.red, bright.green, yellow, bright.blue, +# bright.magenta, and bright.cyan. +#OPTIONS=videocolors:4-2-6-1-5-3-15-12-10-14-9-13-11 + +# Gray shades to map to black-gray-white. possible values are 'dark', +# 'normal', and 'light'. MS-DOS only. +#OPTIONS=videoshades:normal-normal-normal + +# When using '/' or ';' commands with autodescribe-option on, display +# coordinates after the description. Possible values are 'compass', +# 'map', 'screen', or 'none' +#OPTIONS=whatis_coord:map + +# Windowing system to use, such as 'tty' or 'x11'. +#OPTIONS=windowtype:tty + +# NetHack port should wrap long lines of text if they don't fit in +# the visible area of the window. +# WinCE only. +#OPTIONS=wraptext + + + +# How the map window is shown? Windows GUI only. +# possible map_mode options include: tiles, ascii4x6, +# ascii6x8, ascii8x8, ascii16x8, ascii7x12, ascii8x12, ascii16x12, +# ascii12x16, ascii10x18, fit_to_screen +#OPTIONS=map_mode:tiles + +# Define alternative file for the files, and the tile size +#OPTIONS=tile_file:C:\absurd64.bmp +#OPTIONS=tile_width:64,tile_height:64 + +# When does the map window scroll? Windows GUI only. +#OPTIONS=scroll_margin:5 + +# Message window settings. Windows GUI only. +#OPTIONS=font_message:Arial,font_size_message:9,align_message:top + +# Menu settings. Windows GUI only. +#OPTIONS=font_menu:Arial,font_size_menu:9 + +# Text settings. Windows GUI only. +#OPTIONS=font_text:Courier New,font_size_text:9 + +# Status window settings. Windows GUI only. +#OPTIONS=font_status:Courier New,font_size_status:9 + +# No startup splash screen. Windows GUI only. +#OPTIONS=!splash_screen + +# How does NetHack prompt for character creation. Windows GUI only. +#OPTIONS=player_selection:prompts + +# NetHack should pop up dialog boxes for input. +# Windows GUI only. +#OPTIONS=popup_dialog + +# Status/message window colors. Windows GUI only. +# Possible color options include: +# six digit hexadecimal RGB color value ("#8F8F8F"), black, red, green, brown, +# blue, magenta, cyan, gray (or grey), orange, brightgreen, yellow, brightblue, +# brightmagenta, brightcyan, white, trueblack, purple, silver, maroon, fuchsia, +# lime, olive, navy, teal, aqua, activeborder, activecaption, appworkspace, +# background, btnface, btnshadow, btntext, captiontext, graytext, highlight, +# highlighttext, inactiveborder, inactivecaption, menu, menutext, scrollbar, +# window, windowframe, windowtext. +# windowcolors: / +#OPTIONS=windowcolors:status windowtext/window message windowtext/window + +# HACKDIR is the default location for everything. +# Note: On Windows HACKDIR defaults to the location of the NetHack.exe or +# NetHackw.exe file so setting HACKDIR below to override that is not usually +# necessary or recommended. +#HACKDIR=c:\games\nethack + +# The location that level files in progress are stored +# (default=HACKDIR, writeable) +#LEVELDIR=c:\nethack\levels + +# The location where saved games are kept (default=HACKDIR, writeable) +#SAVEDIR=c:\nethack\save + +# The location that bones files are kept (default=HACKDIR, writeable) +#BONESDIR=c:\nethack\save + +# The location that file synchronization locks are stored +# (default=HACKDIR, writeable) +#LOCKDIR=c:\nethack\levels + +# The location that a record of game aborts and self-diagnosed game problems +# is kept (default=HACKDIR, writeable) +#TROUBLEDIR=c:\nethack\trouble + +# Finnish keyboards might need these modifications uncommented. Windows GUI. +# For \, @, $, [, | +#OPTIONS=subkeyvalue:171/92 +#OPTIONS=subkeyvalue:178/64 +#OPTIONS=subkeyvalue:180/36 +#OPTIONS=subkeyvalue:184/91 +#OPTIONS=subkeyvalue:188/124 + +# Some versions of Windows allow you to adjust the win32 console port +# colors using R-G-B settings. +#OPTIONS=palette:black-0-0-0 +#OPTIONS=palette:red-210-0-0 +#OPTIONS=palette:green-80-200-0 +#OPTIONS=palette:brown-180-100-0 +#OPTIONS=palette:blue-0-0-200 +#OPTIONS=palette:magenta-128-0-128 +#OPTIONS=palette:cyan-50-180-180 +#OPTIONS=palette:gray-192-192-192 +#OPTIONS=palette:dark gray-100-100-100 +#OPTIONS=palette:orange-255-128-0 +#OPTIONS=palette:bright green-0-255-0 +#OPTIONS=palette:yellow-255-255-0 +#OPTIONS=palette:bright blue-100-100-240 +#OPTIONS=palette:bright magenta-255-0-255 +#OPTIONS=palette:bright cyan-0-255-255 +#OPTIONS=palette:white-255-255-255 + + + +# Set exceptions to the pickup_types option. You can use multiple exceptions. +# First character must be '<' (autopick) or '>' (don't autopick), followed +# by a regular expression. +# Always autopickup any type of arrow +#AUTOPICKUP_EXCEPTION=" statue crumbles." +when using the 'O' command for regexp options (autopickup exceptions, + menucolors, message types), provide opportunity to add more than one + at a time [after 'add', return to add/list/remove menu] +commands invoked by uppercase meta characters: M-A, M-C, M-N, M-O, M-R, M-T + were missing from '? c' list of game commands (dat/hh) +tweak Baalzebub's lair and clean up the map display for it +symbol set definitions didn't recognize S_darkroom and S_vibrating_square +wizard mode enlightenment was reporting "very fast innately" (which is not + possible) for very fast hero who was innately fast +when attacking a monster with a rust or corrosion or acid passive + counter-attack, grease wasn't protecting the attacker's weapon +the Bell of Opening now correctly reports when it opens a trapdoor/hole +knocking can no longer send a monster through a trapdoor/hole and desaddle it +game no longer gets confused when you break an unpaid shop item while inside + a different shop +shopkeepers now correctly handle nested containers and gold in containers +for menustyle traditional, 'D' followed by (B|U|C|X)&m presented a menu of + everything, not just invent subset matching specified BUCX categories +for menustyles traditional or combination, 'A' (or object ID) followed by i + displayed an inventory of everything rather than just worn items (or + not fully identified items) +exploding chest trap would destroy uchain while still worn if uball carried +if monster shapechange message " turns into !" was given, + could be "it" (if sensed telepathically and is mindless) +automatic annotation for Ft.Ludios level got applied when a drawbridge became + mapped, but entry there is a secret door rather than a drawbridge +sortloot changed to group holy water and unholy water with water instead of + placing them among the h- and u-named items +sortloot changed to place diluted potion of foo after potion of foo instead + of listing all diluted potions followed by all non-diluted ones +digging down on a grave converted the terrain to floor but did not create a + pit and uncover the grave's contents; digging again--on floor--did +when feel_location removed a remembered-unseen-monster glyph from a known + water location while hero was levitating, the map was redrawn showing + floor instead of water at that spot +Vlad's tower2 and tower3 didn't show up in wizard-mode ^O output or ^V? menu +remove extra space from "All of your boil and explode." + (also applies to potions freezing and to scrolls burning) +effects of cursed potion of levitation were skipped if already levitating +when engulfed, having swallower be killed by angry deity trying to zap hero + no longer violates pacifist conduct (other penalties--reduced luck or + alignment--still apply if target is something you shouldn't kill) +likewise when a monster kills inself trying to prevent turning to stone or + into slime that's been caused by the player, pacifism is not affected +metabolism adjustments: hero poly'd into metallivore form still needs to eat; + being fainted or unconscious from other than sleep now consumes + nutrition at lower rate, like being asleep already did; + starvation threshold shortened due to slower food use while fainting +after using detection magic or #terrain while underwater, then leaving water + and saving while on land, save would flag you as underwater again and + then restore would limit the map display accordingly; next move would + notice, retify things, and report "you are on solid land again" +change #terrain used while underwater to view the regular map rather than the + crippled underwater one +can see or feel adjacent lava or ice when underwater +farlook when underwater now reports "land" for adjacent non-{water,lava,ice} + and "unreconnoitered" for non-adjacent anything, instead of "dark part + of a room" for the former and either dark-room or "unexplored" for the + latter depending upon whether the spot had previously been scouted +monster who accidentally killed itself by zapping wand of fire or fire horn + at self to prevent turning into slime was not properly killed off; + it wouldn't benefit from an amulet of life saving and would trigger + impossible "dmonsfree: N removed doesn't match M pending" +resurrecting a shopkeeper corpse caused crash (replmon -> replshk -> inhishop + -> no eshk data for temporary monster being replaced with revived shk) +new character with OPTIONS=role:Valk,race:!human,align:!lawful yielded + "Shall I pick your Dwarven Valkyrie's for you?" where !human forces + dwarf and dwarf forces lawful, contradicting align:!lawful +new character with OPTIONS=role:Valk,race:random yielded + "Shall I pick your Valkyrie's race and alignment for you?" instead + of honoring race:random without asking +while in shop, undead turning at self causing carried, hero owned corpse to + resurrect claimed it belonged to shopkeeper +while in shop, stone-to-flesh at self causing carried, hero owned figurine + or statue to animate claimed it belonged to shopkeeper +reviving one of a stack of N corpses in a shop charged a usage fee for all N; + remaining N-1 were owned by hero if carried but by shop if on floor + + +Fixes to Post-3.6.0 Problems that Were Exposed Via git Respository +------------------------------------------------------------------ +fix "object lost" panic during pickup caused by sortloot revamp +more sortloot revisions +fix inventory menu for response of '?' to getobj (more sortloot revamp fallout) +rings covered by non-cursed gloves not listed as 'R' candidates +in baalz_fixup, move any monster away from the two fake pool spots +switching farlook from xname to doname was giving away information for items + located via object detection (quantity of detected gold) +catch up win/Qt/qt_win.cpp on 18-Dec-2015 change to formatkiller() +fix for long lines in config file (28-Jan-2016) made 'O' command's 'list' and + 'remove' menu choices in interactive handling for menu colorings, + message types, and autopickup exceptions subject to buffer overflow Platform- and/or Interface-Specific Fixes @@ -189,11 +296,24 @@ tty: responding with or during role, race, &c selection behaved same as to quit; now it will pick [random] instead tty: rename struct variable 'filter' (role.c) and function 'winch()' (wintty.c) to avoid conflicts with +tty: skip selector letter and selection indicator (-,+,#) during menu coloring +tty: '>' no longer closes a menu window +tty: if color is disabled and use_inverse is enabled, display lava in inverse + video so that it is visually distinguishable from water +tty: if "--More--" was written to leftmost column (beginning of second line) + while hero was swallowed, cursor would end up in wrong place (at end + of status line instead back on map) after message line was cleared unix/X11: in top level Makefile, some commented out definitions of VARDATND misspelled pilemark.xbm (as pilemark.xpm) unix: options file with CR+LF line ends and an invalid option line resulted in "ad option line: "whatever-the-line-was because embedded carriage return character changed cursor's position +unix: race condition with parallel make: src/Makefile might start building + makedefs before finishing monst.o and objects.o; if so, util/Makefile + can build them too, and they might be clobbered by simultaneous write +unix: Makefile.{src,utl} ignored CPPFLAGS which is expanded by the default .c + rule by GNU make so if user had a value for that in the environment, + it would apply to some files but not others; explicitly override it win32gui: getversionstring() was overflowing the provided Help About buffer win32gui: guard against buffer overflow in in mswin_getlin() win32gui: handle menu_color attribute @@ -201,6 +321,9 @@ MacOSX: initial binary release was built from out of date source code that had 'BETA' and 'DEBUG' inappropriately enabled MacOSX: force TIMED_DELAY build option on so that 'runmode' run-time option is functional +Qt: could issue impossible "Destroy called before we know if Menu or Text" + followed by crash caused by deferencing a Null pointer if player quit + immediately after creating character and declined to disclose anything X11: core bug for '`' (backtick) and #terrain commands was only noticed by X11 interface: impossible "add_menu: called before start_menu" X11: enable a scroll bar in menu windows @@ -243,6 +366,25 @@ feedback from probing of long worm now includes number of segments it has monk starts with 'shuriken' pre-discovered (despite language issue...) item-using monster on or next to a fire trap can use it to be cured of turning into slime +wizard mode ^G can now specify "male" or "female" when creating a monster +REPRODUCIBLE_BUILD is new config.h setting to fetch build date+time from + environment instead of using current date+time, so that later rebuild + could duplicate the original (disabled by default; tested for Unix) +default value for vibrating square symbol changed from yellow '^' to purple '~' +allow symbol set values to be specified via char within single quotes +add symbols set "plain", same as default except it uses '+' for corner walls +extend wizard-mode '#stats' command +'Q' to ready an item for quick-throwing ('f') now allows the wielded weapon to + be moved to quiver; if quantity is more than 1, it offers to split the + stack and leave 1 wielded, otherwise it requires confirmation +'Q' will accept an item count to manually split a stack as part of it being + quivered, provided the stack isn't already in the quiver slot +during end of game disclosure, the vanquished monsters list can be sorted in + one of several ways by answering 'a' to "disclose vanquished monsters?" +when #terrain is displaying a censored version of the map (no monsters, &c), + moving the cursor will display farlook's brief autodescribe feedback +interrupt a multi turn action if hp or pw is restored to maximum +pressing d or D when cursor positioning targets doors and doorways Platform- and/or Interface-Specific New Features @@ -279,3 +421,5 @@ Ray Chason's MSDOS port support for some VESA modes Code Cleanup and Reorganization ------------------------------- +removed some unused variables and dead code +the level generator no longer uses the native pRNG diff --git a/include/config.h b/include/config.h index 121ce5407..47b2951cc 100644 --- a/include/config.h +++ b/include/config.h @@ -11,6 +11,7 @@ * For "UNIX" select BSD, ULTRIX, SYSV, or HPUX in unixconf.h. * A "VMS" option is not needed since the VMS C-compilers * provide it (no need to change sec#1, vmsconf.h handles it). + * MacOSX uses the UNIX configruation, not the old MAC one. */ #define UNIX /* delete if no fork(), exec() available */ @@ -304,6 +305,28 @@ */ /* #define DLB */ /* not supported on all platforms */ +/* + * Defining REPRODUCIBLE_BUILD causes 'util/makedefs -v' to construct + * date+time in include/date.h (to be shown by nethack's 'v' command) + * from SOURCE_DATE_EPOCH in the build environment rather than use + * current date+time when makedefs is run. + * + * [The version string will show "last revision