]> granicus.if.org Git - nethack/log
nethack
7 years agomuse vs wand of teleportation
PatR [Tue, 12 Sep 2017 01:58:48 +0000 (18:58 -0700)]
muse vs wand of teleportation

Reported directly to devteam, case WAN_TELEPORTATION in use_offensive()
is never used.  Disable it, although this also adds other disabled code
which would make it become used if enabled.

7 years agoonscary() vs "Elbereth"
PatR [Tue, 12 Sep 2017 01:47:26 +0000 (18:47 -0700)]
onscary() vs "Elbereth"

When checking whether hero is on a protected spot, don't check for
engraved "Elbereth" unless/until other conditions have been exhausted.

7 years agoquest artifact followup
PatR [Mon, 11 Sep 2017 23:22:14 +0000 (16:22 -0700)]
quest artifact followup

Fix a typo/thinko that ended up being magnified by copy+paste.

I did test having the artifact be carried by a monster, but it was the
nemesis who accompanied me from the level above when I level teleported
back to his lair.  He must have ended up as first monster in fmon chain
when he was placed on the level.

7 years agofix #HH5887 - Dark One / Eye message bug
PatR [Mon, 11 Sep 2017 22:59:50 +0000 (15:59 -0700)]
fix #HH5887 - Dark One / Eye message bug

Some roles' quest message when returning the nemesis lair refer to
sensing the presence/aura/whatever of the quest artifact, but it might
not be there anymore.  In reported case, the nemesis had picked it up
and later fled up the stairs to another level.  Other situations are
possible; it's feasible for the hero to already have it.  So provide
an alternate message, and some extra code to decide whether to use it.

Other anomalous messages, such as looking down on the dead body of a
nemesis who didn't leave a corpse, can still occur.

7 years agooption warnings
PatR [Sun, 10 Sep 2017 23:04:37 +0000 (16:04 -0700)]
option warnings

Fix a couple of warnings in options.c, and simplify feature_alert_opts()
in the process.

options.c:1126:30: warning: format string is not a string literal
      (potentially insecure) [-Wformat-security]
            config_error_add(buf);
                             ^~~
options.c:1667:9: warning: unused variable 'i' [-Wunused-variable]
    int i, c = NO_COLOR, a = ATR_NONE;
        ^

There are still a couple of warnings in files.c, but fixing them will
impinge open potential reversal of the CONFIG_ERROR_SECURE patch so
I've left them alone for the time being.  The second one is because
VA_START() and/or VA_INIT() do more than just declare stuff; C99 doesn't
care, but for C90 (or pre-ANSI) the local variable should be declared
before them.

files.c:2816:12: warning: address of array 'buf' will always evaluate to
      'true' [-Wpointer-bool-conversion]
          (buf && buf[0]) ? buf : "Unknown error");
           ^~~ ~~
files.c:2799:10: warning: ISO C90 forbids mixing declarations and code
      [-Wdeclaration-after-statement]
    char buf[BUFSZ];
         ^

7 years agoNo secure config errors in linux hints file
Pasi Kallinen [Sun, 10 Sep 2017 18:30:50 +0000 (21:30 +0300)]
No secure config errors in linux hints file

The linux hints file is for a single-user build, no need for this.

7 years agoSecure config errors
Pasi Kallinen [Sun, 10 Sep 2017 18:05:45 +0000 (21:05 +0300)]
Secure config errors

If user can make NETHACKOPTIONS point to a file, that user could then
get the file contents via the extended config file error reporting.
Add CONFIG_ERROR_SECURE compile-time option to make that case output
only the first error, no line number or error context.

7 years agoBand-Aid (tm) for #H5091 - old passive attack
PatR [Sat, 9 Sep 2017 23:51:38 +0000 (16:51 -0700)]
Band-Aid (tm) for #H5091 - old passive attack

Change the wording slightly if the hero simultaneously (in theory)
reverts to normal form and splahes acid on his/her attacker.  Giving
the passive counterattack message first would be better, but several
types of counterattacks need to know in advance whether the hero has
reverted, producing a chicken-vs-egg seqeuncing situation.

I also took out 'register' directives from a bunch of declarations
since they'd been pretty much applied blindly rather than in
circumstances where someone evaluated the situation and decided that
they might matter.

7 years agoformatting bit
PatR [Sat, 9 Sep 2017 23:32:30 +0000 (16:32 -0700)]
formatting bit

The formatting bit actually warranted a cast.

7 years agofix #H6015 - 'crash' on NAO
PatR [Sat, 9 Sep 2017 23:21:22 +0000 (16:21 -0700)]
fix #H6015 - 'crash' on NAO

Reported for nethack.alt.org where impossible events in to-be-3.6.1
trigger a panic instead of just a warning, being polymorphed into a
vampire and draining something to 0 HP (rather than killing it with
the bite attack) didn't properly kill off the victim unless it was
also being drained from level 0 to level -1, resulting in impossible
"dmonsfree: 1 removed doesn't match 0 pending".  If the hero got
another move before dead monsters were purged, applying a stethscope
to the victim could trigger an actual crash rather than an impossible
escalated to a panic.  Other actions such as attacking again probably
could too.

A followup included a diagnosis and one-line patch.  I expanded the
adjacent comment when manually putting the patch into place.

7 years agoLast of the config error handling
Pasi Kallinen [Sat, 9 Sep 2017 15:10:15 +0000 (18:10 +0300)]
Last of the config error handling

7 years agoEven more config error handling
Pasi Kallinen [Sat, 9 Sep 2017 14:41:08 +0000 (17:41 +0300)]
Even more config error handling

7 years agoMore options parse return values
Pasi Kallinen [Sat, 9 Sep 2017 11:03:28 +0000 (14:03 +0300)]
More options parse return values

7 years agoHandle windowtype and CHOOSE config errors
Pasi Kallinen [Sat, 9 Sep 2017 10:50:34 +0000 (13:50 +0300)]
Handle windowtype and CHOOSE config errors

7 years agoShow error on unknown line
Pasi Kallinen [Sat, 9 Sep 2017 10:25:46 +0000 (13:25 +0300)]
Show error on unknown line

7 years agoImprove config file error reporting
Pasi Kallinen [Sat, 9 Sep 2017 10:04:03 +0000 (13:04 +0300)]
Improve config file error reporting

Show the original line from the config file, followed by the line number and
a specific error message. Also show all errors from the config file before
waiting for key press.

7 years agoImprovements to build.bat scripts used to build Windows builds. Remove CRT Secure...
Bart House [Mon, 4 Sep 2017 20:41:07 +0000 (13:41 -0700)]
Improvements to build.bat scripts used to build Windows builds. Remove CRT Secure warnings.

7 years agodebug tweak
PatR [Mon, 4 Sep 2017 22:19:37 +0000 (15:19 -0700)]
debug tweak

Theoretically we still support implementations which don't have %p.
Even if we didn't, it requires a 'void *' argument rather than an
arbitrary pointer, so casts would have been needed.

7 years agoFix build errors with Visual Studio 2017 using latest SDK. We have yet another global...
Bart House [Sun, 3 Sep 2017 04:12:28 +0000 (21:12 -0700)]
Fix build errors with Visual Studio 2017 using latest SDK. We have yet another global namespace collision between window headers and nethack headers. This time it is the macro Protection that is defined before it is used in a function prototype in the windows headers.

7 years agoAdditional changes needed to support Visual Studio 2017.
Bart House [Sun, 3 Sep 2017 04:10:16 +0000 (21:10 -0700)]
Additional changes needed to support Visual Studio 2017.

7 years agoUpgrade to VS2017 and newer SDK.
Bart House [Sun, 3 Sep 2017 03:05:56 +0000 (20:05 -0700)]
Upgrade to VS2017 and newer SDK.

7 years agoFix line endings (CRLF and extra space).
Bart House [Sun, 3 Sep 2017 02:52:17 +0000 (19:52 -0700)]
Fix line endings (CRLF and extra space).

7 years agoAdding vs2015 solution file to starting set of files.
Bart House [Sat, 2 Sep 2017 23:33:44 +0000 (16:33 -0700)]
Adding vs2015 solution file to starting set of files.

7 years agoCreate initial vs2017 files from vs2015 files.
Bart House [Sat, 2 Sep 2017 23:18:37 +0000 (16:18 -0700)]
Create initial vs2017 files from vs2015 files.

7 years agoFix crash that occurs when closing application window while invetory is displayed.
Bart House [Sat, 2 Sep 2017 21:12:32 +0000 (14:12 -0700)]
Fix crash that occurs when closing application window while invetory is displayed.

7 years agoFixed compiler warhing of casting int to pointer.
Bart House [Sat, 2 Sep 2017 19:09:18 +0000 (12:09 -0700)]
Fixed compiler warhing of casting int to pointer.

7 years agoFixed compiler warning using pointer as UINT.
Bart House [Sat, 2 Sep 2017 19:08:44 +0000 (12:08 -0700)]
Fixed compiler warning using pointer as UINT.

7 years agoFix compiler warning where we cast 32bit value to pointer.
Bart House [Sat, 2 Sep 2017 18:48:32 +0000 (11:48 -0700)]
Fix compiler warning where we cast 32bit value to pointer.

7 years agoFixed coding error. strlen() returns size_t causing a size_t sized value pushed onto...
Bart House [Sat, 2 Sep 2017 18:29:23 +0000 (11:29 -0700)]
Fixed coding error. strlen() returns size_t causing a size_t sized value pushed onto stack instead of long. On x64 builds, size_t != long. Caught via compiler warning in x64 build.

7 years agoUse %p for formatted output of pointers (needed to support x86 and x64 cleanly).
Bart House [Sat, 2 Sep 2017 18:21:07 +0000 (11:21 -0700)]
Use %p for formatted output of pointers (needed to support x86 and x64 cleanly).

7 years agoRemoving unused function which also contained coding error (calling putc instead...
Bart House [Sat, 2 Sep 2017 18:06:10 +0000 (11:06 -0700)]
Removing unused function which also contained coding error (calling putc instead of fputc).

7 years agoTurning off CRT secure warnings.
Bart House [Sat, 2 Sep 2017 18:05:20 +0000 (11:05 -0700)]
Turning off CRT secure warnings.

7 years agoFix proto decl
Pasi Kallinen [Sat, 2 Sep 2017 15:51:45 +0000 (18:51 +0300)]
Fix proto decl

7 years agoRemove unused variable
Pasi Kallinen [Sat, 2 Sep 2017 12:22:42 +0000 (15:22 +0300)]
Remove unused variable

7 years agoAdd optional config file sections, selected with CHOOSE
Pasi Kallinen [Sat, 2 Sep 2017 09:04:27 +0000 (12:04 +0300)]
Add optional config file sections, selected with CHOOSE

Allows the user to define arbitrarily named optional sections
in the config file, and select which of those sections are used.

For example:

  OPTIONS=color
  CHOOSE=char A,char B

  [char A]
  OPTIONS=role:arc,race:dwa,align:law,gender:fem

  [char B]
  OPTIONS=role:wiz,race:elf,align:cha,gender:mal

7 years agoHandle the case where we continue after locking a nonexistent file
Alex Smith [Fri, 1 Sep 2017 17:49:43 +0000 (18:49 +0100)]
Handle the case where we continue after locking a nonexistent file

The previous version of this would lead to big warnings and
impossibles. This doesn't seem like a useful case, but it's still
better to have better warning messages just in case it does
happen.

7 years agoMerge branch 'NetHack-3.6.0' of https://rodney.nethack.org:20040/git/NHsource into...
Alex Smith [Fri, 1 Sep 2017 16:44:31 +0000 (17:44 +0100)]
Merge branch 'NetHack-3.6.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.0

7 years agoFix error behaviour when perm is missing
Alex Smith [Fri, 1 Sep 2017 16:43:04 +0000 (17:43 +0100)]
Fix error behaviour when perm is missing

The previous behaviour was to mention the missing file, but then to
try and fail to lock the nonexistent file 10 times, which rather
obscured the original cause of the error as it took up so much more
room on the screen.

This patch also changes the error message. Failure to lock a
nonexistent file is almost always the result of a mistake during
the install process (e.g. running from the wrong directory, or
running without an install). We should give the user a hint about
that.

7 years agoDefault menucolors for Windows
Pasi Kallinen [Fri, 1 Sep 2017 09:45:28 +0000 (12:45 +0300)]
Default menucolors for Windows

7 years agoTypofix
Pasi Kallinen [Fri, 1 Sep 2017 09:20:21 +0000 (12:20 +0300)]
Typofix

7 years agoImprovements to Visual Studio 2015 build.
Bart House [Fri, 1 Sep 2017 04:29:12 +0000 (21:29 -0700)]
Improvements to Visual Studio 2015 build.

7 years agoImprovements to Visual Studio 2015 build.
Bart House [Thu, 31 Aug 2017 02:30:52 +0000 (19:30 -0700)]
Improvements to Visual Studio 2015 build.

7 years agoVisual Studio 2015 build improvements.
Bart House [Wed, 30 Aug 2017 05:27:57 +0000 (22:27 -0700)]
Visual Studio 2015 build improvements.

7 years agoImprove Visual Studio 2015 build.
Bart House [Wed, 30 Aug 2017 04:26:12 +0000 (21:26 -0700)]
Improve Visual Studio 2015 build.

7 years agoVisual Studio 2015 build improvements.
Bart House [Tue, 29 Aug 2017 05:32:16 +0000 (22:32 -0700)]
Visual Studio 2015 build improvements.

7 years agoImprovements to vs2015 build.
Bart House [Mon, 28 Aug 2017 00:56:11 +0000 (17:56 -0700)]
Improvements to vs2015 build.

7 years agoFix pile display when picking up items while invisible
Pasi Kallinen [Fri, 1 Sep 2017 06:43:36 +0000 (09:43 +0300)]
Fix pile display when picking up items while invisible

Reported directly to the devteam. Set hilite_pile on, become
invisible, pick up all but one item from a pile on the floor,
the pile symbol was still there afterwards.

This is yet another case of evil hack, because the gbuf doesn't
distinguish between object piles and single items, see
commit 854fe40609

7 years agorogue starting invent: +9 lock pick
PatR [Mon, 28 Aug 2017 22:56:16 +0000 (15:56 -0700)]
rogue starting invent: +9 lock pick

Reported directly to devteam, the starting inventory for rogue chars
specified that their lock pick be +9, but the 'spe' enchantment field
is meaningless for that type of item.  A followup report indicated that
it had been this way since at least the 3.0 era.

It might have been a typo, since 9 and 0 are next to each other.  Or
perhaps before lock picks were introduced, rogues started with a
skeleton key.  That assumes spe==9 meant skeleton key back in the days
when each key and lock had a designated shape and a non-skeleton key
had to match the lock's shape to work.  I don't know whether that was
how skeleton keys were flagged and don't care eough to delve deeper....

7 years agoAdd database entry for "martial arts" the skill
Pasi Kallinen [Mon, 28 Aug 2017 17:38:25 +0000 (20:38 +0300)]
Add database entry for "martial arts" the skill

7 years agoMinor Guidebook tweakage
Pasi Kallinen [Thu, 24 Aug 2017 19:59:46 +0000 (22:59 +0300)]
Minor Guidebook tweakage

7 years agoTypofix in Guidebook.tex
Pasi Kallinen [Thu, 24 Aug 2017 07:34:37 +0000 (10:34 +0300)]
Typofix in Guidebook.tex

7 years agoExplain "no travel path" in Guidebook
Pasi Kallinen [Thu, 24 Aug 2017 07:33:23 +0000 (10:33 +0300)]
Explain "no travel path" in Guidebook

7 years agoFix reversed stinking cloud targeting logic
Pasi Kallinen [Thu, 24 Aug 2017 06:04:50 +0000 (09:04 +0300)]
Fix reversed stinking cloud targeting logic

...and give indication when blessed scroll of fire was targeted
at illegal position.

7 years agoMake blessed scroll of fire useful
Pasi Kallinen [Wed, 23 Aug 2017 20:35:49 +0000 (23:35 +0300)]
Make blessed scroll of fire useful

Blessed scroll of fire allows to choose the explosion location like
scroll of stinking cloud does. This should make it somewhat useful
in the early game.

7 years agocrushed to death by a gas spore's explosion
PatR [Mon, 21 Aug 2017 22:50:36 +0000 (15:50 -0700)]
crushed to death by a gas spore's explosion

From the newsgroup, remarking on an usual cause of death seen at NAO.
Surviving a gas spore's explosion (via hit points, not from life-saving)
left "gas spore's explosion" as stale killer.name.  Being killed by
opening a drawbridge (but not by closing or breaking one) only assigned
killer.name if it didn't already have a value, so the stale reason got
used:  crushed to death by a gas spore's explosion.

This fixes it two ways:  clear the stale value after surviving the
explosion, and assign a specific reason when opening the drawbridge.

This also removes stale reason for death set up by various drawbridge
activity.  For the usual case, the hero only survives by life-saving
which does its own clearing of killer.name.  But there might have been
cases where it was being set for the hero when operating on a monster,
so no life-saving involved.  The drawbridge code is not the easiest
code to navigate....

7 years agoBONES_POOLS fix and bonesid fix
PatR [Mon, 21 Aug 2017 09:50:26 +0000 (02:50 -0700)]
BONES_POOLS fix and bonesid fix

The BONES_POOLS implementation added an extra dot to the bones file
name (only when enabled) which would be a problem on some filesystems.
This changes the name from "bonD0.15.3" to "bon3D0.15" which avoids
the second dot and also fits within 8.3 characters.  To enforce that,
the maximum value for BONES_POOLS is now 10 (yielding single-digit pool
numbers 0 through 9).

BONES_POOLS==1 will omit the pool number (that's not a change, just a
reminder), yielding "bonD0.15" and so on.  Right now, BONES_POOLS==0
is equivalent to BONES_POOLS=1, but it could be changed someday to
mean that bones files shouldn't be used if we decide to support that.

The pool number as a suffix was being included in content validation,
so it wasn't possible to move "bonD0.15.3" to pool 2 by renaming it to
"bonD0.15.2".  I'm not sure whether that was intentional, but it seems
overly draconian.  "bon3D0.15" can be renamed to "bon2D0.15" and then
be loaded by a game assigned to pool 2.  Also, pre-pool bones can be
retained by renaming to any valid pool and should still work.

The three letter filecode for quest bones has made the bonesid be
broken since 3.3.0 introduced it (the three letter code, not bones-id).
"QArc.2" for level 2 of the Archeologist quest was being written into
the bones file as "rc.2", but worked as intended because validation
when loading bones had the same mistake.  This fixes it to use "QArc.2"
when saving and accept either "QArc.2" or "rc.2" when loading, so 3.6.0
bones files (and existing to-be-3.6.1 bones) will continue to work.

7 years agoTypofix
Pasi Kallinen [Mon, 21 Aug 2017 09:00:08 +0000 (12:00 +0300)]
Typofix

7 years agoUpdate NetHackW.exe version details
Pasi Kallinen [Sun, 20 Aug 2017 20:44:35 +0000 (23:44 +0300)]
Update NetHackW.exe version details

7 years agoAdd sysconf BONES_POOLS to allow more bones-files per level
Pasi Kallinen [Sun, 20 Aug 2017 20:04:55 +0000 (23:04 +0300)]
Add sysconf BONES_POOLS to allow more bones-files per level

Reduce the chance of a player playing on a public server encountering
their own bones, by implementing separate bones pools. The pool a player
belongs to is determined at game start, and only bones in that pool
are used. The sysconf BONES_POOLS allows the sysadmin to define how
many pools there are.

7 years agoSilence some warnings
Pasi Kallinen [Sat, 19 Aug 2017 16:23:47 +0000 (19:23 +0300)]
Silence some warnings

7 years agoAdd stuff for compiling with Visual Studio 2015
Pasi Kallinen [Sat, 19 Aug 2017 12:21:04 +0000 (15:21 +0300)]
Add stuff for compiling with Visual Studio 2015

7 years agoEnable dumplog for winnt
Pasi Kallinen [Sat, 19 Aug 2017 11:29:18 +0000 (14:29 +0300)]
Enable dumplog for winnt

7 years agoRename terminate to nh_terminate so VS2015 can compile
Pasi Kallinen [Sat, 19 Aug 2017 11:10:29 +0000 (14:10 +0300)]
Rename terminate to nh_terminate so VS2015 can compile

7 years agoFix thinko on preprocessor conditional
Pasi Kallinen [Sat, 19 Aug 2017 10:47:41 +0000 (13:47 +0300)]
Fix thinko on preprocessor conditional

7 years agoSilence another warning
Pasi Kallinen [Sat, 19 Aug 2017 10:44:08 +0000 (13:44 +0300)]
Silence another warning

7 years agoFix syntax error
Pasi Kallinen [Sat, 19 Aug 2017 10:40:47 +0000 (13:40 +0300)]
Fix syntax error

7 years agoSilence some warnings
Pasi Kallinen [Sat, 19 Aug 2017 10:38:38 +0000 (13:38 +0300)]
Silence some warnings

7 years agoFix minor diffs between Guidebook.mn and .tex
Pasi Kallinen [Thu, 17 Aug 2017 20:30:36 +0000 (23:30 +0300)]
Fix minor diffs between Guidebook.mn and .tex

7 years agoRemove erroneous bolding from Guidebook.mn
Pasi Kallinen [Thu, 17 Aug 2017 20:18:41 +0000 (23:18 +0300)]
Remove erroneous bolding from Guidebook.mn

7 years agoadd missing fixes entries for curing blindness
PatR [Wed, 16 Aug 2017 22:08:36 +0000 (15:08 -0700)]
add missing fixes entries for curing blindness

7 years agonurse corpse vs blindness
PatR [Mon, 14 Aug 2017 23:42:44 +0000 (16:42 -0700)]
nurse corpse vs blindness

The carrot patch made monsters (carnivorous pets, g.cubes) who eat
nurse corpses have temporary blindness be cured.  Do the same for the
hero.

7 years agohealing vapor vs blindness
PatR [Mon, 14 Aug 2017 23:36:37 +0000 (16:36 -0700)]
healing vapor vs blindness

Drinking any potion full healing or extra healing or non-cursed potion
of healing cures blindness in addition to restoring lost hit points.
Now breathing vapor from any potion of full healing or non-cursed
potion of extra healing or blessed potion of healing will also do so.

7 years agofix #H5853 - carrots don't cure blind pets
PatR [Mon, 14 Aug 2017 23:30:23 +0000 (16:30 -0700)]
fix #H5853 - carrots don't cure blind pets

Report was for a blinded horse which ate a carrot but remained blind.
This fixes that, and also lets blinded carnivorous pets eat carrots.
Gelatinous cubes now handle carrots too, but since they lack eyses
there won't be any noticeable effect for them.

7 years agofix files.c part of #H5778 - file descriptor leaks
PatR [Sat, 12 Aug 2017 23:44:39 +0000 (16:44 -0700)]
fix files.c part of #H5778 - file descriptor leaks

Fix the SELF_RECOVER part of files.c which was actually in slightly
worse shape than previously fixed recover.c itself.

I think the HOLD_LOCKFILE_OPEN edition of nhclose() is the only
remaining file descriptor leak from the original #H5778 report.

The revised code compiles when SELF_RECOVER is defined, but I didn't
actually force a recovery to fully test it.

This patch includes a couple of reformatting and/or reorganization
bits in addition to the fd leak fix.

7 years agograppling with water
PatR [Wed, 9 Aug 2017 01:58:25 +0000 (18:58 -0700)]
grappling with water

Reported directly to devteam:  if applying a grappling hook towards
a target past some water ended up pulling the hero toward the target,
hero would drown without any chance of crawling out of the water.
It used hurtle() to move, and hurtle assumed levitation so didn't
check for entering pools of water except on the Plane of Water.

7 years agorereformat winprocs.h
PatR [Mon, 7 Aug 2017 21:27:15 +0000 (14:27 -0700)]
rereformat winprocs.h

Overriding clang-format was justified, but the result was too wide.
Make the lines less that 80 characters.

Also, WC_PERM_INVENT and WC_PLAYER_SELECTION had comments cloned from
the preceding line.

7 years agoUnify strength string
Pasi Kallinen [Sun, 6 Aug 2017 19:56:07 +0000 (22:56 +0300)]
Unify strength string

7 years agoDemangle clang formatted code
Pasi Kallinen [Sun, 6 Aug 2017 17:27:48 +0000 (20:27 +0300)]
Demangle clang formatted code

7 years agoAdd whatis_moveskip option to change fast-moving cursor
Pasi Kallinen [Sun, 6 Aug 2017 12:41:31 +0000 (15:41 +0300)]
Add whatis_moveskip option to change fast-moving cursor

Previously the "fast-moving" when getting a target location
was always by 8 units. If this option is on, fast-moving
will instead skip the same map glyphs. This should be much more
useful for blind players.

7 years agofix brace mismatch in winami.c
PatR [Sun, 6 Aug 2017 00:58:20 +0000 (17:58 -0700)]
fix brace mismatch in winami.c

Reported directly to devteam, so no #H number.  Conditional code in
amii_get_ext_cmd() included an unmatched '{', which would break
compilation (at least if EXTMENU was enabled) and also resulted in
the remainder of winami.c being mis-formatted (the functions there
were treated as being inside a block rather than at file level).

This is completely untested.

There's some code suppressed via '#if 0' with a comment "fix for PL2".
We haven't used the patch-level nomenclature since version 3.0!

7 years agofix part of #H5778 - file descriptor leaks
PatR [Sun, 6 Aug 2017 00:29:24 +0000 (17:29 -0700)]
fix part of #H5778 - file descriptor leaks

Handle the part of #H5778 in sys/atari/tos.c.

The part in util/recover.c has already been fixed; the part in
src/files.c still needs to be fixed.

7 years agoThrone room's throne is occupied by a king
Pasi Kallinen [Fri, 4 Aug 2017 20:15:30 +0000 (23:15 +0300)]
Throne room's throne is occupied by a king

Based on a patch by Leon Arnott

7 years agoUsing a cursed tin whistle in a vault summons the guard
Pasi Kallinen [Fri, 4 Aug 2017 19:41:26 +0000 (22:41 +0300)]
Using a cursed tin whistle in a vault summons the guard

...since guards respond to shrill whistles.
Based on a patch by Leon Arnott.

7 years agoShow current timeouts in #wizintrinsic
Pasi Kallinen [Fri, 4 Aug 2017 18:41:04 +0000 (21:41 +0300)]
Show current timeouts in #wizintrinsic

7 years agoUSE_OLDARGS update (3 of 2 :-)
PatR [Thu, 3 Aug 2017 23:31:55 +0000 (16:31 -0700)]
USE_OLDARGS update (3 of 2 :-)

Handle the few variadic calls in pline.c a better way.

7 years agoUSE_OLDARGS update (2 of 2)
PatR [Thu, 3 Aug 2017 01:56:54 +0000 (18:56 -0700)]
USE_OLDARGS update (2 of 2)

Files modified:
include/extern.h
src/pline.c, priest.c, potion.c, mkobj.c

A bunch of calls to pline() in pline.c started triggering warnings
either as-is or possibly after the changes to tradstdc.h.  Fixing
them in place would include intrusive VA_PASSx() like in lev_main.c.
Moving them to other files is much simpler (and they didn't
particularly belong in pline.c in the first place, although I didn't
actually find any better place for them....).

The probing/stethoscope feedback went to priest.c, where there's a
comment stating that it should move to wherever englightenment ends
up once that is moved out of its completely inappropriate current
home in cmd.c.  (Holdover from when ^X was wizard-mode only but even
the other wizard mode commands don't really belong with the command
processing code.)

7 years agoUSE_OLDARGS update (1 of 2)
PatR [Thu, 3 Aug 2017 01:23:42 +0000 (18:23 -0700)]
USE_OLDARGS update (1 of 2)

Files modified:
    include/tradstdc.h, sp_lev.h, system.h
    util/lev_main.c

Silence a bunch of warnings generated by recent gcc which weren't there
with whatever version I had when 3.6.0 was being readied for release.
For lev_main, there were two basic types:  not enough arguments in calls
to lc_pline, lc_warning, and lc_error (since we weren't passing dummy
arguments as is done for add_opvars), and conversion from 'int' or
narrower to 'char *' (from -Wint-to-pointer-cast, which either wasn't
there yet in the older gcc, or wasn't included in -Wall back then).
[Note that for any configuration decrepit enough to actually need
USE_OLDARGS, such conversions will either work fine or else nethack
simply won't be viable.]

src/pline.c generates a bunch of warnings (for USE_OLDARGS).  The fix
for that will be (2 of 2).

To test, instead of mucking about with CFLAGS or sys/unix/hints, I've
been temporarily adding unconditional
|#undef USE_STDARG
|#undef USE_VARARGS
|#define USE_OLDARGS
to the end of config1.h and then doing my normal build--which is why
-Wall (or possibly -W) is drawing -Wint-to-pointer-cast warnings.

7 years agoFix couple static code analyzer warnings
Pasi Kallinen [Wed, 2 Aug 2017 16:48:44 +0000 (19:48 +0300)]
Fix couple static code analyzer warnings

7 years agoAdd way to cycle through valid locations for polearm or jump target
Pasi Kallinen [Mon, 31 Jul 2017 16:10:26 +0000 (19:10 +0300)]
Add way to cycle through valid locations for polearm or jump target

7 years agoAdd whatis_filter option to filter eligible map locations for travel
Pasi Kallinen [Mon, 31 Jul 2017 13:58:23 +0000 (16:58 +0300)]
Add whatis_filter option to filter eligible map locations for travel

Compound option whatis_filter, filters the eligible map locations
when getting a cursor location for targeting. Accepts 'n' (none),
'v' (map locations in view), or 'a' (map locations in the same area,
eg. room or corridor).

7 years agofix misplaced #if in sys/msdos/pckeys.c
PatR [Mon, 31 Jul 2017 01:43:47 +0000 (18:43 -0700)]
fix misplaced #if in sys/msdos/pckeys.c

Reported directly to devteam, so no #H number.  If SIMULATE_CURSOR
isn't defined, there would be no switch statement to attach the
subsequent cases to.

The suggested fix is obviously correct, but untested....

7 years agofix #H5781 - missing fprintf args in wc_trace.c
PatR [Mon, 31 Jul 2017 01:33:28 +0000 (18:33 -0700)]
fix #H5781 - missing fprintf args in wc_trace.c

This compiles cleanly after the fixes, but is otherwise untested.

7 years agofix #H5780 - file pointer freed twice
PatR [Mon, 31 Jul 2017 01:17:00 +0000 (18:17 -0700)]
fix #H5780 - file pointer freed twice

win/share/tileset.c seems only to be used by the MSDOS port, but it
compiles cleanly on OSX after these changes.

A file pointer was passed to fclose() twice, second time potentially
causing problems.  There were cases of potentially null pointers
being passed to free() too.  That should be safe these days, but it's
something we've tried to hard to avoid and would probably trigger
complaints from our own MONITOR_HEAP code if that ever got applied
here.

7 years agoutil updates: lev_main.c and recover.c
PatR [Mon, 31 Jul 2017 00:34:52 +0000 (17:34 -0700)]
util updates: lev_main.c and recover.c

Change lev_comp's add_opvars() to be like pline(), where there's a
single visible opening brace and a second one hidden in VA_DECL2
that introduces a nested block, plus a single visible closing brace
with a hidden one in VA_END() to close the nested block.  This
addresses the erroneous report (sent directly to devteam, so no #H
number, subject "missing '{' in util/lev_main.c:634") that the code
for !USE_STDARG/!USE_VARARGS in add_opvars() wouldn't compile.

Also, fix the part of "#H5778: file descriptor leaks" dealing with
util/recover.c -- an open file not being closed after various errors.
I didn't take responsibility for this entry in the bugzilla list
since the report includes similar problems in other code that's not
addressed here.

And a blast from the past:  some reformatting fixups in recover.c.
The most interesting bit is for a block of dead code....

7 years agomons[0]
PatR [Sun, 16 Jul 2017 22:28:44 +0000 (15:28 -0700)]
mons[0]

Alex mentioned that loops over mons[] were starting at [0], which
should be [LOW_PM] instead.  I only found two, and the mvitals[] one
was benign.  The special level one might have been too, depending
upon spec_lev's thoroughness--I didn't attempt to check.

Once upon a time there was a possibility of moving 'playermon' from
a separate variable to mons[0], so LOW_PM became the index of the
first valid monster.  Instead, 'playermon' went away altogether.
LOW_PM (and NON_PM) could go away too, but I don't see how reverting
to hardcoded 0 and -1 would be an improvement.  We have enough
problems as it is with "giant ant" turning up in unexpected places
because someone used 0 instead of NON_PM to mean "none of the above".

7 years agohealth recovery
PatR [Sun, 16 Jul 2017 01:24:56 +0000 (18:24 -0700)]
health recovery

This started out as just an attempt to remove some duplicated code,
but mutated.  Move health recovery into a separate routine to
streamline moveloop().

Intentional changes:
1) when poly'd hero is at max u.mh (hit points as a monster), do
   not recover lost u.uhp (hit points when in normal form).  That
   was caused by a missing !Upolyd check in the long if..elseif..
   elseif..endif logic.  If we want to make it deliberate, I think
   some u.uhp recovery in rehumanize() would be the way to go.
2) regeneration for poly'd hero in sea monster form (ring worn on
   left or right pectoral fin) now counteracts the loss of hit
   points for turns spent out of water.  [Do eels even have fins?]
3) poly'd hero with moderate or worse encumbrance and lacking
   regeneration wouldn't recover any health.  Now he/she will do so
   if not moving [on the magic (moves%20 == 0) turn when u.mh
   recovery takes place].

If there are any other changes in behavior, they're unintentional.

7 years agoRemove obsolete code allowing 1-indexing the monster list
Alex Smith [Sat, 15 Jul 2017 00:34:41 +0000 (01:34 +0100)]
Remove obsolete code allowing 1-indexing the monster list

Having selectable base indexes for the monster list doesn't seem
likely to be needed in the future any more, now that the code for
the monster list is stable. Additionally, the functionality in
question has bitrotted heavily (e.g. many "loops over all
permonsts" start at a hardcoded 0, which wouldn't work with a
1-indexed monster list). As a result, removing the relevant code
in makedefs makes it clearer what can and can't be assumed about
the code, reducing the risk of bugs in the future.

Thanks to FIQ for mentioning that this could be an issue.

7 years agosome artifact.c formatting
PatR [Thu, 13 Jul 2017 01:02:52 +0000 (18:02 -0700)]
some artifact.c formatting

I managed to separate these bits from the touch/retouch fix.
I almost threw then away, but one's a spelling fix in a comment.

7 years agofix commit ebd6bb62f58a : #H4383 - blasted twice
PatR [Thu, 13 Jul 2017 00:53:04 +0000 (17:53 -0700)]
fix commit ebd6bb62f58a : #H4383 - blasted twice

by Excalibur.  Noticed on Reddit by Alex, the attempt to fix being
blasted twice by wielded artifact weapon when changing alignment
ended up preventing wielding other role's quest weapons.  At the
moment I can't even see how it prevented the double-blast....

This backs out that change and fixes the double-blasting correctly.
When uwep and uswapwep are tested in advance of the rest of invent,
mark them as already processed before entering the loop that checks
all not-yet-processed inventory.

7 years agofix #H3013 - grammar bug with named fruit
PatR [Wed, 5 Jul 2017 01:44:03 +0000 (18:44 -0700)]
fix #H3013 - grammar bug with named fruit

Reported nearly four years ago for 3.4.3, original subject was
\#H3013: NetHack grammar bug when taking unpaid fruit from chest

Player used OPTIONS=fruit:Quorn and the capitalized value confuses
the() into thinking it's a proper name which shouldn't be preceded
by an article, resulting in "Quorn will cost you N zorkmids" when
removing it from a chest in a shop, followed by "X - a Quorn (unpaid)"
as it went into inventory.  It is a product name, but when used as a
fruit it shouldn't be treated as a proper name.  (Quorn is a meat
substitute rather than anything related to fruit.)  Teach the() about
named-fruits, so that we'll get "The Quorn will cost you N zorkmids."

Unfortunately, it means that someone who names their fruit after a
proper name used by the program, for example Mjollnir, can probably
induce other poorly worded messages (about the item rather than the
named-fruit).  the() is used all over the place and all it has to work
with is text, not the object whose formatted name produced that text.

I looked through a bunch of old cvs log messages last night, and
spotted one I wrote (in objnam.c) a dozen years ago where I suggested
forcing named-fruit values into lower case as they're being set up.
I don't remember that, but if we'd done it, this bug would have been
avoided.