]> granicus.if.org Git - nethack/log
nethack
13 years agoSYSCF bits
keni [Fri, 27 Jan 2012 20:15:31 +0000 (20:15 +0000)]
SYSCF bits
(This covers some thing that Pat found and some things I found while working
on those.)
Unscramble duplicate use of GREPPATH and GDBPATH symbols.
Add some more info to config.h.
Make missing SYSCF_FILE a fatal error.
Make a parse error in SYSCF_FILE a fatal error.
Rename PANICTRACE_GLIBC (et al) to PANICTRACE_LIBC (et al) since FreeBSD
 and Mac OS X (at least) also implement the needed API.
Allow SYSCF_FILE to be unreadable by the user (for setgid installs).
If SYSCF, do NOT fall back to the compiled in WIZARD account.
Put WIZARD into sysopt and remove special cases in authorize_wizard_mode().

13 years agooutrip() updating (trunk only)
nethack.rankin [Tue, 24 Jan 2012 04:26:33 +0000 (04:26 +0000)]
outrip() updating (trunk only)

     Part II of the bones tracking patch.  Change umpteen different outrip()
routines to handle its new time_t argument, and use formatkiller() instead
of directly accessing killer.{format,name} and killed_by_prefix[].  The
latter is now static within formatkiller().

     The many sys/* and win/* changes are untested....

13 years agobones tracking (trunk only)
nethack.rankin [Mon, 23 Jan 2012 10:45:31 +0000 (10:45 +0000)]
bones tracking (trunk only)

[See cvs log for include/rm.h or doc/window.doc for more complete description.]

Attach hero info, death reason, and date+time to a level that's being saved
as bones.  Read such data back when loading a bones file, then treat it as
part of that level for the rest of the game.  Dying on a loaded bones file
will chain the new hero+death+date to previous one(s) if new bones get saved.

outrip() now takes an extra argument of type time_t, and interface-specific
implementations of this routine need to be updated to handle that.

13 years agobones tracking (trunk only)
nethack.rankin [Mon, 23 Jan 2012 10:41:57 +0000 (10:41 +0000)]
bones tracking (trunk only)

      Quite a long time ago, the developer/administrator of the 'hearse'
bones respository asked to have bones files augmented so that they could
be correlated with logfile entries.  He was forced to approximate it by
comparing file date+time with logfile date, which won't work well if there
are multiple deaths at roughly the same time, or perhaps even on the same
day.  This adds character name plus role, race, gender, alignment, the
cause of death, and date plus time of death to the bones file when it is
saved, and reads that data in when a bones file is loaded, then retains
it as part of that level for the remainder of the game.  Dying on a level
that was loaded from bones will chain the new dead hero info to whatever
was there from the previous one(s).  It's written as fixed length strings
padded with spaces before writing the map and its messy details, making
it easy to spot with a simple file browsing tool rather than requiring
something which can interpret nethack level files.  This may need to be
tweaked if players start shelling out of nethack to see whether the
checkpoint file for a newly entered level contains bones info, but at the
moment I'm not going to worry about that.

     TODO:  I wanted the bones and topten date to match, so am obtaining
the current date+time in done() and passing it to both of those and also
to outrip().  Hence the latter now has an additional argument.  So far only
genl_outrip() and hup_outrip() in src and the three outrips in win/chain
have been taught about that; interfaces that supply their own outrip()
need to be updated and probably won't compile right now.  Also, code for
formatting the cause of death has been moved from topten() into a separate
routine so that the new bones code can share it.  genl_outrip() now calls
it too; the various other outrip() routines should be changed to call it
instead of continuing to duplicate that core code.  (I probably should
have made topten.c's killed_by_prefix[] be static in order to force that,
but haven't done so.)

     TODO too:  there ought to be some way of viewing the data for a loaded
bones file from within nethack.  I'll probably add something to the dungeon
overview code to treat it as an implicit annotation, as least in wizard mode.
Showing it in normal play once a level is sufficiently discovered would be
useful, but I'm not sure what criteria should control that.  Neither ghost
nor grave is guaranteed to be present, particularly for levels that were
saved as bones, loaded into a subsequent game, then became new bones when
the second hero died there, which can occur an arbitrary number of times.

13 years agounixtty lint (trunk only)
nethack.rankin [Mon, 23 Jan 2012 07:11:09 +0000 (07:11 +0000)]
unixtty lint (trunk only)

     gcc reports "comparison between signed and unsigned".  One header file
uses unsigned long for tty flags, another uses [signed] short.  'unsigned'
seems like the best compromise, but this might accidentally introduce lint
for some other configuration.

13 years agolint bit, shadowed 'restoring' (trunk only)
nethack.rankin [Mon, 23 Jan 2012 06:29:37 +0000 (06:29 +0000)]
lint bit, shadowed 'restoring' (trunk only)

13 years agomsdos build (trunk only)
nethack.allison [Sun, 22 Jan 2012 06:33:47 +0000 (06:33 +0000)]
msdos build (trunk only)

13 years agomsdos build (trunk only)
nethack.allison [Sun, 22 Jan 2012 06:27:09 +0000 (06:27 +0000)]
msdos build (trunk only)

13 years agoremove line of unreachable code (trunk only)
nethack.allison [Sat, 21 Jan 2012 12:39:03 +0000 (12:39 +0000)]
remove line of unreachable code (trunk only)

13 years agofix date.h/patchlevel.h removal typo
nethack.rankin [Sat, 21 Jan 2012 09:00:37 +0000 (09:00 +0000)]
fix date.h/patchlevel.h removal typo

13 years agosync MS Makefile dependencies
nethack.allison [Fri, 20 Jan 2012 13:05:21 +0000 (13:05 +0000)]
sync MS Makefile dependencies

sync some Makefile dependencies with sys/unix/Makefile.src

13 years agodate.h/patchlevel.h dependencies (trunk only)
nethack.rankin [Fri, 20 Jan 2012 03:41:33 +0000 (03:41 +0000)]
date.h/patchlevel.h dependencies (trunk only)

     Remove date.h and patchlevel.h from win/tty/wintty.c, win/X11/winX.c,
and sys/share/pcmain.c (caveat: the latter two are untested) so that they
don't get recompiled every time any other source file changes and triggers
creation of a new date.h.  Only version.c needs to be recompiled in that
situation.  Also, Makefile.src was missing a reference to botl.h.

13 years agogcc invocation cleanup (mac)
keni [Wed, 18 Jan 2012 22:32:24 +0000 (22:32 +0000)]
gcc invocation cleanup (mac)
Move the compiler flags out of CC and into CFLAGS.  Split off
-Wunreachable-code, comment it out, and explain why.  Fix typo.

13 years agosave and restore lint cleanup (trunk only)
nethack.rankin [Wed, 18 Jan 2012 02:36:50 +0000 (02:36 +0000)]
save and restore lint cleanup (trunk only)

     Fix a couple of signed vs unsigned and unused paramater warnings
that pointed to actual bugs.  uid values were being handled as int, even
though "modern" systems use type uid_t which could be bigger and is almost
certainly unsigned.  There haven't been any reports of nethack falsely
claiming that the wrong user is trying to restore, so in practice this
hasn't mattered, but switch from int to unsigned long to make the chance
of problems be even smaller.

     The code to save message history was ignoring the 'mode' argument so
would have attepted to write even when asked to free memory instead.  It
isn't currently called by freedynamicdata() so the problem was theoretical
rather than real.

     The 'UNUSED' macro is inadequate to handle parameters which are used
by some conditional configurations and unused by others, so there are
still several warnings about unused parameters from save.c and restore.c.

13 years agodlb capacity (trunk only)
nethack.rankin [Mon, 16 Jan 2012 03:56:08 +0000 (03:56 +0000)]
dlb capacity (trunk only)

     From the newsgroup:  if someone adds too many new special levels, dlb
creation during install will give a warning but still exit with success,
and the subsequent installation won't know that the excess files need to be
placed in the playground separately.  The result is that some files will
be missing when nethack tries to access them.  The newsgroup thread states
that slash'em increased dlb's default limit of 200 files to 300, and the
unnethack variant increased it to 250 and also changed the overflow message
into an error that causes 'make' to quit.  (The thread was initiated by
someone working on his own, not affiliated with either variant, who asked
for help figuring out why nethack couldn't find files at the end of the
alphabet.  My answer didn't help much; I thought he was working with
separate files rather than with a DLB container.)

     I started to go with the too-many-files-is-an-error fix, but instead
went the GNU route ("no arbitrary limits") and made the number of allowed
files become dynamic.  It starts at 200 and expands by increments of 40
when necessary.

13 years agoIdentify type of executable in Windows
nethack.allison [Sun, 15 Jan 2012 19:11:41 +0000 (19:11 +0000)]
Identify type of executable in Windows

For Windows, this just uses the RUNTIME_PORT_ID hook that was already in the code
to identify which executable you are running

Mike

13 years agoMore Microsoft Visual Studio 2010 Express compiler build
nethack.allison [Sun, 15 Jan 2012 17:43:54 +0000 (17:43 +0000)]
More Microsoft Visual Studio 2010 Express compiler build

More updates to support the latest freely downloadable Microsoft compiler.

13 years agorumors & oracles & data.base vs "%lx" format (trunk only)
nethack.rankin [Sun, 15 Jan 2012 09:27:06 +0000 (09:27 +0000)]
rumors & oracles & data.base vs "%lx" format (trunk only)

     For text data processed by makedefs at install time, change all
printf and scanf calls that use %lx format to deal with unsigned long
variables, replacing the makedefs hack of a few days ago.  It's not as
clean as I would have liked (quite a few casts), because the values
involved are derived from ftell and/or passed to fseek, which deal in
signed longs.  But it clears up a few format check warnings by gcc in
rumors.c and pager.c in addition to the previous one in makedefs.c and
uses the right data type even in the places where no warning was issued.

13 years agoupdate Unix Makefile.src (trunk only)
nethack.rankin [Fri, 13 Jan 2012 03:31:39 +0000 (03:31 +0000)]
update Unix Makefile.src (trunk only)

     Teach ``make depend'' about the new win/chain code so that the build
rules for that aren't blown away, and then run make depend to get things
up to date.  I think hack.h/$(HACK_H) missing botl.h and pcmain.o missing
date.h were the only things significant that turned up.

     The comment for CSOURCES says it should have all sources, but the
value had $(SYSSRC) rather than $(SYSCSRC).  I've taken the comment at its
word and inserted the missing 'C'; I wonder whether that'll break anything.
Does anybody use ``make tags'' these days?

13 years agodrop extra includes
keni [Thu, 12 Jan 2012 15:08:29 +0000 (15:08 +0000)]
drop extra includes
Remove includes already pulled in by hack.h

13 years agolint bit: protects(artifact.c) (trunk only)
nethack.rankin [Thu, 12 Jan 2012 09:51:05 +0000 (09:51 +0000)]
lint bit: protects(artifact.c) (trunk only)

     Rename 'is_worn' argument; that's also the name of a function.

13 years agosupress lev_main.c diagnostic (trunk only)
nethack.rankin [Thu, 12 Jan 2012 04:48:12 +0000 (04:48 +0000)]
supress lev_main.c diagnostic (trunk only)

     gcc warned about comparing signed with unsigned for one particular
write() that used an expression for the size argument, and there was already
conditional code to try to handle it for a couple of other compilers.  But
this simpler fix should handle it for everybody.

13 years agosuppress makedefs.c diagnostic (trunk only)
nethack.rankin [Thu, 12 Jan 2012 04:01:08 +0000 (04:01 +0000)]
suppress makedefs.c diagnostic (trunk only)

     gcc doesn't complain about using %lx to write out a signed long, but
it does complain about using it to read into a signed long.  Technically
it's right about the latter, so fix this properly rather than just suppress
the message with a cast.

13 years agotid commit just to test postcommit.pl
keni [Wed, 11 Jan 2012 19:54:46 +0000 (19:54 +0000)]
tid commit just to test postcommit.pl

13 years agotest postcommit.pl 1.91 & mac build tid
keni [Wed, 11 Jan 2012 19:47:33 +0000 (19:47 +0000)]
test postcommit.pl 1.91 & mac build tid
Make postcommit try to recognize a directory commit operation.
Use /usr/bin/true instead of touch for a dummy chown/chgrp in Mac OS X.

13 years agoWINCHAIN - a framework allowing multiple processors between core and winport
keni [Wed, 11 Jan 2012 18:23:35 +0000 (18:23 +0000)]
WINCHAIN - a framework allowing multiple processors between core and winport
This is the code I built trying to figure out the large window size issue.
It completely compiles out if not needed (see -DWINCHAIN in hints/macos10.7)
and except for one call during setup has zero overhead if compiled in and
not used.  See window.doc for more info.

Defs for UNUSED parms.  I know this has been controversial, so use is isolated
to the chain code and windows.c (where it shouldn't be intrusive and saves about
50 warnings).

Hints file for 10.7, but the build process still needs to be migrated from
the branch.

13 years agoSuppress an x64 build warning (trunk only)
nethack.allison [Wed, 11 Jan 2012 01:53:44 +0000 (01:53 +0000)]
Suppress an x64 build warning (trunk only)

13 years agoMore clean up of the Windows x64 build (trunk only)
nethack.allison [Wed, 11 Jan 2012 01:45:02 +0000 (01:45 +0000)]
More clean up of the Windows x64 build (trunk only)

13 years agoStart trying to clean up the Windows x64 build (trunk only)
nethack.allison [Wed, 11 Jan 2012 01:15:37 +0000 (01:15 +0000)]
Start trying to clean up the Windows x64 build (trunk only)

13 years agocleanup: outdated SCCS lines
keni [Tue, 10 Jan 2012 17:47:45 +0000 (17:47 +0000)]
cleanup: outdated SCCS lines
Pat noted that I neglected to drop the SCCS lines on the files I've been
committing, so clean up those and any others I could find where the SCCS
line date is out of date.

13 years agofix #H2559+2564 - using 'a' command to discover potion of oil (trunk only)
nethack.rankin [Tue, 10 Jan 2012 08:50:19 +0000 (08:50 +0000)]
fix #H2559+2564 - using 'a' command to discover potion of oil (trunk only)

     From a bug report, if you used the apply command while
not carrying anything applicable except for unknown potion, you would get
"you don't have anything to apply" if that potion wasn't oil but an
inventory selection prompt (with '*' as the default since you wouldn't
have anything considered to be a likely candidate) if that potion was oil,
giving away information.

     This fix makes carrying any unknown potion yield the inventory
selection result, unless oil is already discovered and hero can see that
the unknown potion isn't oil.

13 years agoanother shot at H2344 (large window)
keni [Tue, 10 Jan 2012 02:33:36 +0000 (02:33 +0000)]
another shot at H2344 (large window)
Conditional on H2344_BROKEN which can be disabled at the top of the file if
necessary.  This appears to handle all the cases I was able to reproduce from
Pat's list, with the caveat that msg_window=f fails on very wide windows on
Mac OSX Lion with the default terminal emulation.  When the emulation is set
to ANSI, it works (the failure mode is the output from a simple putchar() loop
across the contents of history called up from ^P wraps at about the middle
of the window).

13 years agoadd param to ini winsys routines
keni [Tue, 10 Jan 2012 01:39:31 +0000 (01:39 +0000)]
add param to ini winsys routines
Provide a mechanism for cleanly moving between tentative window system
selections during startup.  Now, before a second (or later) system is selected,
the first will be notified that it is losing control.  See window.doc.

13 years agosanity check for dlb_fopen
keni [Mon, 9 Jan 2012 22:42:48 +0000 (22:42 +0000)]
sanity check for dlb_fopen
Fail if dlb_fopen is called with a non-read mode.

13 years agodrain life vs drain resisting objects (trunk only)
nethack.rankin [Sun, 8 Jan 2012 01:26:35 +0000 (01:26 +0000)]
drain life vs drain resisting objects (trunk only)

     From the newsgroup:  casting spell of drain life at Stormbringer
(or Excalibur or Staff of Aesculapius) would reduce its enchantment just
like any other weapon.  Drain resistance should protect against that even
when not actively wielded.

13 years agodoc tid (mainly postcommit.pl test)
keni [Sun, 8 Jan 2012 01:11:03 +0000 (01:11 +0000)]
doc tid (mainly postcommit.pl test)
Reference the new install instructions from the current install instructions.

13 years agoMore MS Visual Studio 2010 Express stuff
nethack.allison [Sat, 7 Jan 2012 22:57:39 +0000 (22:57 +0000)]
More MS Visual Studio 2010 Express stuff

13 years agolast bunch - pline warnings while testing postcommit.pl
keni [Wed, 4 Jan 2012 18:52:36 +0000 (18:52 +0000)]
last bunch - pline warnings while testing postcommit.pl

13 years agoanother pile on the trunk
keni [Wed, 4 Jan 2012 18:14:41 +0000 (18:14 +0000)]
another pile on the trunk

13 years agoback to trunk: potion.c
keni [Wed, 4 Jan 2012 18:05:21 +0000 (18:05 +0000)]
back to trunk: potion.c

13 years agopostcommit.pl 1.84 - first branch info test: polyself.c (on the trunk)
keni [Tue, 3 Jan 2012 19:11:34 +0000 (19:11 +0000)]
postcommit.pl 1.84 - first branch info test: polyself.c (on the trunk)

13 years agoNew Year - 2012
nethack.allison [Mon, 2 Jan 2012 14:40:08 +0000 (14:40 +0000)]
New Year - 2012

13 years agopostcommit.pl 1.83: pray.c
keni [Sun, 1 Jan 2012 17:35:48 +0000 (17:35 +0000)]
postcommit.pl 1.83: pray.c
(Getting close to the end.  1.83 cleans up the code and updates the bugs list.)

13 years agoworked once, let's press our luck: botl.c invent.c mkobj.c
keni [Sat, 31 Dec 2011 00:24:26 +0000 (00:24 +0000)]
worked once, let's press our luck: botl.c invent.c mkobj.c

13 years agoagain, looking for that failure condition: pager.c pickup.c
keni [Fri, 30 Dec 2011 23:58:48 +0000 (23:58 +0000)]
again, looking for that failure condition: pager.c pickup.c

13 years agopostcommit.pl 1.82: mthrowu.c music.c
keni [Fri, 30 Dec 2011 23:47:06 +0000 (23:47 +0000)]
postcommit.pl 1.82: mthrowu.c music.c

13 years agonow we need one of those temporary failures so we can see if recovery works,
keni [Fri, 30 Dec 2011 23:14:58 +0000 (23:14 +0000)]
now we need one of those temporary failures so we can see if recovery works,
and that's a crapshoot: mcastu.c mhitu.c

13 years agofirst try tonight: lock.c makemon.c
keni [Fri, 30 Dec 2011 23:10:37 +0000 (23:10 +0000)]
first try tonight: lock.c makemon.c

13 years agolast try for tonight: engrave.c and hack.c
keni [Fri, 30 Dec 2011 04:03:27 +0000 (04:03 +0000)]
last try for tonight: engrave.c and hack.c

13 years agonew hack: and we try dungeon.c and eat.c
keni [Fri, 30 Dec 2011 03:50:15 +0000 (03:50 +0000)]
new hack: and we try dungeon.c and eat.c

13 years agotry another pair: dokick.c dothrow.c
keni [Thu, 29 Dec 2011 23:50:13 +0000 (23:50 +0000)]
try another pair: dokick.c dothrow.c

13 years agocan we commit across directories? src/detect.c and util/makedefs.c
keni [Thu, 29 Dec 2011 23:29:43 +0000 (23:29 +0000)]
can we commit across directories?  src/detect.c and util/makedefs.c

13 years agocan we do two files? artifact.c cmd.c
keni [Thu, 29 Dec 2011 22:46:25 +0000 (22:46 +0000)]
can we do two files? artifact.c cmd.c

13 years agocan we get two in a row? muse.c
keni [Thu, 29 Dec 2011 22:41:56 +0000 (22:41 +0000)]
can we get two in a row?  muse.c

13 years agoand now: bones.c (for postcommit.pl 1.75)
keni [Thu, 29 Dec 2011 22:36:36 +0000 (22:36 +0000)]
and now: bones.c (for postcommit.pl 1.75)

13 years agonext test: dig.c
keni [Thu, 29 Dec 2011 22:28:06 +0000 (22:28 +0000)]
next test: dig.c

13 years agomore debugging: apply.c
keni [Thu, 29 Dec 2011 22:16:49 +0000 (22:16 +0000)]
more debugging: apply.c

13 years agoanother try. spell.c
keni [Thu, 29 Dec 2011 22:01:25 +0000 (22:01 +0000)]
another try.  spell.c

13 years agonext try: do.c (three lines of comment - #1)
keni [Thu, 29 Dec 2011 21:49:27 +0000 (21:49 +0000)]
next try: do.c (three lines of comment - #1)
comment line 2
comment line 3

13 years agothird try: mon.c
keni [Thu, 29 Dec 2011 21:24:15 +0000 (21:24 +0000)]
third try: mon.c

13 years agosecond test file: rumors.c
keni [Thu, 29 Dec 2011 21:14:04 +0000 (21:14 +0000)]
second test file: rumors.c

13 years agomail test / warnings in save.c
keni [Thu, 29 Dec 2011 20:23:00 +0000 (20:23 +0000)]
mail test / warnings in save.c

13 years agoat(1) test#1 / defs for suppressing compiler warnings from pline (etc)
keni [Thu, 29 Dec 2011 20:06:27 +0000 (20:06 +0000)]
at(1) test#1 / defs for suppressing compiler warnings from pline (etc)
First at(1) in postcommit.pl test.  Patch: defs for suppressing compiler
warnings.

13 years agoMakefile construction cleanup
keni [Tue, 27 Dec 2011 00:34:52 +0000 (00:34 +0000)]
Makefile construction cleanup
Update the help text in setup.sh.  When building with a hints file from TOP,
the path to the hints file should start from TOP (instead of "hints/foo").
Make the notes in the generated makefiles consistent as to case.

13 years agoremove duplicate entry
arromdee [Mon, 19 Dec 2011 00:27:17 +0000 (00:27 +0000)]
remove duplicate entry
Since this should just be in 34.4

13 years agoMinor cockatrice fix
arromdee [Sun, 18 Dec 2011 05:16:36 +0000 (05:16 +0000)]
Minor cockatrice fix

PS: Why do we have duplicate fixes__._ files in the branches, since by
definition the same file would have to stay the same in any branch?

13 years agomore getpos() reversal (trunk only)
nethack.rankin [Mon, 12 Dec 2011 22:50:21 +0000 (22:50 +0000)]
more getpos() reversal (trunk only)

     There was a second instance of curs()+flush_screen() that had the
calls swapped 5.5 years ago and is being restored to 3.4.3 state here.

     It turns out that swapping the other instance of those two calls
didn't help with the original problem (^R during getpos() redrew the
screen but left the cursor at the end of the 2nd status line) at all.
Only adding the pline() call after docrt() fixed it.  pline() calls
flush_screen(1) which ultimately puts the cursor back on the hero.  I
still don't understand why curs(WIN_MAP,x,y)+flush_screen(0) leaves it
on the status line instead of at the specified map coordinates.  That
must be a bug in the tty code somewhere.

13 years agogetpos fix (trunk only)
nethack.rankin [Mon, 12 Dec 2011 02:19:19 +0000 (02:19 +0000)]
getpos fix (trunk only)

     This ought to fix the problem excountered by Ken, where the cursor
wasn't at the spot '/y' was reporting on.  This reverses part of a change
from May, 2005.  I still don't understand the original behavior, which
was that docrt() for ^R followed by positioning the cursor at a specific
map coordinate and calling flush_screen() was leaving the cursor at the
end of the second status line.  Reversing flush_screen and curs(WIN_MAP)
made it work for tty but screwed up X11.  It turns out that including
pline("Move cursor to %s:") *also* makes things work as intended, so that
the flush/position hack wasn't necessary once that other change went in
(same 2005 patch, but the cursor hack was implemented first at that time;
once this reversal is in place, commenting out the pline() does bring the
odd behavior for tty back).

13 years agoPut fruit fix in fix list
arromdee [Mon, 12 Dec 2011 02:18:20 +0000 (02:18 +0000)]
Put fruit fix in fix list

13 years agoWizard-mode fruit information should not be conditional on the gods not
arromdee [Mon, 12 Dec 2011 02:13:21 +0000 (02:13 +0000)]
Wizard-mode fruit information should not be conditional on the gods not
being angry.

13 years agoCheck for 100 fruits *after* checking to see if we can reuse a fruit name
arromdee [Mon, 12 Dec 2011 02:07:43 +0000 (02:07 +0000)]
Check for 100 fruits *after* checking to see if we can reuse a fruit name
that never had any fruits created.

13 years agoH2344 fix backout (trunk only)
keni [Sun, 11 Dec 2011 21:58:29 +0000 (21:58 +0000)]
H2344 fix backout (trunk only)
Undo the win/tty/wintty.c bands of the H2344 fix until the fix is fixed.  I
didn't take out the type changes to hopefully avoid putting people through
a full recompile.

13 years agoI haven't been active in the past decade, but here's a small patch. Main
arromdee [Sun, 11 Dec 2011 18:11:29 +0000 (18:11 +0000)]
I haven't been active in the past decade, but here's a small patch.  Main
branch only.  This adds a check when setting a new fruit so that if no fruits
have been created since the last time the option has been set, the current
fruit is overwritten.  Result: the user cannot repeatedly set the fruit
option and overflow the maximum fruit number.

13 years agotty_getlin cleanup (trunk only)
nethack.rankin [Sun, 11 Dec 2011 01:54:56 +0000 (01:54 +0000)]
tty_getlin cleanup (trunk only)

     The presence of conditional code for both UNICODE_WIDEWINPORT and
NEWAUTOCOMP in hooked_tty_getlin() was making it be pretty hard to read.
This simplifies the UNICODE_WIDEWINPORT parts similar to what was done in
topl.c a year or two back.  The NEWAUTOCOMP parts are still cluttered.

     This compiles successfully with UNICODE_WIDEWINPORT enabled but that
configuration is otherwise untested.

13 years agoexpanded #terrain command (trunk only; 2nd try...)
nethack.rankin [Mon, 5 Dec 2011 09:39:19 +0000 (09:39 +0000)]
expanded #terrain command (trunk only; 2nd try...)

     Change the post-3.4.3 extended command "#terrain" so that it can be
used in normal play rather than just in wizard mode.  It's inspired by
a command in 'crawl' that lets you view the bare map without monsters,
objects, and traps so that you can see the floor at locations which have
been covered up by those things.

normal play
      redraw map to show the known portion of it without displaying
   monsters, objects, or traps; after player responds to --More--, the
   map returns to normal.

explore mode
      put up a menu so player can choose between the known portion of
   the map as above or the full map.  If the level isn't fully explored
   then the latter provides information to the player that he hasn't
   earned yet, but the _hero_ doesn't learn anything and after --More--
   the map reverts to what it showed before.  (In other words, unlike
   with magic mapping, the unknown portion doesn't become known.)

wizard mode
      put up a menu so player can choose among four alternatives:  the
   two above, the text representation of the map's internal levl[][].typ
   codes, or a legend explaining those codes.  (Originally, I wanted to
   be able to toggle back and forth between these last two, but looking
   at one and dismissing it, then reissuing #terrain to look at the
   other is much simpler to implement and is good enough.)

13 years agopatch cleanup (trunk only)
nethack.rankin [Mon, 5 Dec 2011 09:36:21 +0000 (09:36 +0000)]
patch cleanup (trunk only)

     My #terrain patch had a typo on the command line and was going
to include doc/fixes35.0 as the log text for a half-dozen files.  I
aborted the commit but most of them had already made it into the cvs
repository.  This reverts those changes so that the entire patch can
be re-comitted with the right log text.  Ugh...

13 years agooops [all of fixes35.0 as log text]
nethack.rankin [Mon, 5 Dec 2011 09:16:07 +0000 (09:16 +0000)]
oops [all of fixes35.0 as log text]

13 years agomimics vs DUNGEON_OVERVIEW (trunk only)
nethack.rankin [Mon, 5 Dec 2011 03:17:36 +0000 (03:17 +0000)]
mimics vs DUNGEON_OVERVIEW (trunk only)

     Noticed while looking into whether I could use DUNGEON_OVERVIEW data
for something useful, it was recording accurate terrain type for locations
covered by mimics who were mimicking furniture (such as stairs or altars).
Hero should remember the fake terrain rather than whatever is actually
underneath the mimic.

     No fixes entry; user-contributed DUNGEON_OVERVIEW is post-3.4.3 code.

13 years agofix H2488 - wide and/or tall screens don't work
keni [Sun, 4 Dec 2011 20:06:00 +0000 (20:06 +0000)]
fix H2488 - wide and/or tall screens don't work
Make windows with more than 255 rows or columns work.  Touches
some very old magic involving the constant 10.

13 years agoWA_VERBOSE
nethack.rankin [Thu, 1 Dec 2011 03:55:14 +0000 (03:55 +0000)]
WA_VERBOSE

     Some old wall display debugging code which gets enabled when
WA_VERBOSE is defined was missing the three terrain types (tree, iron
bars, grave) added way back in 3.3.0.  It's extermely unlikely that
anyone other than Dean might actually ever be impacted by this....

     This compiles with WA_VERBOSE enabled but is otherwise untested.
I haven't bothered with a fixes entry.

13 years agohangup vs u.uinwater again (trunk only)
nethack.rankin [Wed, 30 Nov 2011 18:52:28 +0000 (18:52 +0000)]
hangup vs u.uinwater again (trunk only)

     Redo the fix that prevents hangup from putting hero on top of water
if it occurs during magic mapping or object/gold/trap detection.  Instead
of copying u.uinwater into another field in struct u so that it can be
reset during restore, copy it into a new field in struct iflags and reset
it during save so that no fixup upon restore is needed.

13 years agomapping/detection hangup handling (trunk only)
nethack.rankin [Tue, 29 Nov 2011 03:28:07 +0000 (03:28 +0000)]
mapping/detection hangup handling (trunk only)

     Noticed while looking at the magic mapping code:  u.uinwater is
cleared during mapping and detection so that map updating isn't suppressed
due to underwater vision restrictions, and it was possible for a hangup
save to take place before that state field was reset.  After restore, the
hero would end up standing on water, then fall in on the next turn.  This
saves it in struct `u' rather than in a local variable, so that the stored
value is accessible during restore.

     The u.uburied flag was being ignored, but presumeably it would also
impose severe vision restrictions if it ever gets implemented, so it is
now saved, temporarily cleared, and restored along with u.uinwater during
monster/object/gold/trap detection and magic mapping.

13 years agoautosearch while blind (trunk only)
nethack.rankin [Thu, 24 Nov 2011 00:13:24 +0000 (00:13 +0000)]
autosearch while blind (trunk only)

     From a bug report, he was running blind while wielding scissors--
I mean Excalibur--and stopped for no apparent reason.  The autosearch
capability conferred by that artifact (also by ring of searching, or for
some roles or races once they reach a particular level) had found a secret
door and changed it into a normal door, but since he couldn't see at the
time his map display wasn't updated to show that.  This makes the map show
such things even if blind, and also gives a message that the search found
something.

13 years agoadd EROFS case to lock_file()
keni [Wed, 16 Nov 2011 16:20:45 +0000 (16:20 +0000)]
add EROFS case to lock_file()
From an old email: perhaps this will help users with "run from distro"
issues.

13 years agomore warnings just to test postcommit.pl
keni [Tue, 15 Nov 2011 02:32:26 +0000 (02:32 +0000)]
more warnings just to test postcommit.pl

13 years agowhack some compiler warnings to test updated postcommit.pl
keni [Tue, 15 Nov 2011 02:14:39 +0000 (02:14 +0000)]
whack some compiler warnings to test updated postcommit.pl

13 years agoobj.h documentation typo fix
keni [Thu, 10 Nov 2011 17:20:32 +0000 (17:20 +0000)]
obj.h documentation typo fix

13 years agoshop feedback ("gold piecess") (trunk only)
nethack.rankin [Thu, 27 Oct 2011 02:24:54 +0000 (02:24 +0000)]
shop feedback ("gold piecess") (trunk only)

     From a bug report, dropping and selling a container that had some things owned
by the hero and some already owned by the shop, you could get "You sold
some items inside <a container> for N gold piecess."  Shop handing for
containers has been changed significantly since 3.4.3, but the typo
"pieces" that then optionally gets plural "s" appended was still there.

     While testing the trivial fix, I noticed suboptional feedback in the
prompt about selling.  For a container owned by the shop, it said "items"
even when there was just one hero owned item inside.  Fortunately this
potentinal can of worns only seemed to have one tiny weeny worm in it....

     The revised version of count_buc() that I've had laying around for
a while is also included.

     The fixes entry is for "piecess", not escaped/captured/exterminated
worms, and goes into fixes34.4 despite this patch being labeled "trunk
only".  Separate patch for trunk to follow.

13 years agostill more levitation blocking (trunk only)
nethack.rankin [Sun, 23 Oct 2011 00:37:55 +0000 (00:37 +0000)]
still more levitation blocking (trunk only)

     Removing ring or boots of levitation while stuck in solid rock was
silent as intended, but timeout of potion or spell said "you float gently
to the ground" even though there's no actual movement.

     Using '>' command while in solid rock said "you can't go down here"
without attempting to toggle off controlled levitation.

13 years agorefine blocked levitation/flight (trunk only)
nethack.rankin [Sat, 22 Oct 2011 23:26:17 +0000 (23:26 +0000)]
refine blocked levitation/flight (trunk only)

     Levitation side-effects get skipped if Levitation toggles while it
is blocked, so BFlying (the reason Flying is blocked) could become stale
in some situations.  Enlightment feedback about latent flight capability
was the only thing affected.

13 years agofix #2495 - light vs gremlins (trunk only)
nethack.rankin [Mon, 17 Oct 2011 01:32:23 +0000 (01:32 +0000)]
fix #2495 - light vs gremlins (trunk only)

     From a bug report, flashing yourself
with a camera while in gremlin form blinded as with any other form, but
didn't inflict any damage the way that flashing a monster gremlin does.
This fixes that, and also makes light from wand/scroll/spell that hits
you-as-gremlin or monster gremlins do 1d5 damage too.  It happens even
if the target is already in a lit spot, but doesn't continue afterwards:
simply being in a lit spot doesn't cause any damage, nor does lamp light.

13 years agomac term packaging code (trunk only)
keni [Mon, 17 Oct 2011 01:29:20 +0000 (01:29 +0000)]
mac term packaging code (trunk only)
: Modified Files:
:  sys/unix/hints/macosx.sh sys/unix/hints/macosx10.5
:  win/macosx/NetHackRecover.applescript win/macosx/recover.pl
: Added Files:
:  win/macosx/NetHackGuidebook.applescript
:  win/macosx/NetHackTerm.applescript

13 years agofix #2242 and #2292 - levitation exceptions (trunk only)
nethack.rankin [Sat, 15 Oct 2011 03:00:45 +0000 (03:00 +0000)]
fix #2242 and #2292 - levitation exceptions (trunk only)

     From a bug report.  The first report complained about levitation
allowing you to move through water on the Plane of Water, something that's
come up in the newsgroup lots of times (mostly about how levitation is
the best way to get around, only occasionally wondering why it works:
water walking doesn't work there because there's no surface, so where are
you levitating such that you're kept dry?)  The second report complained
about being told you were floating up if you put on a ring of levitation
while stuck inside a wall (perhaps after being stranded when polymorph
into xorn form ended).

     This implements intrinsic blocking for levitation and also for
flying.  Being inside solid rock (or closed door) anywhere and being in
water on the Plane of Water are the things that do it for levitation;
those two and levitating are what do it for flying.  Entering such
terrain turns off ability to float/fly, and leaving there turns it back
on; starting levitation blocks flight, ending it unblocks (levitation
has always overridden flying's ability to reach the floor).  Being able
to phase through rock doesn't prevent levitation and flight from being
blocked while in rock; you aren't floating or flying in that situation.

13 years agomore vault guard (trunk only)
nethack.rankin [Thu, 13 Oct 2011 00:31:13 +0000 (00:31 +0000)]
more vault guard (trunk only)

     Fix several obscure bugs that can happen when a guard leads someone
out of a vault:
1) non-pit traps created in the temporary corridor would persist inside
   solid rock after the corridor was removed (pits dug by the hero were
   explicitly removed but several other trap types are possible);
2) lighting the corridor with scroll/wand/spell left the affected spots
   flagged as lit after they reverted to rock; tunneling through that
   area, either by digging or by teleporting back to the vault and having
   another guard appear, unearthed lit corridor there;
3) if you became encased in solid rock because you were in the temporary
   corridor when it was removed (which will happen if the guard is killed
   while you're in his corridor), you were only told so if you saw part of
   it revert to rock; when blind, you simply found yourself unable to move;
4) dragging an iron ball in the temporary corridor could result in part
   of that corridor becoming permanent if the guard was killed; in 3.4.3,
   it would only occur if the cause of death took away all the guard's
   hit points (which happens for most but not all deaths); in development
   code after my recent patch, that would be every cause of death.
#4 could also yield "dmonsfree: <N+1> removed doesn't match <N> pending"
warning in 3.4.3 when the fmon list was scanned and a guard at <0,0> with
no hit points was found but hadn't passed through to the end of mondead()
and m_detach().  The previous patch fixed that, I think/hope.  Most guard
deaths won't trigger that; grddead() moves the guard to <0,0> but then
removes the temp corridor on its second try, returns true, and mondead()
finishes normally.

13 years agofollowup tid (trunk only)
keni [Tue, 11 Oct 2011 23:55:38 +0000 (23:55 +0000)]
followup tid (trunk only)
Missing dependency.  Thanks Pat.

13 years agodisplay version and build info at startup (trunk only)
keni [Tue, 11 Oct 2011 02:37:31 +0000 (02:37 +0000)]
display version and build info at startup (trunk only)
Tested on the unix port; I've updated as many other ports as I can figure
out but they're not tested.  See window.doc for info on the changed banner
lines.  Also adds the ability to override the generic "Unix" port - used now to get
"MacOSX" into the version line instead of "Unix" (so we don't scare people who don't
know what's going on).

13 years agovault guard bug: dropping minvent at <0,0> (trunk only)
nethack.rankin [Sun, 9 Oct 2011 02:13:01 +0000 (02:13 +0000)]
vault guard bug: dropping minvent at <0,0> (trunk only)

     From the newsgroup:  after killing a vault guard on a level where
every object had been removed or was held by the hero, object detection
gave feedback about finding something but was unable to show anything.
It was finding the dead guard's inventory at <0,0>, a part of the map
which never gets shown.  A dying guard is sent to that location instead
of being killed and deleted, because the data for his temporary corridor
to/from the vault is kept in the egd structure attached to him.  That's
somewhat obscure but works; dying guards just need to drop inventory
before being transfered there rather than after.

     Depending upon how they're killed, it's possible that the umpteen
places in the code that loop over fmon might have been processing them
as if still in play.  This sets their mhp to 0 so such loops will ignore
them, and teaches dmonsfree() not to release them.  Once the temporary
corridor has been removed, their isgd flag is cleared and they become
ordinary dead monsters and get deleted from the fmon list the next time
it's purged.

     This also lets you throw gold to/at the guard when he tells you to
drop it.  He already would catch it, but now he won't treat the throw as
an attack.  Any gold he carries will eventually disappear when he does,
so dropping it remains a better option for the player.

13 years agosetup.sh - add how-to-run examples
keni [Wed, 5 Oct 2011 16:02:51 +0000 (16:02 +0000)]
setup.sh - add how-to-run examples

13 years agodungeon ceiling (trunk only)
nethack.rankin [Tue, 4 Oct 2011 01:13:59 +0000 (01:13 +0000)]
dungeon ceiling (trunk only)

     The ceiling on the Plane of Water is always "water above", not "sky"
when inside air bubbles and "water's surface" when outside.  Also, support
throwing things upwards on the planes of air and water and when underwater
instead of silently dropping the missile in such cases.

     This is mainly groundwork for a tangential bit of a forthcoming
levitation fix.

13 years agomore wishing assistance (trunk only)
nethack.rankin [Mon, 3 Oct 2011 01:16:05 +0000 (01:16 +0000)]
more wishing assistance (trunk only)

     It's possible to ask for help on the first wish attempt, even though
the prompt hasn't been adjusted to mention that yet, so the one message
which is composed dynamically needs to have its phrasing tweaked a bit
more if the user happens to do that.

     Also, allow help to be requested even when the cmdassist option is
toggled off.  Now that option just controls whether the prompt string is
augmented for retry attempts.