Merge branch 'NetHack-3.6.0'
This commit is contained in:
28
Files
28
Files
@@ -86,7 +86,7 @@ wield.c windows.c wizard.c worm.c worn.c
|
||||
write.c zap.c
|
||||
|
||||
sys/amiga:
|
||||
(files for Amiga versions - untested for 3.6.0)
|
||||
(files for Amiga versions - untested for 3.6.1)
|
||||
Build.ami Install.ami Makefile.agc Makefile.ami NetHack.cnf
|
||||
amidos.c amidos.p amifont.uu amifont8.uu amigst.c
|
||||
amii.hlp amimenu.c amirip.c amisnd.c amistack.c
|
||||
@@ -97,12 +97,12 @@ winfuncs.c winkey.c winmenu.c winproto.h winreq.c
|
||||
winstr.c xpm2iff.c
|
||||
|
||||
sys/atari:
|
||||
(files for Atari version - untested for 3.6.0)
|
||||
(files for Atari version - untested for 3.6.1)
|
||||
Install.tos atarifnt.uue nethack.mnu setup.g tos.c
|
||||
unx2atar.sed
|
||||
|
||||
sys/be:
|
||||
(files for BeOS version - untested for 3.6.0)
|
||||
(files for BeOS version - untested for 3.6.1)
|
||||
README bemain.c
|
||||
|
||||
sys/mac:
|
||||
@@ -115,7 +115,7 @@ macwin.c mgetline.c mmodal.c mrecover.c mrecover.hqx
|
||||
mttymain.c
|
||||
|
||||
sys/msdos:
|
||||
(files for MSDOS version - untested for 3.6.0)
|
||||
(files for MSDOS version - untested for 3.6.1)
|
||||
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
|
||||
@@ -125,17 +125,17 @@ video.c vidtxt.c vidvga.c
|
||||
nhico.uu nhpif.uu
|
||||
|
||||
sys/os2:
|
||||
(files for OS/2 version - untested for 3.6.0)
|
||||
(files for OS/2 version - untested for 3.6.1)
|
||||
Install.os2 Makefile.os2 nhpmico.uu os2.c
|
||||
|
||||
sys/share:
|
||||
(files for MSDOS and OS/2 versions - untested for 3.6.0)
|
||||
(files for MSDOS and OS/2 versions - untested for 3.6.1)
|
||||
Makefile.lib termcap.uu
|
||||
(file for MSDOS, OS/2, NT, Amiga, and Atari versions - untested for 3.6.0)
|
||||
(file for MSDOS, OS/2, NT, Amiga, and Atari versions - untested for 3.6.1)
|
||||
pcmain.c
|
||||
(files for MSDOS, OS/2, NT, and Atari versions - untested for 3.6.0)
|
||||
(files for MSDOS, OS/2, NT, and Atari versions - untested for 3.6.1)
|
||||
pcsys.c pcunix.c
|
||||
(file for MSDOS, OS/2, and Atari versions - untested for 3.6.0)
|
||||
(file for MSDOS, OS/2, and Atari versions - untested for 3.6.1)
|
||||
NetHack.cnf pctty.c
|
||||
(files for UNIX and Be versions)
|
||||
ioctl.c unixtty.c
|
||||
@@ -189,7 +189,7 @@ spec_lev.com sysconf vmsbuild.com vmsfiles.c vmsmail.c
|
||||
vmsmain.c vmsmisc.c vmstty.c vmsunix.c
|
||||
|
||||
sys/wince:
|
||||
(files for Windows CE and PocketPC - untested for 3.6.0)
|
||||
(files for Windows CE and PocketPC - untested for 3.6.1)
|
||||
Install.ce bootstrp.mak celib.c cesetup.bat cesound.c
|
||||
defaults.nh keypad.uu menubar.uu mhaskyn.c mhaskyn.h
|
||||
mhcmd.c mhcmd.h mhcolor.c mhcolor.h mhdlg.c
|
||||
@@ -202,11 +202,11 @@ resource.h winMS.h winhack.c winhack.rc winhcksp.rc
|
||||
winmain.c
|
||||
|
||||
sys/wince/ceinc:
|
||||
(header files for Windows CE and PocketPC - untested for 3.6.0)
|
||||
(header files for Windows CE and PocketPC - untested for 3.6.1)
|
||||
assert.h errno.h fcntl.h
|
||||
|
||||
sys/wince/ceinc/sys:
|
||||
(sys/stat.h for Windows CE and PocketPC - untested for 3.6.0)
|
||||
(sys/stat.h for Windows CE and PocketPC - untested for 3.6.1)
|
||||
stat.h
|
||||
|
||||
sys/winnt:
|
||||
@@ -242,13 +242,13 @@ win/chain:
|
||||
wc_chainin.c wc_chainout.c wc_trace.c
|
||||
|
||||
win/gem:
|
||||
(files for GEM versions - untested for 3.6.0)
|
||||
(files for GEM versions - untested for 3.6.1)
|
||||
Install.gem bitmfile.c gem_rsc.uu gem_rso.uu gr_rect.c
|
||||
gr_rect.h load_img.c tile2img.c title.uu wingem.c
|
||||
wingem1.c xpm2img.c
|
||||
|
||||
win/gnome:
|
||||
(files for GNOME versions - untested for 3.6.0)
|
||||
(files for GNOME versions - untested for 3.6.1)
|
||||
README gn_xpms.h gnaskstr.c gnaskstr.h gnbind.c
|
||||
gnbind.h gnglyph.c gnglyph.h gnmain.c gnmain.h
|
||||
gnmap.c gnmap.h gnmenu.c gnmenu.h gnmesg.c
|
||||
|
||||
6
README
6
README
@@ -1,13 +1,13 @@
|
||||
NetHack 3.6.0 -- General information
|
||||
NetHack 3.6.1 -- General information
|
||||
|
||||
NetHack 3.6 is an enhancement to the dungeon exploration game NetHack.
|
||||
It is a distant descendent of Rogue and Hack, and a direct descendent of
|
||||
NetHack 3.4. In order to avoid confusion with interim development code
|
||||
that was posted online in 2014 by others, there is no NetHack 3.5 release.
|
||||
|
||||
NetHack 3.6.0 contains some code reorganization, new features, and bugfixes.
|
||||
NetHack 3.6.1 contains several dozen bugfixes.
|
||||
|
||||
The file doc/fixes36.0 in the source distribution has a full list of each.
|
||||
The file doc/fixes36.1 in the source distribution has a full list of each.
|
||||
The text in there was written for the development team's own use and is
|
||||
provided "as is", so please do not ask us to further explain the entries
|
||||
in that file. Some entries might be considered "spoilers", particularly
|
||||
|
||||
19
dat/history
19
dat/history
@@ -184,25 +184,30 @@ with some of the beloved community patches. Many bugs were fixed and some
|
||||
code was restructured.
|
||||
|
||||
The development team, as well as Steve VanDevender and Kevin Smolkowski
|
||||
ensured that NetHack 3.6.0 continued to operate on various Unix flavors
|
||||
ensured that NetHack 3.6 continued to operate on various Unix flavors
|
||||
as well as maintaining the X11 interface.
|
||||
|
||||
Ken Lorber, Haoyang Wang, Pat Rankin, and Dean Luick maintained the port
|
||||
of NetHack 3.6.0 for Mac.
|
||||
of NetHack 3.6 for Mac.
|
||||
|
||||
Michael Allison, Derek S. Ray, Yitzhak Sapir, Alex Kompel, Dion Nicolaas,
|
||||
and David Cohrs maintained the port of NetHack 3.6.0 for Microsoft Windows.
|
||||
and David Cohrs maintained the port of NetHack 3.6 for Microsoft Windows.
|
||||
|
||||
Pat Rankin attempted to keep the VMS port running for NetHack 3.6.0,
|
||||
Pat Rankin attempted to keep the VMS port running for NetHack 3.6,
|
||||
hindered by limited access. Kevin Smolkowski has updated and tested it
|
||||
for the most recent version of OpenVMS (V8.4 as of this writing) on Alpha
|
||||
and Integrity (aka Itanium aka IA64) but not VAX.
|
||||
|
||||
This version of the game is special in a particular way. Near the end of
|
||||
the development of 3.6, one of the significant inspirations for many of
|
||||
The 3.6 version of the game is special in a particular way. Near the end of
|
||||
the development of 3.6.0, one of the significant inspirations for many of
|
||||
the humorous and fun features found in the game, author Terry Pratchett,
|
||||
passed away. This version of the game includes a tribute to him.
|
||||
passed away. The 3.6 version of the game includes a tribute to him.
|
||||
|
||||
The 3.6 development team consisting of Michael Allison, Warwick Allison,
|
||||
Ken Arromdee, David Cohrs, Jessie Collet, Sean Hunt, Pasi Kallinen,
|
||||
Ken Lorber, Dean Luick, Pat Rankin, Derek Ray, Mike Stephenson,
|
||||
Janet Walz, and Paul Winner released 3.6.1 as a bug fix release in
|
||||
January 2016.
|
||||
|
||||
An official NetHack web site continues to be maintained by Ken Lorber at
|
||||
http://www.nethack.org/.
|
||||
|
||||
@@ -2,6 +2,7 @@ Boolean options not under specific compile flags (with default values in []):
|
||||
(You can learn which options exist in your version by checking your current
|
||||
option setting, which is reached via the 'O' cmd.)
|
||||
|
||||
autodescribe describe the terrain under cursor [FALSE]
|
||||
autodig dig if moving and wielding digging tool [FALSE]
|
||||
autoopen walking into a door attempts to open it [TRUE]
|
||||
autopickup automatically pick up objects you move over [TRUE]
|
||||
|
||||
@@ -156,6 +156,7 @@ Some questions the Sphynx asks just *don't* have any answers.
|
||||
Sometimes "mu" is the answer.
|
||||
Sorry, no fortune this time. Better luck next cookie!
|
||||
Spare your scrolls of make-edible until it's really necessary!
|
||||
Sticks and stones may break your bones but manes will never hurt you.
|
||||
Stormbringer doesn't steal souls. People steal souls.
|
||||
Suddenly, the dungeon will collapse...
|
||||
Taming a mail daemon may cause a system security violation.
|
||||
@@ -165,6 +166,7 @@ The longer the wand the better.
|
||||
The magic word is "XYZZY".
|
||||
The meek shall inherit your bones files.
|
||||
The mines are dark and deep, and I have levels to go before I sleep.
|
||||
The more you use the E word, the better.
|
||||
The use of dynamite is dangerous.
|
||||
There are no worms in the UNIX version.
|
||||
There is a trap on this level!
|
||||
|
||||
14
dat/tribute
14
dat/tribute
@@ -10,17 +10,19 @@
|
||||
#
|
||||
#
|
||||
%title The Colour of Magic (2)
|
||||
# p. 67 (Signet edition)
|
||||
%passage 1
|
||||
It has been remarked before that those who are sensitive to radiation in
|
||||
the far octarine - the eighth colour, the pigment of the Imagination - can
|
||||
It has been remarked before that those who are sensitive to radiations in
|
||||
the far octarine--the eighth colour, the pigment of the Imagination--can
|
||||
see things that others cannot.
|
||||
|
||||
Thus it was that Rincewind, hurrying through the crowded, flare-lit,
|
||||
evening bazarrs of Morpork with the Luggage trundling behind him, jostled a
|
||||
tall figure, turned to deliver a few suitable curses, and beheld Death.
|
||||
evening bazaars of Morpork with the Luggage trundling behind him, jostled
|
||||
a tall dark figure, turned to deliver a few suitable curses, and beheld
|
||||
Death.
|
||||
|
||||
It had to be Death. No-one else went around with empty eye sockets and, of
|
||||
course, the scythe over one shoulder was another clue.
|
||||
It had to be Death. No-one else went around with empty eye sockets and,
|
||||
of course, the scythe over one shoulder was another clue. [...]
|
||||
|
||||
[The Colour of Magic, by Terry Pratchett]
|
||||
%e passage 1
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
.\" $NHDT-Branch: master $:$NHDT-Revision: 1.188 $ $NHDT-Date: 1449420465 2015/12/06 16:47:45 $
|
||||
.\" $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.191 $ $NHDT-Date: 1450306152 2015/12/16 22:49:12 $
|
||||
.ds h0 "NetHack Guidebook
|
||||
.ds h1
|
||||
.ds h2 %
|
||||
.ds vr "NetHack 3.6
|
||||
.ds f0 "\*(vr
|
||||
.ds f1
|
||||
.ds f2 "December 7, 2015
|
||||
.ds f2 "December 16, 2015
|
||||
.\" labeled paragraph start (should be part of tmac.n, but I don't want to
|
||||
.\" make changes to that file)
|
||||
.\" .PS word
|
||||
@@ -1970,6 +1970,9 @@ The default is to randomly pick an appropriate alignment.
|
||||
If you prefix a `!' or ``no'' to the value, you can
|
||||
exclude that alignment from being picked randomly.
|
||||
Cannot be set with the `O' command. Persistent.
|
||||
.lp autodescribe
|
||||
Automatically describe the terrain under cursor when asked to get a location
|
||||
on the map.
|
||||
.lp autodig
|
||||
Automatically dig if you are wielding a digging tool and moving into a place
|
||||
that can be dug (default false). Persistent.
|
||||
@@ -2456,7 +2459,8 @@ alert notification messages about feature changes for that
|
||||
and prior versions (ex. ``suppress_alert:3.3.1'').
|
||||
.lp symset
|
||||
This option may be used to select one of the named symbol sets found within
|
||||
``symbols'' to alter the symbols displayed on the screen.
|
||||
``symbols'' to alter the symbols displayed on the screen.
|
||||
Use ``symset:default'' to explicitly select the default symbols.
|
||||
.lp "time "
|
||||
Show the elapsed game time in turns on bottom line (default off). Persistent.
|
||||
.lp timed_delay
|
||||
@@ -2667,7 +2671,8 @@ Regular expressions are normally POSIX extended regular expressions. It is
|
||||
possible to compile NetHack without regular expression support on a platform
|
||||
where there is no regular expression library. While this is not true of any
|
||||
modern platform, if your NetHack was built this way, patterns are instead glob
|
||||
patterns.
|
||||
patterns. This applies to Autopickup exceptions, Message types, Menu colors,
|
||||
and User sounds.
|
||||
.hn 2
|
||||
Configuring Autopickup Exceptions
|
||||
.pg
|
||||
@@ -3481,15 +3486,22 @@ with some of the beloved community patches. Many bugs were fixed and a
|
||||
large amount of code was restructured.
|
||||
.pg
|
||||
\fBThe development team, as well as \fBSteve VanDevender\fP and
|
||||
\fBKevin Smolkowski\fP ensured that NetHack 3.6.0 continued to operate on
|
||||
\fBKevin Smolkowski\fP ensured that NetHack 3.6 continued to operate on
|
||||
various Unix flavors and maintained the X11 interface.
|
||||
.pg
|
||||
\fBKen Lorber\fP, \fBHaoyang Wang\fP, \fBPat Rankin\fP, and \fBDean Luick\fP
|
||||
maintained the port of NetHack 3.6.0 for Mac.
|
||||
maintained the port of NetHack 3.6 for Mac.
|
||||
.pg
|
||||
\fBMichael Allison\fP, \fBDerek S. Ray\fP, \fBYitzhak Sapir\fP,
|
||||
\fBAlex Kompel\fP, and \fBDion Nicolaas\fP maintained the port of
|
||||
NetHack 3.6.0 for Microsoft Windows.
|
||||
NetHack 3.6 for Microsoft Windows.
|
||||
.pg
|
||||
The 3.6 development team consisting of
|
||||
\fBMichael Allison\fP, \fBWarwick Allison\fP, \fBKen Arromdee\fP,
|
||||
\fBDavid Cohrs\fP, \fBJessie Collet\fP, \fBSean Hunt\fP,
|
||||
\fBPasi Kallinen\fP, \fBKen Lorber\fP, \fBDean Luick\fP, \fBPat Rankin\fP,
|
||||
\fBMike Stephenson\fP, \fBDerek S. Ray\fP, \fBJanet Walz\fP, and \fBPaul Winner\fP
|
||||
released 3.6.1 as a bug fix release in January 2016.
|
||||
.pg
|
||||
The official NetHack web site is maintained by \fBKen Lorber\fP at http://www.nethack.org/.
|
||||
.pg
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
\documentstyle[titlepage,longtable]{article}
|
||||
% NetHack 3.6 Guidebook.tex $NHDT-Date: 1431192762 2015/05/09 17:32:42 $ $NHDT-Branch: master $:$NHDT-Revision: 1.60 $ */
|
||||
% NetHack 3.6 Guidebook.tex $NHDT-Date: 1431192762 2015/12/16 17:32:42 $ $NHDT-Branch: master $:$NHDT-Revision: 1.60 $ */
|
||||
%+% we're still limping along in LaTeX 2.09 compatibility mode
|
||||
%-%\documentclass{article}
|
||||
%-%\usepackage{hyperref} % before longtable
|
||||
@@ -45,7 +45,7 @@
|
||||
%.au
|
||||
\author{Original version - Eric S. Raymond\\
|
||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||
\date{December 7, 2015}
|
||||
\date{December 16, 2015}
|
||||
|
||||
\maketitle
|
||||
|
||||
@@ -2377,6 +2377,10 @@ If you prefix `{\tt !}' or ``{\tt no}'' to the value, you can
|
||||
exclude that alignment from being picked randomly.
|
||||
Cannot be set with the `{\tt O}' command. Persistent.
|
||||
%.lp
|
||||
\item[\ib{autodescribe}]
|
||||
Automatically describe the terrain under cursor when asked to get a location
|
||||
on the map.
|
||||
%.lp
|
||||
\item[\ib{autodig}]
|
||||
Automatically dig if you are wielding a digging tool and moving into a place
|
||||
that can be dug (default false). Persistent.
|
||||
@@ -2944,6 +2948,7 @@ and prior versions (ex.\ ``{\tt suppress\verb+_+alert:3.3.1}'')
|
||||
\item[\ib{symset}]
|
||||
This option may be used to select one of the named symbol sets found within
|
||||
{\tt symbols} to alter the symbols displayed on the screen.
|
||||
Use ``{\tt symset:default}'' to explicitly select the default symbols.
|
||||
%.lp
|
||||
\item[\ib{time}]
|
||||
Show the elapsed game time in turns on bottom line (default off). Persistent.
|
||||
@@ -3223,7 +3228,8 @@ Regular expressions are normally POSIX extended regular expressions. It is
|
||||
possible to compile NetHack without regular expression support on a platform where
|
||||
there is no regular expression library. While this is not true of any modern
|
||||
platform, if your NetHack was built this way, patterns are instead glob
|
||||
patterns.
|
||||
patterns. This applies to Autopickup exceptions, Message types, Menu colors,
|
||||
and User sounds.
|
||||
|
||||
%.hn 2
|
||||
\subsection*{Configuring Autopickup Exceptions}
|
||||
@@ -4180,22 +4186,30 @@ version merges work done by the development team since the previous release
|
||||
with some of the beloved community patches. Many bugs were fixed and a
|
||||
large amount of code was restructured.
|
||||
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
The development team, as well as {\it Steve VanDevender} and
|
||||
{\it Kevin Smolkowski} ensured that NetHack 3.6.0 continued to operate on
|
||||
{\it Kevin Smolkowski} ensured that NetHack 3.6 continued to operate on
|
||||
various Unix flavors and maintained the X11 interface.
|
||||
|
||||
%.pg
|
||||
{\it Ken Lorber}, {\it Haoyang Wang}, {\it Pat Rankin}, and {\it Dean Luick}
|
||||
maintained the port of NetHack 3.6.0 for Mac.
|
||||
maintained the port of NetHack 3.6 for Mac.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
{\it Michael Allison}, {\it Derek S. Ray}, {\it Yitzhak Sapir},
|
||||
{\it Alex Kompel}, and {\it Dion Nicolaas} maintained the port of
|
||||
NetHack 3.6.0 for Microsoft Windows.
|
||||
NetHack 3.6 for Microsoft Windows.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
The 3.6 development team consisting of
|
||||
{\it Michael Allison}, {\it Warwick Allison}, {\it Ken Arromdee},
|
||||
{\it David Cohrs}, {\it Jessie Collet}, {\it Sean Hunt},
|
||||
{\it Pasi Kallinen}, {\it Ken Lorber}, {\it Dean Luick}, {\it Pat Rankin},
|
||||
{\it Mike Stephenson}, {\it Derek S. Ray}, {\it Janet Walz}, and {\it Paul Winner}
|
||||
released 3.6.1 as a bug fix release in January 2016.
|
||||
|
||||
%.pg
|
||||
\medskip
|
||||
|
||||
@@ -15,10 +15,33 @@ support explicit 'symset:default' and 'symset:Default symbols' in options
|
||||
crash during startup if player name set as 'player' in defaults
|
||||
any existing vampire shape-shifted into critter (fog cloud, bat, wolf) became
|
||||
an unkillable critter if vampires were genocided
|
||||
unlike in previous versions, an uncursed scroll of enchant armor failed to
|
||||
uncurse the piece of armor being enchanted (change was unintentional)
|
||||
slice of {pizza,cake,&} pluralized as "slouse of ..." due to false match
|
||||
with "lice" (discovered pre-3.6.0-release)
|
||||
change dipping prompt to not ignore 'called' and 'named' attributes of item
|
||||
to be dipped
|
||||
avoid 'the unlabeled {scroll,spellbook} fades' when blank item is hit by water
|
||||
wrong message given when high priest on astral plane rejects being assigned a
|
||||
name (got the one for unique monsters instead of the one for priests)
|
||||
negative intrinsic protection shouldn't confer MC=1, "you are warded" (not
|
||||
possible from divine protection but is possible from eating rings)
|
||||
make a slight adjustment to the quickmimic() sense wording
|
||||
fix typo in passage 1 of The Colour of Magic
|
||||
falling asleep when reading dull spellbook ignored sleep resistance
|
||||
getpos() complaint about invalid movement keystroke didn't describe meta-chars
|
||||
accurately
|
||||
'realtime' value in xlogfile was incorrect if 'checkpoint' option was active
|
||||
make a previously-discovered scroll written with marker while blind have its
|
||||
label known so it can be read while blind
|
||||
#name or C for discoveries list that spanned multiple pages would exit on
|
||||
space instead of advancing to next page (workaround: use '>' instead)
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
-----------------------------------------
|
||||
tty: M-N gave "Unknown command 'M-" with "'." finishing the sentence on the
|
||||
line below it, leaving bogus '.' displayed on the top row of the map
|
||||
unix/X11: in top level Makefile, some commented out definitions of VARDATND
|
||||
misspelled pilemark.xbm (as pilemark.xpm)
|
||||
win32gui: getversionstring() was overflowing the provided Help About buffer
|
||||
@@ -32,6 +55,7 @@ X11: core bug for '`' (backtick) command was only noticed by X11 interface,
|
||||
General New Features
|
||||
--------------------
|
||||
naming Sting or Orcrist now breaks illiterate conduct
|
||||
different feedback for reading a scroll of mail created by writing with marker
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific New Features
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.TH RECOVER 6 "7 December 2015"
|
||||
.\" NetHack 3.6 recover.6 $NHDT-Date: 1449616497 2015/12/08 23:14:57 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.7 $
|
||||
.TH RECOVER 6 "9 January 1993"
|
||||
.\" NetHack 3.6 recover.6 $NHDT-Date: 1450129883 2015/12/14 21:51:23 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.8 $
|
||||
.UC 4
|
||||
.SH NAME
|
||||
recover \- recover a NetHack game interrupted by disaster
|
||||
@@ -34,11 +34,26 @@ It overrides the value from NETHACKDIR, HACKDIR, or the directory
|
||||
specified by the game administrator during compilation
|
||||
(usually /usr/games/lib/nethackdir).
|
||||
.PP
|
||||
^?ALLDOCS
|
||||
For recovery to be possible,
|
||||
the run-time option
|
||||
.I nethack
|
||||
must have been compiled with the INSURANCE option, and the run-time option
|
||||
.I checkpoint
|
||||
must have been on.
|
||||
.PP
|
||||
must also have been on.
|
||||
^:
|
||||
^?INSURANCE
|
||||
For recovery to be possible,
|
||||
.I nethack
|
||||
must have been compiled with the INSURANCE option (this configuration was),
|
||||
and the run-time option
|
||||
.I checkpoint
|
||||
must also have been on.
|
||||
^:
|
||||
This configuration of
|
||||
.I nethack
|
||||
was created without support for recovery.
|
||||
^.
|
||||
^.
|
||||
NetHack normally writes out files for levels as the player leaves them,
|
||||
so they will be ready for return visits.
|
||||
When checkpointing, NetHack also writes out the level entered and
|
||||
|
||||
163
doc/recover.txt
163
doc/recover.txt
@@ -1,81 +1,132 @@
|
||||
RECOVER(6) RECOVER(6)
|
||||
|
||||
|
||||
|
||||
RECOVER(6) 1993 RECOVER(6)
|
||||
|
||||
|
||||
|
||||
NAME
|
||||
recover - recover a NetHack game interrupted by disaster
|
||||
recover - recover a NetHack game interrupted by disaster
|
||||
|
||||
SYNOPSIS
|
||||
recover [ -d directory ] base1 base2 ...
|
||||
recover [ -d directory ] base1 base2 ...
|
||||
|
||||
DESCRIPTION
|
||||
Occasionally, a NetHack game will be interrupted by disaster when the
|
||||
game or the system crashes. Prior to NetHack v3.1, these games were
|
||||
lost because various information like the player's inventory was kept
|
||||
only in memory. Now, all pertinent information can be written out to
|
||||
disk, so such games can be recovered at the point of the last level
|
||||
change.
|
||||
Occasionally, a NetHack game will be interrupted by disaster
|
||||
when the game or the system crashes. Prior to NetHack v3.1,
|
||||
these games were lost because various information like the
|
||||
player's inventory was kept only in memory. Now, all per-
|
||||
tinent information can be written out to disk, so such games
|
||||
can be recovered at the point of the last level change.
|
||||
|
||||
The base options tell recover which files to process. Each base option
|
||||
specifies recovery of a separate game.
|
||||
The base options tell recover which files to process. Each
|
||||
base option specifies recovery of a separate game.
|
||||
|
||||
The -d option, which must be the first argument if it appears, supplies
|
||||
a directory which is the NetHack playground. It overrides the value
|
||||
from NETHACKDIR, HACKDIR, or the directory specified by the game admin-
|
||||
istrator during compilation (usually /usr/games/lib/nethackdir).
|
||||
The -d option, which must be the first argument if it
|
||||
appears, supplies a directory which is the NetHack play-
|
||||
ground. It overrides the value from NETHACKDIR, HACKDIR, or
|
||||
the directory specified by the game administrator during
|
||||
compilation (usually /usr/games/lib/nethackdir).
|
||||
|
||||
For recovery to be possible, the run-time option checkpoint must have
|
||||
been on.
|
||||
For recovery to be possible, nethack must have been compiled
|
||||
with the INSURANCE option, and the run-time option check-
|
||||
point must also have been on. NetHack normally writes out
|
||||
files for levels as the player leaves them, so they will be
|
||||
ready for return visits. When checkpointing, NetHack also
|
||||
writes out the level entered and the current game state on
|
||||
every level change. This naturally slows level changes down
|
||||
somewhat.
|
||||
|
||||
NetHack normally writes out files for levels as the player leaves them,
|
||||
so they will be ready for return visits. When checkpointing, NetHack
|
||||
also writes out the level entered and the current game state on every
|
||||
level change. This naturally slows level changes down somewhat.
|
||||
The level file names are of the form base.nn, where nn is an
|
||||
internal bookkeeping number for the level. The file base.0
|
||||
is used for game identity, locking, and, when checkpointing,
|
||||
for the game state. Various OSes use different strategies
|
||||
for constructing the base name. Microcomputers use the
|
||||
character name, possibly truncated and modified to be a
|
||||
legal filename on that system. Multi-user systems use the
|
||||
(modified) character name prefixed by a user number to avoid
|
||||
conflicts, or "xlock" if the number of concurrent players is
|
||||
being limited. It may be necessary to look in the play-
|
||||
ground to find the correct base name of the interrupted
|
||||
game. recover will transform these level files into a save
|
||||
file of the same name as nethack would have used.
|
||||
|
||||
The level file names are of the form base.nn, where nn is an internal
|
||||
bookkeeping number for the level. The file base.0 is used for game
|
||||
identity, locking, and, when checkpointing, for the game state. Vari-
|
||||
ous OSes use different strategies for constructing the base name.
|
||||
Microcomputers use the character name, possibly truncated and modified
|
||||
to be a legal filename on that system. Multi-user systems use the
|
||||
(modified) character name prefixed by a user number to avoid conflicts,
|
||||
or "xlock" if the number of concurrent players is being limited. It
|
||||
may be necessary to look in the playground to find the correct base
|
||||
name of the interrupted game. recover will transform these level files
|
||||
into a save file of the same name as nethack would have used.
|
||||
Since recover must be able to read and delete files from the
|
||||
playground and create files in the save directory, it has
|
||||
interesting interactions with game security. Giving ordi-
|
||||
nary players access to recover through setuid or setgid is
|
||||
tantamount to leaving the playground world-writable, with
|
||||
respect to both cheating and messing up other players. For
|
||||
|
||||
Since recover must be able to read and delete files from the playground
|
||||
and create files in the save directory, it has interesting interactions
|
||||
with game security. Giving ordinary players access to recover through
|
||||
setuid or setgid is tantamount to leaving the playground world-
|
||||
writable, with respect to both cheating and messing up other players.
|
||||
For a single-user system, this of course does not change anything, so
|
||||
some of the microcomputer ports install recover by default.
|
||||
|
||||
For a multi-user system, the game administrator may want to arrange for
|
||||
all .0 files in the playground to be fed to recover when the host
|
||||
machine boots, and handle game crashes individually. If the user popu-
|
||||
lation is sufficiently trustworthy, recover can be installed with the
|
||||
same permissions the nethack executable has. In either case, recover
|
||||
is easily compiled from the distribution utility directory.
|
||||
|
||||
January Last change: 9 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
RECOVER(6) 1993 RECOVER(6)
|
||||
|
||||
|
||||
|
||||
a single-user system, this of course does not change any-
|
||||
thing, so some of the microcomputer ports install recover by
|
||||
default.
|
||||
|
||||
For a multi-user system, the game administrator may want to
|
||||
arrange for all .0 files in the playground to be fed to
|
||||
recover when the host machine boots, and handle game crashes
|
||||
individually. If the user population is sufficiently
|
||||
trustworthy, recover can be installed with the same permis-
|
||||
sions the nethack executable has. In either case, recover
|
||||
is easily compiled from the distribution utility directory.
|
||||
|
||||
NOTES
|
||||
Like nethack itself, recover will overwrite existing savefiles of the
|
||||
same name. Savefiles created by recover are uncompressed; they may be
|
||||
compressed afterwards if desired, but even a compression-using nethack
|
||||
will find them in the uncompressed form.
|
||||
Like nethack itself, recover will overwrite existing save-
|
||||
files of the same name. Savefiles created by recover are
|
||||
uncompressed; they may be compressed afterwards if desired,
|
||||
but even a compression-using nethack will find them in the
|
||||
uncompressed form.
|
||||
|
||||
SEE ALSO
|
||||
nethack(6)
|
||||
nethack(6)
|
||||
|
||||
BUGS
|
||||
recover makes no attempt to find out if a base name specifies a game in
|
||||
progress. If multiple machines share a playground, this would be
|
||||
impossible to determine.
|
||||
recover makes no attempt to find out if a base name speci-
|
||||
fies a game in progress. If multiple machines share a play-
|
||||
ground, this would be impossible to determine.
|
||||
|
||||
recover should be taught to use the nethack playground locking mecha-
|
||||
nism to avoid conflicts.
|
||||
recover should be taught to use the nethack playground lock-
|
||||
ing mechanism to avoid conflicts.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
January Last change: 9 2
|
||||
|
||||
|
||||
|
||||
4th Berkeley Distribution 7 December 2015 RECOVER(6)
|
||||
|
||||
@@ -212,6 +212,7 @@ struct instance_flags {
|
||||
boolean use_status_hilites; /* use color in status line */
|
||||
boolean use_background_glyph; /* use background glyph when appropriate */
|
||||
boolean hilite_pile; /* mark piles of objects with a hilite */
|
||||
boolean autodescribe; /* autodescribe mode in getpos() */
|
||||
#if 0
|
||||
boolean DECgraphics; /* use DEC VT-xxx extended character set */
|
||||
boolean IBMgraphics; /* use IBM extended character set */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 global.h $NHDT-Date: 1449116298 2015/12/03 04:18:18 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.46 $ */
|
||||
/* NetHack 3.6 global.h $NHDT-Date: 1450306170 2015/12/16 22:49:30 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.47 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* #define BETA */ /* development or beta testing [MRS] */
|
||||
#define BETA /* development or beta testing [MRS] */
|
||||
|
||||
/* #define DEBUG */
|
||||
#define DEBUG
|
||||
|
||||
/*
|
||||
* Files expected to exist in the playground directory.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 obj.h $NHDT-Date: 1445126423 2015/10/18 00:00:23 $ $NHDT-Branch: master $:$NHDT-Revision: 1.50 $ */
|
||||
/* NetHack 3.6 obj.h $NHDT-Date: 1450306176 2015/12/16 22:49:36 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.51 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -111,7 +111,7 @@ struct obj {
|
||||
int corpsenm; /* type of corpse is mons[corpsenm] */
|
||||
#define leashmon corpsenm /* gets m_id of attached pet */
|
||||
#define fromsink corpsenm /* a potion from a sink */
|
||||
#define novelidx corpsenm /* 3.6.0 tribute - the index of the novel title */
|
||||
#define novelidx corpsenm /* 3.6 tribute - the index of the novel title */
|
||||
#define record_achieve_special corpsenm
|
||||
int usecount; /* overloaded for various things that tally */
|
||||
#define spestudied usecount /* # of times a spellbook has been studied */
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
/* NetHack 3.6 patchlevel.h $NHDT-Date: 1447755971 2015/11/17 10:26:11 $ $NHDT-Branch: master $:$NHDT-Revision: 1.112 $ */
|
||||
/* NetHack 3.6 patchlevel.h $NHDT-Date: 1450306740 2015/12/16 22:59:00 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.115 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/* NetHack 3.6.0 */
|
||||
/* NetHack 3.6.1 */
|
||||
#define VERSION_MAJOR 3
|
||||
#define VERSION_MINOR 6
|
||||
/*
|
||||
* PATCHLEVEL is updated for each release.
|
||||
*/
|
||||
#define PATCHLEVEL 0
|
||||
#define PATCHLEVEL 1
|
||||
/*
|
||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||
* and save files.
|
||||
*/
|
||||
#define EDITLEVEL 2
|
||||
#define EDITLEVEL 0
|
||||
|
||||
#define COPYRIGHT_BANNER_A "NetHack, Copyright 1985-2015"
|
||||
#define COPYRIGHT_BANNER_B \
|
||||
@@ -30,11 +30,16 @@
|
||||
* PP = patch level, ee = edit level, L = literal suffix "L",
|
||||
* with all four numbers specified as two hexadecimal digits.
|
||||
*/
|
||||
/* #define VERSION_COMPATIBILITY 0x03050000L */
|
||||
#define VERSION_COMPATIBILITY 0x03060002L
|
||||
|
||||
/****************************************************************************/
|
||||
/* Version 3.6.x */
|
||||
|
||||
/* Patch 1, [insert date here]
|
||||
* A couple of dozen bug fixes.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* NetHack 3.6.0, December 7, 2015
|
||||
*
|
||||
|
||||
@@ -1,4 +1,131 @@
|
||||
/* clang-format off */
|
||||
/* XPM */
|
||||
static const char *blind_xpm[] = {
|
||||
/* width height ncolors chars_per_pixel */
|
||||
"40 40 5 1",
|
||||
/* colors */
|
||||
" c #000000",
|
||||
". c None",
|
||||
"X c #909090",
|
||||
"o c #606060",
|
||||
"O c #303030",
|
||||
/* pixels */
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"....ooooooooooooooooooooooooooooooooX...",
|
||||
".... o...",
|
||||
".... o...",
|
||||
".... o...",
|
||||
".... o...",
|
||||
"......o ..o ......",
|
||||
"......X O..X O......",
|
||||
"....... o... o......",
|
||||
".......o ....o .......",
|
||||
"........O X.....O X.......",
|
||||
".........O X.......O X........",
|
||||
"..........o OX.........o OX.........",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................",
|
||||
"........................................"
|
||||
};
|
||||
/* XPM */
|
||||
static const char *cha_xpm[] = {
|
||||
/* width height ncolors chars_per_pixel */
|
||||
"40 40 14 1",
|
||||
/* colors */
|
||||
" c #F85848",
|
||||
". c #949E9E",
|
||||
"X c #F8B090",
|
||||
"o c #E00028",
|
||||
"O c #D4D4D4",
|
||||
"+ c None",
|
||||
"@ c #B0B0B0",
|
||||
"# c #F82C24",
|
||||
"$ c #F89E6C",
|
||||
"% c #FF0000",
|
||||
"& c #909090",
|
||||
"* c #FFFFFF",
|
||||
"= c #CEAA90",
|
||||
"- c #DADAB6",
|
||||
/* pixels */
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"+++++++++++++++=#%#=+=#%% ++++++++++++++",
|
||||
"++++++++++++++ %O%%%#%$$%o%=++++++++++++",
|
||||
"+++++++++++++# +#%%o%%o%%%%% +++++++++++",
|
||||
"+++++++++++ %%%%%%%%%%%%%%%%o#=+++++++++",
|
||||
"+++++++++ o%%%%%%%%%%%%%%%%%%%%# +++++++",
|
||||
"++++++ #%%%%%%o%%%o%%o%%o%o%%%%%o%o +++",
|
||||
"++=#%%o%%%#= =*+**O*+**O*+- = =%%%%#@+++",
|
||||
"++++ %=++*+*+**O****O****O*O*O*OO%=+++++",
|
||||
"+++++.%=OO+*O*OO****+****+*O*+O&%=@+++++",
|
||||
"++++++=%=*OO+**O**O*O**O*O*OO+$%=+++++++",
|
||||
"+++++++#% +*OOOO****+****@O+*#%=++++++++",
|
||||
"++++++++#%#*+**+O+OO+O+OOO*O#o#+++++++++",
|
||||
"+++++++++o% O**+****O****O*#%%=+++++++++",
|
||||
"+++++++++ %%#O*O****+****+ %o#++++++++++",
|
||||
"++++++++++o%% XO*O**O*O**#%%%+++++++++++",
|
||||
"++++++++++ %%%o%$-**+**$%%%%=+++++++++++",
|
||||
"+++++++++++o%%$X$%%%%%%#= o#++++++++++++",
|
||||
"++++++++++@ %%%o#O$$+$$$%%%=++++++++++++",
|
||||
"++++++++++++#o%%%%%%%%o%%%=@++++++++++++",
|
||||
"+++++++++++++ %%%%%%%%%%o=++++++++++++++",
|
||||
"+++++++++++++++= & & @++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++"
|
||||
};
|
||||
/* XPM */
|
||||
static const char *chaotic_xpm[] = {
|
||||
/* width height ncolors chars_per_pixel */
|
||||
"40 40 9 1",
|
||||
/* colors */
|
||||
" c #000000",
|
||||
". c #5C7A7A",
|
||||
"X c None",
|
||||
"o c #B0B0B0",
|
||||
"O c #909090",
|
||||
"+ c #788C8C",
|
||||
"@ c #606060",
|
||||
"# c #FFFFFF",
|
||||
"$ c #303030",
|
||||
/* pixels */
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 you.h $NHDT-Date: 1432512782 2015/05/25 00:13:02 $ $NHDT-Branch: master $:$NHDT-Revision: 1.29 $ */
|
||||
/* NetHack 3.6 you.h $NHDT-Date: 1450231172 2015/12/16 01:59:32 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.30 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -68,10 +68,11 @@ struct u_achieve {
|
||||
};
|
||||
|
||||
struct u_realtime {
|
||||
long
|
||||
realtime; /* actual playing time up until the last restore, seconds */
|
||||
time_t restored; /* time the game was started or restored */
|
||||
time_t endtime;
|
||||
long realtime; /* accumulated playing time in seconds */
|
||||
time_t start_timing; /* time game was started or restored or 'realtime'
|
||||
was last updated (savegamestate for checkpoint) */
|
||||
time_t finish_time; /* end of 'realtime' interval: time of save or
|
||||
end of game; used for topten/logfile/xlogfile */
|
||||
};
|
||||
|
||||
/* KMH, conduct --
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 allmain.c $NHDT-Date: 1446975459 2015/11/08 09:37:39 $ $NHDT-Branch: master $:$NHDT-Revision: 1.66 $ */
|
||||
/* NetHack 3.6 allmain.c $NHDT-Date: 1450231173 2015/12/16 01:59:33 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.67 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -587,18 +587,13 @@ newgame()
|
||||
com_pager(1);
|
||||
}
|
||||
|
||||
urealtime.realtime = 0L;
|
||||
urealtime.start_timing = getnow();
|
||||
#ifdef INSURANCE
|
||||
save_currentstate();
|
||||
#endif
|
||||
program_state.something_worth_saving++; /* useful data now exists */
|
||||
|
||||
urealtime.realtime = 0L;
|
||||
#if defined(BSD) && !defined(POSIX_TYPES)
|
||||
(void) time((long *) &urealtime.restored);
|
||||
#else
|
||||
(void) time(&urealtime.restored);
|
||||
#endif
|
||||
|
||||
/* Success! */
|
||||
welcome(TRUE);
|
||||
return;
|
||||
|
||||
15
src/bones.c
15
src/bones.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 bones.c $NHDT-Date: 1449269914 2015/12/04 22:58:34 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.66 $ */
|
||||
/* NetHack 3.6 bones.c $NHDT-Date: 1450261363 2015/12/16 10:22:43 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.67 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985,1993. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -118,15 +118,18 @@ boolean restore;
|
||||
free_oname(otmp);
|
||||
}
|
||||
|
||||
if (otmp->otyp == SLIME_MOLD)
|
||||
if (otmp->otyp == SLIME_MOLD) {
|
||||
goodfruit(otmp->spe);
|
||||
#ifdef MAIL
|
||||
else if (otmp->otyp == SCR_MAIL)
|
||||
otmp->spe = 1;
|
||||
} else if (otmp->otyp == SCR_MAIL) {
|
||||
/* 0: delivered in-game via external event;
|
||||
1: from bones or wishing; 2: written with marker */
|
||||
if (otmp->spe == 0)
|
||||
otmp->spe = 1;
|
||||
#endif
|
||||
else if (otmp->otyp == EGG)
|
||||
} else if (otmp->otyp == EGG) {
|
||||
otmp->spe = 0;
|
||||
else if (otmp->otyp == TIN) {
|
||||
} else if (otmp->otyp == TIN) {
|
||||
/* make tins of unique monster's meat be empty */
|
||||
if (otmp->corpsenm >= LOW_PM
|
||||
&& unique_corpstat(&mons[otmp->corpsenm]))
|
||||
|
||||
56
src/cmd.c
56
src/cmd.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 cmd.c $NHDT-Date: 1449736557 2015/12/10 08:35:57 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.208 $ */
|
||||
/* NetHack 3.6 cmd.c $NHDT-Date: 1450178549 2015/12/15 11:22:29 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.209 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -107,7 +107,7 @@ extern int NDECL(dowield); /**/
|
||||
extern int NDECL(dowieldquiver); /**/
|
||||
extern int NDECL(dozap); /**/
|
||||
extern int NDECL(doorganize); /**/
|
||||
#endif /* DUMB */
|
||||
#endif /* DUMB */
|
||||
|
||||
static int NDECL(dosuspend_core); /**/
|
||||
|
||||
@@ -3402,15 +3402,8 @@ register char *cmd;
|
||||
register const struct func_tab *tlist;
|
||||
int res, NDECL((*func));
|
||||
|
||||
#if 0
|
||||
/* obsolete - scan through the cmdlist array looking for *cmd */
|
||||
for (tlist = cmdlist; tlist->f_char; tlist++) {
|
||||
if ((*cmd & 0xff) != (tlist->f_char & 0xff))
|
||||
continue;
|
||||
#else
|
||||
/* current - use *cmd to directly index cmdlist array */
|
||||
if ((tlist = Cmd.commands[*cmd & 0xff]) != 0) {
|
||||
#endif
|
||||
if (u.uburied && !tlist->can_if_buried) {
|
||||
You_cant("do that while you are buried!");
|
||||
res = 0;
|
||||
@@ -3433,23 +3426,13 @@ register char *cmd;
|
||||
}
|
||||
|
||||
if (bad_command) {
|
||||
char expcmd[10];
|
||||
register char c, *cp = expcmd;
|
||||
char expcmd[20]; /* we expect 'cmd' to point to 1 or 2 chars */
|
||||
register char c;
|
||||
|
||||
expcmd[0] = '\0';
|
||||
while ((c = *cmd++) != '\0')
|
||||
Strcat(expcmd, visctrl(c)); /* add 1..4 chars plus terminator */
|
||||
|
||||
while ((c = *cmd++) != '\0'
|
||||
&& (int) (cp - expcmd) < (int) (sizeof expcmd - 3)) {
|
||||
if (c >= 040 && c < 0177) {
|
||||
*cp++ = c;
|
||||
} else if (c & 0200) {
|
||||
*cp++ = 'M';
|
||||
*cp++ = '-';
|
||||
*cp++ = c & ~0200;
|
||||
} else {
|
||||
*cp++ = '^';
|
||||
*cp++ = c ^ 0100;
|
||||
}
|
||||
}
|
||||
*cp = '\0';
|
||||
if (!prefix_seen || !iflags.cmdassist
|
||||
|| !help_dir(0, "Invalid direction key!"))
|
||||
Norep("Unknown command '%s'.", expcmd);
|
||||
@@ -3587,10 +3570,9 @@ retry:
|
||||
if (!index(quitchars, dirsym)) {
|
||||
help_requested = (dirsym == '?');
|
||||
if (help_requested || iflags.cmdassist) {
|
||||
did_help =
|
||||
help_dir((s && *s == '^') ? dirsym : 0,
|
||||
help_requested ? (const char *) 0
|
||||
: "Invalid direction key!");
|
||||
did_help = help_dir((s && *s == '^') ? dirsym : 0,
|
||||
help_requested ? (const char *) 0
|
||||
: "Invalid direction key!");
|
||||
if (help_requested)
|
||||
goto retry;
|
||||
}
|
||||
@@ -4121,14 +4103,14 @@ char def;
|
||||
iflags.last_msg = PLNMSG_UNKNOWN; /* most recent pline is clobbered */
|
||||
|
||||
/* maximum acceptable length is QBUFSZ-1 */
|
||||
if (strlen(query) < QBUFSZ)
|
||||
return (*windowprocs.win_yn_function)(query, resp, def);
|
||||
|
||||
/* caller shouldn't have passed anything this long */
|
||||
paniclog("Query truncated: ", query);
|
||||
(void) strncpy(qbuf, query, QBUFSZ - 1 - 3);
|
||||
Strcpy(&qbuf[QBUFSZ - 1 - 3], "...");
|
||||
return (*windowprocs.win_yn_function)(qbuf, resp, def);
|
||||
if (strlen(query) >= QBUFSZ) {
|
||||
/* caller shouldn't have passed anything this long */
|
||||
paniclog("Query truncated: ", query);
|
||||
(void) strncpy(qbuf, query, QBUFSZ - 1 - 3);
|
||||
Strcpy(&qbuf[QBUFSZ - 1 - 3], "...");
|
||||
query = qbuf;
|
||||
}
|
||||
return (*windowprocs.win_yn_function)(query, resp, def);
|
||||
}
|
||||
|
||||
/* for paranoid_confirm:quit,die,attack prompting */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 do_name.c $NHDT-Date: 1449914085 2015/12/12 09:54:45 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.78 $ */
|
||||
/* NetHack 3.6 do_name.c $NHDT-Date: 1450178550 2015/12/15 11:22:30 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.80 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -54,7 +54,7 @@ const char *goal;
|
||||
putstr(tmpwin, 0, "Use [HJKL] to move the cursor 8 units at a time.");
|
||||
putstr(tmpwin, 0, "Or enter a background symbol (ex. <).");
|
||||
putstr(tmpwin, 0, "Use @ to move the cursor on yourself.");
|
||||
if (getpos_hilitefunc != NULL)
|
||||
if (getpos_hilitefunc)
|
||||
putstr(tmpwin, 0, "Use $ to display valid locations.");
|
||||
putstr(tmpwin, 0, "Use # to toggle automatic description.");
|
||||
/* disgusting hack; the alternate selection characters work for any
|
||||
@@ -80,7 +80,6 @@ const char *goal;
|
||||
int cx, cy, i, c;
|
||||
int sidx, tx, ty;
|
||||
boolean msg_given = TRUE; /* clear message window by default */
|
||||
boolean auto_msg = FALSE;
|
||||
boolean show_goal_msg = FALSE;
|
||||
static const char pick_chars[] = ".,;:";
|
||||
const char *cp;
|
||||
@@ -108,7 +107,7 @@ const char *goal;
|
||||
curs(WIN_MAP, cx, cy);
|
||||
flush_screen(0);
|
||||
show_goal_msg = FALSE;
|
||||
} else if (auto_msg && !msg_given && !hilite_state) {
|
||||
} else if (iflags.autodescribe && !msg_given && !hilite_state) {
|
||||
coord cc;
|
||||
int sym = 0;
|
||||
char tmpbuf[BUFSZ];
|
||||
@@ -132,7 +131,7 @@ const char *goal;
|
||||
flush_screen(0);
|
||||
}
|
||||
|
||||
if (auto_msg)
|
||||
if (iflags.autodescribe)
|
||||
msg_given = FALSE;
|
||||
|
||||
if (c == '\033') {
|
||||
@@ -197,7 +196,7 @@ const char *goal;
|
||||
/* update message window to reflect that we're still targetting */
|
||||
show_goal_msg = TRUE;
|
||||
msg_given = TRUE;
|
||||
} else if ((c == '$') && (getpos_hilitefunc != NULL)) {
|
||||
} else if (c == '$' && getpos_hilitefunc) {
|
||||
if (!hilite_state) {
|
||||
(*getpos_hilitefunc)(0);
|
||||
(*getpos_hilitefunc)(1);
|
||||
@@ -205,11 +204,11 @@ const char *goal;
|
||||
}
|
||||
goto nxtc;
|
||||
} else if (c == '#') {
|
||||
auto_msg = !auto_msg;
|
||||
iflags.autodescribe = !iflags.autodescribe;
|
||||
pline("Automatic description %sis %s.",
|
||||
flags.verbose ? "of features under cursor " : "",
|
||||
auto_msg ? "on" : "off");
|
||||
if (!auto_msg)
|
||||
iflags.autodescribe ? "on" : "off");
|
||||
if (!iflags.autodescribe)
|
||||
show_goal_msg = TRUE;
|
||||
msg_given = TRUE;
|
||||
goto nxtc;
|
||||
@@ -307,7 +306,7 @@ const char *goal;
|
||||
clear_nhwindow(WIN_MESSAGE);
|
||||
ccp->x = cx;
|
||||
ccp->y = cy;
|
||||
getpos_hilitefunc = NULL;
|
||||
getpos_hilitefunc = (void FDECL((*), (int))) 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -463,7 +462,7 @@ do_mname()
|
||||
/* unique monsters have their own specific names or titles;
|
||||
shopkeepers, temple priests and other minions use alternate
|
||||
name formatting routines which ignore any user-supplied name */
|
||||
if (mtmp->data->geno & G_UNIQ)
|
||||
if ((mtmp->data->geno & G_UNIQ) && !mtmp->ispriest)
|
||||
pline("%s doesn't like being called names!", upstart(monnambuf));
|
||||
else if (mtmp->isshk
|
||||
&& !(Deaf || mtmp->msleeping || !mtmp->mcanmove
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 dogmove.c $NHDT-Date: 1446604109 2015/11/04 02:28:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.56 $ */
|
||||
/* NetHack 3.6 dogmove.c $NHDT-Date: 1450061092 2015/12/14 02:44:52 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.57 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1094,8 +1094,8 @@ struct monst *mtmp;
|
||||
(on the other hand, perhaps you're sensing a brief glimpse
|
||||
of its mind as it changes form) */
|
||||
newsym(mtmp->mx, mtmp->my);
|
||||
You("%s %s appear where %s was!",
|
||||
cansee(mtmp->mx, mtmp->my) ? "see" : "sense",
|
||||
You("%s %s %sappear%s where %s was!",
|
||||
cansee(mtmp->mx, mtmp->my) ? "see" : "sense that",
|
||||
(mtmp->m_ap_type == M_AP_FURNITURE)
|
||||
? an(defsyms[mtmp->mappearance].explanation)
|
||||
: (mtmp->m_ap_type == M_AP_OBJECT
|
||||
@@ -1107,6 +1107,8 @@ struct monst *mtmp;
|
||||
: (mtmp->m_ap_type == M_AP_MONSTER)
|
||||
? an(mons[mtmp->mappearance].mname)
|
||||
: something,
|
||||
cansee(mtmp->mx, mtmp->my) ? "" : "has ",
|
||||
cansee(mtmp->mx, mtmp->my) ? "" : "ed",
|
||||
buf);
|
||||
display_nhwindow(WIN_MAP, TRUE);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 end.c $NHDT-Date: 1448241780 2015/11/23 01:23:00 $ $NHDT-Branch: master $:$NHDT-Revision: 1.108 $ */
|
||||
/* NetHack 3.6 end.c $NHDT-Date: 1450231174 2015/12/16 01:59:34 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.110 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -951,8 +951,8 @@ int how;
|
||||
/* remember time of death here instead of having bones, rip, and
|
||||
topten figure it out separately and possibly getting different
|
||||
time or even day if player is slow responding to --More-- */
|
||||
endtime = getnow();
|
||||
urealtime.realtime += (long) (endtime - urealtime.restored);
|
||||
urealtime.finish_time = endtime = getnow();
|
||||
urealtime.realtime += (long) (endtime - urealtime.start_timing);
|
||||
|
||||
/* Sometimes you die on the first move. Life's not fair.
|
||||
* On those rare occasions you get hosed immediately, go out
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 hacklib.c $NHDT-Date: 1446336792 2015/11/01 00:13:12 $ $NHDT-Branch: master $:$NHDT-Revision: 1.44 $ */
|
||||
/* NetHack 3.6 hacklib.c $NHDT-Date: 1450178551 2015/12/15 11:22:31 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.46 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* Copyright (c) Robert Patrick Rankin, 1991 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -373,20 +373,24 @@ char *
|
||||
visctrl(c)
|
||||
char c;
|
||||
{
|
||||
Static char ccc[3];
|
||||
Static char ccc[5];
|
||||
register int i = 0;
|
||||
|
||||
c &= 0177;
|
||||
ccc[2] = '\0';
|
||||
if (c < 040) {
|
||||
ccc[0] = '^';
|
||||
ccc[1] = c | 0100; /* letter */
|
||||
} else if (c == 0177) {
|
||||
ccc[0] = '^';
|
||||
ccc[1] = c & ~0100; /* '?' */
|
||||
} else {
|
||||
ccc[0] = c; /* printable character */
|
||||
ccc[1] = '\0';
|
||||
if ((uchar) c & 0200) {
|
||||
ccc[i++] = 'M';
|
||||
ccc[i++] = '-';
|
||||
}
|
||||
c &= 0177;
|
||||
if (c < 040) {
|
||||
ccc[i++] = '^';
|
||||
ccc[i++] = c | 0100; /* letter */
|
||||
} else if (c == 0177) {
|
||||
ccc[i++] = '^';
|
||||
ccc[i++] = c & ~0100; /* '?' */
|
||||
} else {
|
||||
ccc[i++] = c; /* printable character */
|
||||
}
|
||||
ccc[i] = '\0';
|
||||
return ccc;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 invent.c $NHDT-Date: 1447576348 2015/11/15 08:32:28 $ $NHDT-Branch: master $:$NHDT-Revision: 1.179 $ */
|
||||
/* NetHack 3.6 invent.c $NHDT-Date: 1450306195 2015/12/16 22:49:55 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.180 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -820,7 +820,7 @@ have_lizard()
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 3.6.0 tribute */
|
||||
/* 3.6 tribute */
|
||||
struct obj *
|
||||
u_have_novel()
|
||||
{
|
||||
|
||||
45
src/mail.c
45
src/mail.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 mail.c $NHDT-Date: 1436754892 2015/07/13 02:34:52 $ $NHDT-Branch: master $:$NHDT-Revision: 1.20 $ */
|
||||
/* NetHack 3.6 mail.c $NHDT-Date: 1450261364 2015/12/16 10:22:44 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.22 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -11,25 +11,24 @@
|
||||
* Notify user when new mail has arrived. Idea by Merlyn Leroy.
|
||||
*
|
||||
* The mail daemon can move with less than usual restraint. It can:
|
||||
* - move diagonally from a door
|
||||
* - use secret and closed doors
|
||||
* - run through a monster ("Gangway!", etc.)
|
||||
* - run over pools & traps
|
||||
* - move diagonally from a door
|
||||
* - use secret and closed doors
|
||||
* - run through a monster ("Gangway!", etc.)
|
||||
* - run over pools & traps
|
||||
*
|
||||
* Possible extensions:
|
||||
* - Open the file MAIL and do fstat instead of stat for efficiency.
|
||||
* (But sh uses stat, so this cannot be too bad.)
|
||||
* - Examine the mail and produce a scroll of mail named "From somebody".
|
||||
* - Invoke MAILREADER in such a way that only this single letter is
|
||||
*read.
|
||||
* - Do something to the text when the scroll is enchanted or cancelled.
|
||||
* - Make the daemon always appear at a stairwell, and have it find a
|
||||
* path to the hero.
|
||||
* - Open the file MAIL and do fstat instead of stat for efficiency.
|
||||
* (But sh uses stat, so this cannot be too bad.)
|
||||
* - Examine the mail and produce a scroll of mail named "From somebody".
|
||||
* - Invoke MAILREADER in such a way that only this single mail is read.
|
||||
* - Do something to the text when the scroll is enchanted or cancelled.
|
||||
* - Make the daemon always appear at a stairwell, and have it find a
|
||||
* path to the hero.
|
||||
*
|
||||
* Note by Olaf Seibert: On the Amiga, we usually don't get mail. So we go
|
||||
* through most of the effects at 'random' moments.
|
||||
* through most of the effects at 'random' moments.
|
||||
* Note by Paul Winner: The MSDOS port also 'fakes' the mail daemon at
|
||||
* random intervals.
|
||||
* random intervals.
|
||||
*/
|
||||
|
||||
STATIC_DCL boolean FDECL(md_start, (coord *));
|
||||
@@ -418,9 +417,9 @@ ckmailstatus()
|
||||
return;
|
||||
}
|
||||
if (--mustgetmail <= 0) {
|
||||
static struct mail_info deliver = { MSG_MAIL,
|
||||
"I have some mail for you", 0,
|
||||
0 };
|
||||
static struct mail_info deliver = {
|
||||
MSG_MAIL, "I have some mail for you", 0, 0
|
||||
};
|
||||
newmail(&deliver);
|
||||
mustgetmail = -1;
|
||||
}
|
||||
@@ -429,7 +428,7 @@ ckmailstatus()
|
||||
/*ARGSUSED*/
|
||||
void
|
||||
readmail(otmp)
|
||||
struct obj *otmp;
|
||||
struct obj *otmp UNUSED;
|
||||
{
|
||||
static char *junk[] = {
|
||||
NULL, /* placeholder for "Report bugs to <devteam@nethack.org>.", */
|
||||
@@ -502,7 +501,7 @@ ckmailstatus()
|
||||
/*ARGSUSED*/
|
||||
void
|
||||
readmail(otmp)
|
||||
struct obj *otmp;
|
||||
struct obj *otmp UNUSED;
|
||||
{
|
||||
#ifdef DEF_MAILREADER /* This implies that UNIX is defined */
|
||||
register const char *mr = 0;
|
||||
@@ -518,8 +517,8 @@ struct obj *otmp;
|
||||
#else
|
||||
#ifndef AMS /* AMS mailboxes are directories */
|
||||
display_file(mailbox, TRUE);
|
||||
#endif /* AMS */
|
||||
#endif /* DEF_MAILREADER */
|
||||
#endif /* AMS */
|
||||
#endif /* DEF_MAILREADER */
|
||||
|
||||
/* get new stat; not entirely correct: there is a small time
|
||||
window where we do not see new mail */
|
||||
@@ -585,6 +584,8 @@ struct obj *otmp;
|
||||
vms_doshell(cmd, TRUE);
|
||||
(void) sleep(1);
|
||||
}
|
||||
#else
|
||||
nhUse(otmp);
|
||||
#endif /* SHELL */
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 mhitu.c $NHDT-Date: 1446854230 2015/11/06 23:57:10 $ $NHDT-Branch: master $:$NHDT-Revision: 1.130 $ */
|
||||
/* NetHack 3.6 mhitu.c $NHDT-Date: 1450016149 2015/12/13 14:15:49 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.131 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -827,7 +827,7 @@ struct monst *mon;
|
||||
} else if (mc < 1) {
|
||||
/* intrinsic Protection is weaker (play balance; obtaining divine
|
||||
protection is too easy); it confers minimum mc 1 instead of 0 */
|
||||
if ((is_you && ((HProtection && u.ublessed) || u.uspellprot))
|
||||
if ((is_you && ((HProtection && u.ublessed > 0) || u.uspellprot))
|
||||
/* aligned priests and angels have innate intrinsic Protection */
|
||||
|| (mon->data == &mons[PM_ALIGNED_PRIEST] || is_minion(mon->data)))
|
||||
mc = 1;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 o_init.c $NHDT-Date: 1449588093 2015/12/08 15:21:33 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.21 $ */
|
||||
/* NetHack 3.6 o_init.c $NHDT-Date: 1450318588 2015/12/17 02:16:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.22 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -688,8 +688,8 @@ rename_disco()
|
||||
|
||||
if (oclass != prev_class) {
|
||||
any.a_int = 0;
|
||||
add_menu(tmpwin, NO_GLYPH, &any, ' ', iflags.menu_headings,
|
||||
ATR_NONE, let_to_name(oclass, FALSE, FALSE),
|
||||
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, iflags.menu_headings,
|
||||
let_to_name(oclass, FALSE, FALSE),
|
||||
MENU_UNSELECTED);
|
||||
prev_class = oclass;
|
||||
}
|
||||
|
||||
15
src/objnam.c
15
src/objnam.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 objnam.c $NHDT-Date: 1449740045 2015/12/10 09:34:05 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.155 $ */
|
||||
/* NetHack 3.6 objnam.c $NHDT-Date: 1450306207 2015/12/16 22:50:07 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.158 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1874,6 +1874,15 @@ const char *const *alt_as_is; /* another set like as_is[] */
|
||||
}
|
||||
}
|
||||
|
||||
/* avoid false hit on one_off[].plur == "lice";
|
||||
if more of these turn up, one_off[] entries will need to flagged
|
||||
as to which are whole words and which are matchable as suffices
|
||||
then matching in the loop below will end up becoming more complex */
|
||||
if (!strcmpi(basestr, "slice")) {
|
||||
if (to_plural)
|
||||
(void) strkitten(basestr, 's');
|
||||
return TRUE;
|
||||
}
|
||||
for (sp = one_off; sp->sing; sp++) {
|
||||
/* check whether endstring already matches */
|
||||
same = to_plural ? sp->plur : sp->sing;
|
||||
@@ -3336,6 +3345,8 @@ typfnd:
|
||||
break;
|
||||
#ifdef MAIL
|
||||
case SCR_MAIL:
|
||||
/* 0: delivered in-game via external event (or randomly for fake mail);
|
||||
1: from bones or wishing; 2: written with marker */
|
||||
otmp->spe = 1;
|
||||
break;
|
||||
#endif
|
||||
@@ -3468,7 +3479,7 @@ typfnd:
|
||||
if (aname && objtyp == otmp->otyp)
|
||||
name = aname;
|
||||
|
||||
/* 3.6.0 tribute - fix up novel */
|
||||
/* 3.6 tribute - fix up novel */
|
||||
if (otmp->otyp == SPE_NOVEL) {
|
||||
const char *novelname;
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ static struct Bool_Opt {
|
||||
#else
|
||||
{ "asksavedisk", (boolean *) 0, FALSE, SET_IN_FILE },
|
||||
#endif
|
||||
{ "autodescribe", &iflags.autodescribe, FALSE, SET_IN_GAME },
|
||||
{ "autodig", &flags.autodig, FALSE, SET_IN_GAME },
|
||||
{ "autoopen", &flags.autoopen, TRUE, SET_IN_GAME },
|
||||
{ "autopickup", &flags.pickup, TRUE, SET_IN_GAME },
|
||||
|
||||
17
src/potion.c
17
src/potion.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 potion.c $NHDT-Date: 1446861768 2015/11/07 02:02:48 $ $NHDT-Branch: master $:$NHDT-Revision: 1.121 $ */
|
||||
/* NetHack 3.6 potion.c $NHDT-Date: 1449977945 2015/12/13 03:39:05 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.122 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1759,6 +1759,7 @@ dodip()
|
||||
char allowall[2];
|
||||
short mixture;
|
||||
char qbuf[QBUFSZ], qtoo[QBUFSZ];
|
||||
const char *shortestname; /* last resort obj name for prompt */
|
||||
|
||||
allowall[0] = ALL_CLASSES;
|
||||
allowall[1] = '\0';
|
||||
@@ -1767,13 +1768,13 @@ dodip()
|
||||
if (inaccessible_equipment(obj, "dip", FALSE))
|
||||
return 0;
|
||||
|
||||
Sprintf(qbuf, "dip %s into", thesimpleoname(obj));
|
||||
shortestname = is_plural(obj) ? "them" : "it";
|
||||
here = levl[u.ux][u.uy].typ;
|
||||
/* Is there a fountain to dip into here? */
|
||||
if (IS_FOUNTAIN(here)) {
|
||||
/* "Dip <the object> into the fountain?" */
|
||||
Sprintf(qtoo, "%s the fountain?", qbuf);
|
||||
if (yn(upstart(qtoo)) == 'y') {
|
||||
if (yn(safe_qbuf(qbuf, "Dip ", " into the fountain?", obj,
|
||||
doname, thesimpleoname, shortestname)) == 'y') {
|
||||
dipfountain(obj);
|
||||
return 1;
|
||||
}
|
||||
@@ -1781,8 +1782,9 @@ dodip()
|
||||
const char *pooltype = waterbody_name(u.ux, u.uy);
|
||||
|
||||
/* "Dip <the object> into the {pool, moat, &c}?" */
|
||||
Sprintf(qtoo, "%s the %s?", qbuf, pooltype);
|
||||
if (yn(upstart(qtoo)) == 'y') {
|
||||
Sprintf(qtoo, " into the %s?", pooltype);
|
||||
if (yn(safe_qbuf(qbuf, "Dip ", qtoo, obj,
|
||||
doname, thesimpleoname, shortestname)) == 'y') {
|
||||
if (Levitation) {
|
||||
floating_above(pooltype);
|
||||
} else if (u.usteed && !is_swimmer(u.usteed->data)
|
||||
@@ -1799,6 +1801,9 @@ dodip()
|
||||
}
|
||||
|
||||
/* "What do you want to dip <the object> into?" */
|
||||
Strcpy(qbuf, safe_qbuf(qtoo, "What do you want to dip ", " into?", obj,
|
||||
doname, thesimpleoname, shortestname)
|
||||
+ sizeof "What do you want to " - sizeof "");
|
||||
potion = getobj(beverages, qbuf); /* "dip into" */
|
||||
if (!potion)
|
||||
return 0;
|
||||
|
||||
29
src/read.c
29
src/read.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 read.c $NHDT-Date: 1449645144 2015/12/09 07:12:24 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.126 $ */
|
||||
/* NetHack 3.6 read.c $NHDT-Date: 1450261365 2015/12/16 10:22:45 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.128 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -970,12 +970,16 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */
|
||||
#ifdef MAIL
|
||||
case SCR_MAIL:
|
||||
known = TRUE;
|
||||
if (sobj->spe)
|
||||
if (sobj->spe == 2)
|
||||
/* "stamped scroll" created via magic marker--without a stamp */
|
||||
pline("This scroll is marked \"postage due\".");
|
||||
else if (sobj->spe)
|
||||
/* scroll of mail obtained from bones file or from wishing;
|
||||
* note to the puzzled: the game Larn actually sends you junk
|
||||
* mail if you win!
|
||||
*/
|
||||
pline(
|
||||
"This seems to be junk mail addressed to the finder of the Eye of Larn.");
|
||||
/* note to the puzzled: the game Larn actually sends you junk
|
||||
* mail if you win!
|
||||
*/
|
||||
else
|
||||
readmail(sobj);
|
||||
break;
|
||||
@@ -1050,9 +1054,12 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */
|
||||
useup(otmp);
|
||||
break;
|
||||
}
|
||||
s = scursed ? -1 : otmp->spe >= 9
|
||||
? (rn2(otmp->spe) == 0)
|
||||
: sblessed ? rnd(3 - otmp->spe / 3) : 1;
|
||||
s = scursed ? -1
|
||||
: (otmp->spe >= 9)
|
||||
? (rn2(otmp->spe) == 0)
|
||||
: sblessed
|
||||
? rnd(3 - otmp->spe / 3)
|
||||
: 1;
|
||||
if (s >= 0 && Is_dragon_scales(otmp)) {
|
||||
/* dragon scales get turned into dragon scale mail */
|
||||
pline("%s merges and hardens!", Yname2(otmp));
|
||||
@@ -1075,8 +1082,8 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */
|
||||
s == 0 ? "violently " : "",
|
||||
otense(otmp, Blind ? "vibrate" : "glow"),
|
||||
(!Blind && !same_color) ? " " : "",
|
||||
(Blind || same_color) ? ""
|
||||
: hcolor(scursed ? NH_BLACK : NH_SILVER),
|
||||
(Blind || same_color)
|
||||
? "" : hcolor(scursed ? NH_BLACK : NH_SILVER),
|
||||
(s * s > 1) ? "while" : "moment");
|
||||
/* [this cost handling will need updating if shop pricing is
|
||||
ever changed to care about curse/bless status of armor] */
|
||||
@@ -1086,6 +1093,8 @@ struct obj *sobj; /* scroll, or fake spellbook object for scroll-like spell */
|
||||
curse(otmp);
|
||||
else if (sblessed && !otmp->blessed)
|
||||
bless(otmp);
|
||||
else if (!scursed && otmp->cursed)
|
||||
uncurse(otmp);
|
||||
if (s) {
|
||||
otmp->spe += s;
|
||||
adj_abon(otmp, s);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 restore.c $NHDT-Date: 1446892455 2015/11/07 10:34:15 $ $NHDT-Branch: master $:$NHDT-Revision: 1.101 $ */
|
||||
/* NetHack 3.6 restore.c $NHDT-Date: 1450231174 2015/12/16 01:59:34 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.102 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -568,13 +568,10 @@ unsigned int *stuckid, *steedid;
|
||||
foo = time_from_yyyymmddhhmmss(timebuf);
|
||||
|
||||
ReadTimebuf(ubirthday);
|
||||
mread(fd, &urealtime.realtime, sizeof(urealtime.realtime));
|
||||
ReadTimebuf(urealtime.restored);
|
||||
#if defined(BSD) && !defined(POSIX_TYPES)
|
||||
(void) time((long *) &urealtime.restored);
|
||||
#else
|
||||
(void) time(&urealtime.restored);
|
||||
#endif
|
||||
mread(fd, &urealtime.realtime, sizeof urealtime.realtime);
|
||||
ReadTimebuf(urealtime.start_timing); /** [not used] **/
|
||||
/* current time is the time to use for next urealtime.realtime update */
|
||||
urealtime.start_timing = getnow();
|
||||
|
||||
set_uasmon();
|
||||
#ifdef CLIPPING
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 role.c $NHDT-Date: 1446861770 2015/11/07 02:02:50 $ $NHDT-Branch: master $:$NHDT-Revision: 1.34 $ */
|
||||
/* NetHack 3.6 role.c $NHDT-Date: 1450320155 2015/12/17 02:42:35 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.35 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1927,7 +1927,7 @@ winid where;
|
||||
any.a_int = 0;
|
||||
/* use four spaces of padding to fake a grayed out menu choice */
|
||||
Sprintf(buf, "%4s%s forces %s", "", constrainer, forcedvalue);
|
||||
add_menu(where, NO_GLYPH, &any, ' ', 0, ATR_NONE, buf,
|
||||
add_menu(where, NO_GLYPH, &any, 0, 0, ATR_NONE, buf,
|
||||
MENU_UNSELECTED);
|
||||
} else if (what) {
|
||||
any.a_int = RS_menu_arg(which);
|
||||
|
||||
13
src/save.c
13
src/save.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 save.c $NHDT-Date: 1448241784 2015/11/23 01:23:04 $ $NHDT-Branch: master $:$NHDT-Revision: 1.95 $ */
|
||||
/* NetHack 3.6 save.c $NHDT-Date: 1450231175 2015/12/16 01:59:35 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.98 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -289,12 +289,15 @@ register int fd, mode;
|
||||
#ifdef SYSFLAGS
|
||||
bwrite(fd, (genericptr_t) &sysflags, sizeof(struct sysflag));
|
||||
#endif
|
||||
urealtime.realtime += (long) (getnow() - urealtime.restored);
|
||||
urealtime.finish_time = getnow();
|
||||
urealtime.realtime += (long) (urealtime.finish_time
|
||||
- urealtime.start_timing);
|
||||
bwrite(fd, (genericptr_t) &u, sizeof(struct you));
|
||||
bwrite(fd, yyyymmddhhmmss(ubirthday), 14);
|
||||
bwrite(fd, (genericptr_t) &urealtime.realtime,
|
||||
sizeof(urealtime.realtime));
|
||||
bwrite(fd, yyyymmddhhmmss(urealtime.restored), 14);
|
||||
bwrite(fd, (genericptr_t) &urealtime.realtime, sizeof urealtime.realtime);
|
||||
bwrite(fd, yyyymmddhhmmss(urealtime.start_timing), 14); /** Why? **/
|
||||
/* this is the value to use for the next update of urealtime.realtime */
|
||||
urealtime.start_timing = urealtime.finish_time;
|
||||
save_killers(fd, mode);
|
||||
|
||||
/* must come before migrating_objs and migrating_mons are freed */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 shknam.c $NHDT-Date: 1448094342 2015/11/21 08:25:42 $ $NHDT-Branch: master $:$NHDT-Revision: 1.38 $ */
|
||||
/* NetHack 3.6 shknam.c $NHDT-Date: 1450306213 2015/12/16 22:50:13 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.39 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -454,7 +454,7 @@ boolean mkspecl;
|
||||
struct permonst *ptr;
|
||||
int atype;
|
||||
|
||||
/* 3.6.0 tribute */
|
||||
/* 3.6 tribute */
|
||||
if (mkspecl && (!strcmp(shp->name, "rare books")
|
||||
|| !strcmp(shp->name, "second-hand bookstore"))) {
|
||||
struct obj *novel = mksobj_at(SPE_NOVEL, sx, sy, FALSE, FALSE);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 sounds.c $NHDT-Date: 1446713641 2015/11/05 08:54:01 $ $NHDT-Branch: master $:$NHDT-Revision: 1.74 $ */
|
||||
/* NetHack 3.6 sounds.c $NHDT-Date: 1450306219 2015/12/16 22:50:19 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.75 $ */
|
||||
/* Copyright (c) 1989 Janet Walz, Mike Threepoint */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -908,7 +908,7 @@ register struct monst *mtmp;
|
||||
break;
|
||||
}
|
||||
case MS_RIDER:
|
||||
/* 3.6.0 tribute */
|
||||
/* 3.6 tribute */
|
||||
if (ptr == &mons[PM_DEATH]
|
||||
&& !context.tribute.Deathnotice && u_have_novel()) {
|
||||
struct obj *book = u_have_novel();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 spell.c $NHDT-Date: 1447653429 2015/11/16 05:57:09 $ $NHDT-Branch: master $:$NHDT-Revision: 1.72 $ */
|
||||
/* NetHack 3.6 spell.c $NHDT-Date: 1450306224 2015/12/16 22:50:24 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.74 $ */
|
||||
/* Copyright (c) M. Stephenson 1988 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -430,7 +430,7 @@ register struct obj *spellbook;
|
||||
boolean too_hard = FALSE;
|
||||
|
||||
/* attempting to read dull book may make hero fall asleep */
|
||||
if (!confused && booktype != SPE_BLANK_PAPER
|
||||
if (!confused && !Sleep_resistance
|
||||
&& !strcmp(OBJ_DESCR(objects[booktype]), "dull")) {
|
||||
const char *eyes;
|
||||
int dullbook = rnd(25) - ACURR(A_WIS);
|
||||
@@ -465,7 +465,7 @@ register struct obj *spellbook;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 3.6.0 tribute */
|
||||
/* 3.6 tribute */
|
||||
if (booktype == SPE_NOVEL) {
|
||||
/* Obtain current Terry Pratchett book title */
|
||||
const char *tribtitle = noveltitle(&spellbook->novelidx);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 topten.c $NHDT-Date: 1448117546 2015/11/21 14:52:26 $ $NHDT-Branch: master $:$NHDT-Revision: 1.40 $ */
|
||||
/* NetHack 3.6 topten.c $NHDT-Date: 1450231176 2015/12/16 01:59:36 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.41 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -330,8 +330,8 @@ struct toptenentry *tt;
|
||||
Fprintf(rfile, "%cconduct=0x%lx%cturns=%ld%cachieve=0x%lx", XLOG_SEP,
|
||||
encodeconduct(), XLOG_SEP, moves, XLOG_SEP, encodeachieve());
|
||||
Fprintf(rfile, "%crealtime=%ld%cstarttime=%ld%cendtime=%ld", XLOG_SEP,
|
||||
(long) urealtime.realtime, XLOG_SEP, (long) ubirthday, XLOG_SEP,
|
||||
(long) urealtime.endtime);
|
||||
(long) urealtime.realtime, XLOG_SEP,
|
||||
(long) ubirthday, XLOG_SEP, (long) urealtime.finish_time);
|
||||
Fprintf(rfile, "%cgender0=%s%calign0=%s", XLOG_SEP,
|
||||
genders[flags.initgend].filecode, XLOG_SEP,
|
||||
aligns[1 - u.ualignbase[A_ORIGINAL]].filecode);
|
||||
@@ -516,7 +516,6 @@ time_t when;
|
||||
t0->birthdate = yyyymmdd(ubirthday);
|
||||
t0->deathdate = yyyymmdd(when);
|
||||
t0->tt_next = 0;
|
||||
urealtime.endtime = when;
|
||||
#ifdef UPDATE_RECORD_IN_PLACE
|
||||
t0->fpos = -1L;
|
||||
#endif
|
||||
|
||||
10
src/trap.c
10
src/trap.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 trap.c $NHDT-Date: 1448492213 2015/11/25 22:56:53 $ $NHDT-Branch: master $:$NHDT-Revision: 1.249 $ */
|
||||
/* NetHack 3.6 trap.c $NHDT-Date: 1449977947 2015/12/13 03:39:07 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.250 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -3345,10 +3345,11 @@ boolean force;
|
||||
*/
|
||||
return ER_NOTHING;
|
||||
} else if (obj->oclass == SCROLL_CLASS) {
|
||||
if (obj->otyp == SCR_BLANK_PAPER
|
||||
#ifdef MAIL
|
||||
if (obj->otyp == SCR_MAIL)
|
||||
return 0;
|
||||
|| obj->otyp == SCR_MAIL
|
||||
#endif
|
||||
) return 0;
|
||||
if (carried(obj))
|
||||
pline("Your %s %s.", ostr, vtense(ostr, "fade"));
|
||||
|
||||
@@ -3362,8 +3363,9 @@ boolean force;
|
||||
if (obj->otyp == SPE_BOOK_OF_THE_DEAD) {
|
||||
pline("Steam rises from %s.", the(xname(obj)));
|
||||
return 0;
|
||||
} else if (obj->otyp == SPE_BLANK_PAPER) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (carried(obj))
|
||||
pline("Your %s %s.", ostr, vtense(ostr, "fade"));
|
||||
|
||||
|
||||
21
src/write.c
21
src/write.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 write.c $NHDT-Date: 1446078770 2015/10/29 00:32:50 $ $NHDT-Branch: master $:$NHDT-Revision: 1.16 $ */
|
||||
/* NetHack 3.6 write.c $NHDT-Date: 1450261366 2015/12/16 10:22:46 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.17 $ */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
#include "hack.h"
|
||||
@@ -58,7 +58,7 @@ register struct obj *otmp;
|
||||
}
|
||||
|
||||
/* decide whether the hero knowns a particular scroll's label;
|
||||
unfortunately, we can't track things are haven't been added to
|
||||
unfortunately, we can't track things that haven't been added to
|
||||
the discoveries list and aren't present in current inventory,
|
||||
so some scrolls with ought to yield True will end up False */
|
||||
STATIC_OVL boolean
|
||||
@@ -335,11 +335,20 @@ found:
|
||||
new_obj->cursed = (curseval < 0);
|
||||
#ifdef MAIL
|
||||
if (new_obj->otyp == SCR_MAIL)
|
||||
new_obj->spe = 1;
|
||||
/* 0: delivered in-game via external event (or randomly for fake mail);
|
||||
1: from bones or wishing; 2: written with marker */
|
||||
new_obj->spe = 2;
|
||||
#endif
|
||||
new_obj =
|
||||
hold_another_object(new_obj, "Oops! %s out of your grasp!",
|
||||
The(aobjnam(new_obj, "slip")), (const char *) 0);
|
||||
/* unlike alchemy, for example, a successful result yields the
|
||||
specifically chosen item so hero recognizes it even if blind;
|
||||
the exception is for being lucky writing an undiscovered scroll,
|
||||
where the label associated with the type-name isn't known yet */
|
||||
new_obj->dknown = label_known(new_obj->otyp, invent) ? 1 : 0;
|
||||
|
||||
new_obj = hold_another_object(new_obj, "Oops! %s out of your grasp!",
|
||||
The(aobjnam(new_obj, "slip")),
|
||||
(const char *) 0);
|
||||
nhUse(new_obj); /* try to avoid complaint about dead assignment */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
NetHack 3.6 on a Windows system
|
||||
(Windows 7/8.x/10 or later only. XP may work but is untested)
|
||||
==============================================================
|
||||
Last revision: $NHDT-Date: 1447979773 2015/11/20 00:36:13 $
|
||||
Last revision: $NHDT-Date: 1450306349 2015/12/16 22:52:29 $
|
||||
|
||||
Credit for the porting of NetHack to the Win32 Console Subsystem goes to
|
||||
the NT Porting Team started by Michael Allison.
|
||||
@@ -16,7 +16,7 @@ contributed the port.
|
||||
|
||||
The PC Windows porting team consisting of Michael Allison, David Cohrs,
|
||||
Alex Kompel, Dion Nicolaas, Yitzhak Sapir, and Janet Walz maintained the
|
||||
tty and graphical win32 versions of NetHack 3.6.0.
|
||||
tty and graphical win32 versions of NetHack 3.6.1.
|
||||
|
||||
You can build a TTY version of NetHack and a Windows Graphical
|
||||
version. You can use one of the following build environments:
|
||||
@@ -90,7 +90,7 @@ a 32-bit x86 version, or a 64-bit x64 version. The default Makefile
|
||||
is set up for a 32-bit x86 version, but that's only because it will
|
||||
run on the most number of existing Windows environments.
|
||||
|
||||
NetHack's save files and bones files in the 3.6.0 release have not
|
||||
NetHack's save files and bones files in the 3.6.1 release have not
|
||||
evolved enough to allow them to interchange between the 32-bit version
|
||||
and the 64-bit version (or between different platforms). Hopefully
|
||||
that will change in an upcoming release.
|
||||
@@ -508,10 +508,10 @@ II. Executing the game
|
||||
If you will be running it by launching it from a shortcut, just use
|
||||
the following information when setting up the shortcut.
|
||||
|
||||
Description : NetHack 3.6.0 Console version
|
||||
Description : NetHack 3.6.1 Console version
|
||||
Command Line : C:\NETHACK\BINARY\NETHACK.EXE
|
||||
|
||||
Description : NetHack 3.6.0 Graphical Interface
|
||||
Description : NetHack 3.6.1 Graphical Interface
|
||||
Command Line : C:\NETHACK\BINARY\NETHACKW.EXE
|
||||
|
||||
(changing the directory to the appropriate one of course)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
NAME NETHACK
|
||||
DESCRIPTION 'NetHack 3.6.0 for Windows NT'
|
||||
DESCRIPTION 'NetHack 3.6.1 for Windows NT'
|
||||
EXETYPE WINDOWS
|
||||
STUB 'WINSTUB.EXE'
|
||||
CODE PRELOAD MOVEABLE DISCARDABLE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/osascript
|
||||
# NetHack 3.6.0 NetHackGuidebook.applescript $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
|
||||
# NetHack 3.6.1 NetHackGuidebook.applescript $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
|
||||
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2011
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/osascript
|
||||
# NetHack 3.6.0 NetHackTerm.applescript $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
|
||||
# NetHack 3.6.1 NetHackTerm.applescript $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
|
||||
# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2011
|
||||
# NetHack may be freely redistributed. See license for details.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 wintty.c $NHDT-Date: 1449052583 2015/12/02 10:36:23 $ $NHDT-Branch: master $:$NHDT-Revision: 1.116 $ */
|
||||
/* NetHack 3.6 wintty.c $NHDT-Date: 1450320157 2015/12/17 02:42:37 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.117 $ */
|
||||
/* Copyright (c) David Cohrs, 1991 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -418,7 +418,7 @@ makepicks:
|
||||
/* add miscellaneous menu entries */
|
||||
role_menu_extra(ROLE_RANDOM, win);
|
||||
any.a_int = 0; /* separator, not a choice */
|
||||
add_menu(win, NO_GLYPH, &any, ' ', 0, ATR_NONE, "",
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "",
|
||||
MENU_UNSELECTED);
|
||||
role_menu_extra(RS_RACE, win);
|
||||
role_menu_extra(RS_GENDER, win);
|
||||
@@ -502,7 +502,7 @@ makepicks:
|
||||
/* add miscellaneous menu entries */
|
||||
role_menu_extra(ROLE_RANDOM, win);
|
||||
any.a_int = 0; /* separator, not a choice */
|
||||
add_menu(win, NO_GLYPH, &any, ' ', 0, ATR_NONE, "",
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "",
|
||||
MENU_UNSELECTED);
|
||||
role_menu_extra(RS_ROLE, win);
|
||||
role_menu_extra(RS_GENDER, win);
|
||||
@@ -591,7 +591,7 @@ makepicks:
|
||||
/* add miscellaneous menu entries */
|
||||
role_menu_extra(ROLE_RANDOM, win);
|
||||
any.a_int = 0; /* separator, not a choice */
|
||||
add_menu(win, NO_GLYPH, &any, ' ', 0, ATR_NONE, "",
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "",
|
||||
MENU_UNSELECTED);
|
||||
role_menu_extra(RS_ROLE, win);
|
||||
role_menu_extra(RS_RACE, win);
|
||||
@@ -676,7 +676,7 @@ makepicks:
|
||||
setup_algnmenu(win, TRUE, ROLE, RACE, GEND);
|
||||
role_menu_extra(ROLE_RANDOM, win);
|
||||
any.a_int = 0; /* separator, not a choice */
|
||||
add_menu(win, NO_GLYPH, &any, ' ', 0, ATR_NONE, "",
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "",
|
||||
MENU_UNSELECTED);
|
||||
role_menu_extra(RS_ROLE, win);
|
||||
role_menu_extra(RS_RACE, win);
|
||||
@@ -760,11 +760,11 @@ makepicks:
|
||||
races[RACE].adj,
|
||||
(GEND == 1 && roles[ROLE].name.f) ? roles[ROLE].name.f
|
||||
: roles[ROLE].name.m);
|
||||
add_menu(win, NO_GLYPH, &any, ' ', 0, ATR_NONE, pbuf,
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, pbuf,
|
||||
MENU_UNSELECTED);
|
||||
/* blank separator */
|
||||
any.a_int = 0;
|
||||
add_menu(win, NO_GLYPH, &any, ' ', 0, ATR_NONE, "", MENU_UNSELECTED);
|
||||
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "", MENU_UNSELECTED);
|
||||
/* [ynaq] menu choices */
|
||||
any.a_int = 1;
|
||||
add_menu(win, NO_GLYPH, &any, 'y', 0, ATR_NONE, "Yes; start game",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 mswproc.c $NHDT-Date: 1449751720 2015/12/10 12:48:40 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.95 $ */
|
||||
/* NetHack 3.6 mswproc.c $NHDT-Date: 1450306253 2015/12/16 22:50:53 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.96 $ */
|
||||
/* Copyright (C) 2001 by Alex Kompel */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -2222,7 +2222,7 @@ logDebug(const char *fmt, ...)
|
||||
/* Reading and writing settings from the registry. */
|
||||
#define CATEGORYKEY "Software"
|
||||
#define COMPANYKEY "NetHack"
|
||||
#define PRODUCTKEY "NetHack 3.6.0"
|
||||
#define PRODUCTKEY "NetHack 3.6.1"
|
||||
#define SETTINGSKEY "Settings"
|
||||
#define MAINSHOWSTATEKEY "MainShowState"
|
||||
#define MAINMINXKEY "MainMinX"
|
||||
|
||||
Reference in New Issue
Block a user