]> granicus.if.org Git - nethack/log
nethack
6 years agoclang on OSX
PatR [Thu, 20 Dec 2018 01:52:49 +0000 (17:52 -0800)]
clang on OSX

The Unix Makefile.{src,utl} use the compiler name 'gcc' by default on
OSX, and that invokes clang which defines __GNUC__ to deal with gcc
extensions.  But when invoked via the Xcode IDE, it evidently uses its
own name instead, and wasn't defining __GNUC__.  tradstdc.h started
down the road of duplicating gcc features; switch to pretending to be
gcc instead.

6 years agofix #H2582 - seemingly angry peaceful vault guard
PatR [Thu, 20 Dec 2018 01:36:14 +0000 (17:36 -0800)]
fix #H2582 - seemingly angry peaceful vault guard

Another one from nearly 7 years ago.  Hero kicked embedded gold out
of a wall while following the guard away from the vault and got
  "The guard calms down and picks up the gold."
and player thought it was odd because the guard was peaceful.  It is
odd, but guards have an agitation state (0..7) when peaceful and it
is always non-zero when this event occurs.  Suppress the "calms down"
part unless the agitation is close to making the guard turn hostile.
[Agitation is set to 5 after that event, so it isn't very calming.]

Also, the guard was picking up gold from underneath the hero while
two steps away.  Move him adjacent (although it doesn't knock other
monsters out of the way if there's no room) prior to the message,
then back again after.  That's how if works for gold that's not at
the guard's location and not at the hero's location, although that
case does knock another monster out of the way if one is on the gold.

6 years agofix github issue #169 - monst vs vibrating square
PatR [Wed, 19 Dec 2018 22:52:23 +0000 (14:52 -0800)]
fix github issue #169 - monst vs vibrating square

Fixes #169

Monsters should not be afraid of stepping on the vibrating square
since it's only a trap for display purposes.  [Perhaps they should
deliberately avoid it if the hero hasn't seen it yet, but I didn't
implement that.]

"You see a strange vibration beneath <mon's> <parts>." was strange
when <parts> was a wolf's "rear paws" or horse's "rear hooves"--was
the vibration magically skipping the front ones?  And it sounded
naughty when it was a snake's "rear regions".  If the creature has no
limbs or is floating or flying, just say "beneath <mon>"; otherwise,
if the part is "rear <something>", omit "rear ".

The message was weird in another way.  Caller removes the monster
from it's old location and places it on the new one, calls newsym()
for the old location to show lack of monster, but then calls mintrap()
before newsym() for monster's new location (the trap's location).  If
pline messages cause buffered map output to be flushed, the monster
will be missing during the time the messages are delivered.  I fixed
that for vibrating square [seetrap()->newsym() before pline() rather
than after] but it should probably be fixed in the caller instead.

6 years agoeliminate sys/share/pcsys.c from Windows build
nhmall [Wed, 19 Dec 2018 11:43:00 +0000 (06:43 -0500)]
eliminate sys/share/pcsys.c from Windows build

Windows build was actually only using a single function
in there, so just add a similar function to sys/winnt/winnt.c
and eliminate the need for including sys/share/pcsys.c in
the build.

6 years agofix #H2636 - vault guard "fakecorr overflow" panic
PatR [Wed, 19 Dec 2018 11:06:40 +0000 (03:06 -0800)]
fix #H2636 - vault guard "fakecorr overflow" panic

Another 6.5 year old report.  This one from Steven Melenchuk told
how to reproduce C343-23 which is still open on our 'known bugs'
page.  (I've no idea whether the original bug report came through
the contact page, and if so, what its assigned number was.)

I didn't try to solve this one, I just confirmed that it could be
reproduced and took the fix from grunthack at github.  He didn't
menion a fix at the time but implemented one before abandoing his
variant.  (Others kept it going afterwards; fix was during his time.)

The overflow occurred when the guard couldn't figure out where to
move to next and just repeatedly 'moved' to his current location
until the maximum number of fake corridor spots was used up.  The
fix detects not knowing where to go next and explicitly choosing a
new destination.

Original problem could be reproduced by teleporting into the vault,
digging out a wall and two spaces of stone in a straight line, then
going back into the vault to wait for a guard.  When he shows up:
answer, drop gold, follow.  If the guard's path walks through both
dug spaces, he will stop waiting for the hero.  But hero is in
between the guard and the gap in the vault wall and can't advance;
guard has reached a persistent corridor so doesn't know where to go
next.  Have hero wait for 125-ish more turns and then game panicks.

The code was 3.4.3 vintage so needed thorough reformatting, but not
any actual changes (unless I've overlooked something).

6 years agodisable gcc's __attribute__((warn_unused_result))
PatR [Wed, 19 Dec 2018 03:11:36 +0000 (19:11 -0800)]
disable gcc's __attribute__((warn_unused_result))

Casting to (void) to discard a function return value doesn't satisfy
gcc's -Wunused-result (which we aren't enabling but is apparently
being activated for particular functions by glibc header files).  Turn
it into a no-op to suppress three dozen warnings from Travis builds.

6 years agomake diluted oil less effective than normal oil
PatR [Wed, 19 Dec 2018 01:16:05 +0000 (17:16 -0800)]
make diluted oil less effective than normal oil

Suggested 6.5 years ago...

6 years agowarn_unused_result in end.c
PatR [Tue, 18 Dec 2018 22:30:31 +0000 (14:30 -0800)]
warn_unused_result in end.c

There is only one warn_unused_result warning from gcc in end.c;
change the code a little to use it.

6 years agoMerge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource...
nhmall [Tue, 18 Dec 2018 22:10:29 +0000 (17:10 -0500)]
Merge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.2-beta01

6 years agoupdate .gitattributes for recent changes
nhmall [Tue, 18 Dec 2018 22:09:52 +0000 (17:09 -0500)]
update .gitattributes for recent changes

6 years agowarn_unused_result in recover.c
PatR [Tue, 18 Dec 2018 22:01:57 +0000 (14:01 -0800)]
warn_unused_result in recover.c

There is only one warn_unused_result warning from gcc in recover.c,
so actually use that result.

Plus a bit of reformatting (tab replacement).

6 years agoplug open file leaks for rumors and oracles
PatR [Tue, 18 Dec 2018 11:24:38 +0000 (03:24 -0800)]
plug open file leaks for rumors and oracles

If the rumors file or oralces file got opened successfully but had bad
data, it wouldn't be closed.

6 years agosuppress dead code in move_special()
PatR [Tue, 18 Dec 2018 11:13:41 +0000 (03:13 -0800)]
suppress dead code in move_special()

This dead code was already dead in 3.4.3; I didn't look any further
back.

6 years agolife support for comatose code in explmu()
PatR [Tue, 18 Dec 2018 11:01:50 +0000 (03:01 -0800)]
life support for comatose code in explmu()

Static analysis notices that
  if (physical_damage)
    tmp = Maybe_Half_Phys(tmp);
will never pass the test because all code paths leading to it set
'physical_damage' to False.  Instead of getting rid of it, add a fake
case that leaves that True.

6 years agoplug potential open file leak in checkfile()
PatR [Tue, 18 Dec 2018 10:44:21 +0000 (02:44 -0800)]
plug potential open file leak in checkfile()

Another item from static analysis.  If an internal error ever caused
the "bad do_look buffer" warning from checkfile(), open file 'data'
would not be closed.  (The bug in checkfile()'s caller which prompted
that check was fixed long go.)

An alternate fix would be to move the input buffer check to before
the file is opened, but verifying the file first seems worthwhile.

6 years agoremove dead code from parse()
PatR [Tue, 18 Dec 2018 10:24:19 +0000 (02:24 -0800)]
remove dead code from parse()

From Jessie's old static analysis report.  'prezero' was used in 3.4.3
when processing a count for 'multi', but count handling is now done in
a separate routine and 'prezero' in parse() never changes value, so
get rid of it.

6 years agowording adjustment to fixes entry
nhmall [Tue, 18 Dec 2018 05:24:37 +0000 (00:24 -0500)]
wording adjustment to fixes entry

6 years agofix OPTIONS=symset:default, roguesymset:RogueEpyx
nhmall [Tue, 18 Dec 2018 05:14:39 +0000 (00:14 -0500)]
fix OPTIONS=symset:default, roguesymset:RogueEpyx

6 years agofixes36.2 fixes
PatR [Mon, 17 Dec 2018 23:45:55 +0000 (15:45 -0800)]
fixes36.2 fixes

Fix a few typos, reword a couple of entries describing the bug rather
than its fix to use past tense, move a couple of entries to be adjacent
to closely related entries (there's a lot of scope for more of that...)
and remove a bunch of trailing spaces.

[fixes36.2 starts with a header line but the tags on it aren't being
substituted.]

6 years agothrowing recoil inside shop
PatR [Mon, 17 Dec 2018 11:05:10 +0000 (03:05 -0800)]
throwing recoil inside shop

Another bug from seven years ago, sent directly to devteam so no #H
number.  Report stated that throwing recoil could move a levitating
hero diagonally through a shop's doorway to exit it.  If the thrown
item was unpaid, it remained unpaid after landing on shop's floor
and was an unlisted item on shop's bill.  Moving diagonally out the
door seems to have been fixed, but the same effect still occurred
if you were far enough from the door to have the shopkeeper vacate
his door-blocking spot and throwing recoil took hero to that spot.
The thrown unpaid item remained unpaid, and walking out the door was
treated as shop robbery.

6 years agoyet more dropping while inside engulfer
PatR [Mon, 17 Dec 2018 10:49:38 +0000 (02:49 -0800)]
yet more dropping while inside engulfer

I don't know why we have two different functions which do exactly
the same thing (checking whether an item is unpaid or is a container
that holds at least one unpaid item), but switch the #H2504 fix to
use 'the other one' and reverse one of the changes made when using
the inventory one.

6 years agomore dropping unpaid shop items inside engulfer
PatR [Mon, 17 Dec 2018 08:45:00 +0000 (00:45 -0800)]
more dropping unpaid shop items inside engulfer

I thought that the earlier fix for #H2504 was too easy for anything
shop related.  It didn't deal sensibly with containers owned by hero
but holding unpaid shop goods.

6 years agodropping shop item(s) inside engulfer
PatR [Mon, 17 Dec 2018 00:06:15 +0000 (16:06 -0800)]
dropping shop item(s) inside engulfer

'Yobjnam2()' is for beginning of sentence or other deliberate
capitalization.  Switch to yobjnam().

6 years agoMerge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource...
nhmall [Sun, 16 Dec 2018 23:55:30 +0000 (18:55 -0500)]
Merge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.2-beta01

6 years agorevert to prior behavior
nhmall [Sun, 16 Dec 2018 23:52:55 +0000 (18:52 -0500)]
revert to prior behavior

6 years agofix #H2504 - dropping shop goods inside engulfer
PatR [Sun, 16 Dec 2018 23:43:17 +0000 (15:43 -0800)]
fix #H2504 - dropping shop goods inside engulfer

This one is only seven years old.  Dropping an unpaid item inside an
engulfer leaves it unpaid and still on bill.  If engulfer is killed,
it ends up unpaid when back on the shop's floor.

Treat dropping an unpaid item into engulfer's inventory as stealing
that item.  You have to pay for it to leave the shop, and like any
other dying monster's inventory, the shopkeeper will take ownership
if it lands on the shop floor when the engulfer is killed.

The 'theft' doesn't anger the shopkeeper and the cost shows up on 'Ix'
as part of "usage fees/other charges" rather than as an itemized used
up item.

6 years agofix #H2204 - mkclass() mon selection distribution
PatR [Sun, 16 Dec 2018 22:21:30 +0000 (14:21 -0800)]
fix #H2204 - mkclass() mon selection distribution

That #H number isn't a typo.  This finally fixes--at least improves--
something reported eight years ago.  The monster types chosen by
mkclass() could be way off in some circumstances.  Cited example was
repeated same-race sacrifice by chaotic hero on dungeon level 20; it
produced about twice as many incubi as succubi even though they're
the same as far as difficulty goes.  (No changes in the intervening
years had any discernable effect; that was still reproducible.)
The report also mentioned that ndemon() threw away the result from
mkclass() and retried quite often and suggested that mkclass() be
taught to filter by alignment when caller cared about that.

This seems to even things out, although it also made harder monsters
chosen more often.  A test program generated these numbers when
picking a chaotic demon 10000 times (level 1 hero on dungeon level 20,
so not realistic; actually probably level 0 hero since the program
didn't initialize struct u.)  Third column is the number of times the
monster type was chosen with the old mkclass(), fourth is same for
the new one.
    mkclass() calls    27315 10000
286 succubus            2800  3309
288 incubus             5552  3262
291 marilith             973   780
292 vrock                477  1617
293 hezrou               150   626
294 bone devil            46   247
295 ice devil              2   107
296 nalfeshnee             0    23
297 pit fiend              0    15
298 sandestin              0     4
299 balrog                 0    10
Note that vrock has generation frequency 2 and marilith only 1, so
getting twice as many vrocks as mariliths should be expected.

I temporarily changed ndemon() to ask for lawful demons instead of
chaotic ones and got this.
    mkclass() calls    15762 10000
287 horned devil        3197  3375
289 erinys              4991  3339
290 barbed devil        1812  3286

I also ran it for dragons with any alignment (so the outcome was
never thrown away; 10000 calls were needed for 10000 picks) instead
of demons of specific alignment and am suspicious of the outcome.
    mkclass() calls    10000 10000
140 baby yellow dragon  1124     0
141 gray dragon         1096  1096
142 silver dragon       1073  1099
143 red dragon          1061  1126
144 white dragon        1077  1128
145 orange dragon       1141  1118
146 black dragon        1154  1049
147 blue dragon         1137  1123
148 green dragon        1137  1154
149 yellow dragon          0  1107
There may be a flaw in the test program.  Or else old mkclass() was
not very good at picking dragons.

6 years agodon't show stubs in window port valid list
nhmall [Sun, 16 Dec 2018 04:11:52 +0000 (23:11 -0500)]
don't show stubs in window port valid list

6 years agoMerge branch 'NetHack-3.6.2-beta01' into win-minor
nhmall [Sun, 16 Dec 2018 03:58:32 +0000 (22:58 -0500)]
Merge branch 'NetHack-3.6.2-beta01' into win-minor

6 years agoUpdateda PDCurses Visual Studio project to latest PDCurses content.
Bart House [Sun, 16 Dec 2018 03:52:58 +0000 (19:52 -0800)]
Updateda PDCurses Visual Studio project to latest PDCurses content.

6 years agoMerge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource...
nhmall [Sun, 16 Dec 2018 03:40:07 +0000 (22:40 -0500)]
Merge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.2-beta01

6 years agoclean exit on window port init failure
nhmall [Sun, 16 Dec 2018 03:36:24 +0000 (22:36 -0500)]
clean exit on window port init failure

6 years agobuilding lev_comp with USE_OLDARGS
PatR [Sun, 16 Dec 2018 03:27:08 +0000 (19:27 -0800)]
building lev_comp with USE_OLDARGS

The relatively recent change to lev_comp do deal with apparent junk
in some places in its generated data has triggered a bunch of
 "cast to 'vA' (aka 'const char *') from smaller integer type 'int'
 [-Wint-to-pointer-cast]"
from clang when building with USE_OLDARGS.  Probably should have
added a zillion explicit casts to long and 'L' suffix for 0 rather
than trying to handle both int and long.  Or maybe just turned off
that particular warning, which must be coming from -Wall or -Wextra.

This modification has no effect for USE_STDARG or USE_VARARGS configs.

6 years agocomment out PDCurses bt default again
nhmall [Sun, 16 Dec 2018 03:04:55 +0000 (22:04 -0500)]
comment out PDCurses bt default again

6 years agoMerge branch 'NetHack-3.6.2-beta01' into win-minor
nhmall [Sun, 16 Dec 2018 03:03:44 +0000 (22:03 -0500)]
Merge branch 'NetHack-3.6.2-beta01' into win-minor

6 years agoGuidebook bit
nhmall [Sun, 16 Dec 2018 03:03:05 +0000 (22:03 -0500)]
Guidebook bit

6 years agoMakefile.msc update
nhmall [Sun, 16 Dec 2018 02:52:00 +0000 (21:52 -0500)]
Makefile.msc update

Tell people where to find the latest PDCurses git
repository

6 years agoMerge branch 'win-minor' of https://rodney.nethack.org:20040/git/NHsource into win...
Bart House [Sun, 16 Dec 2018 01:35:43 +0000 (17:35 -0800)]
Merge branch 'win-minor' of https://rodney.nethack.org:20040/git/NHsource into win-minor

6 years agoAdded PDCurses project to VS 2017 build.
Bart House [Sun, 16 Dec 2018 01:35:27 +0000 (17:35 -0800)]
Added PDCurses project to VS 2017 build.

6 years agoMerge branch 'win-minor' into NetHack-3.6.2-beta01
nhmall [Sun, 16 Dec 2018 00:34:56 +0000 (19:34 -0500)]
Merge branch 'win-minor' into NetHack-3.6.2-beta01

6 years agomore win32 gui fuzzer work
nhmall [Sun, 16 Dec 2018 00:31:42 +0000 (19:31 -0500)]
more win32 gui fuzzer work

6 years agomore win32 gui fuzzer work
nhmall [Sun, 16 Dec 2018 00:31:07 +0000 (19:31 -0500)]
more win32 gui fuzzer work

6 years agotty SIGHUP
PatR [Sun, 16 Dec 2018 00:24:59 +0000 (16:24 -0800)]
tty SIGHUP

We still don't know whether this will be of any help against
disconnected processes that hog the CPU instead of exiting, but I
don't think it imposes significant overhead on ones which aren't
disconnected.  Install it before it suffers from more bit rot.

6 years agoget_hilite_color()
PatR [Sat, 15 Dec 2018 23:46:49 +0000 (15:46 -0800)]
get_hilite_color()

Stop pretending that long and int are the same size when picking status
highlight rule for gold or time or experience-points.

Also, K&R compilation might lack <limits.h>, so let XXXconf.h define the
necessary macro(s) (currently just LONG_MAX) so that it can be skipped.

6 years agoMerge branch 'win-minor' of https://rodney.nethack.org:20040/git/NHsource into win...
Bart House [Sat, 15 Dec 2018 22:50:14 +0000 (14:50 -0800)]
Merge branch 'win-minor' of https://rodney.nethack.org:20040/git/NHsource into win-minor

6 years agoSmall improvements to fuzzer for NetHackW.
Bart House [Sat, 15 Dec 2018 22:49:59 +0000 (14:49 -0800)]
Small improvements to fuzzer for NetHackW.

Can toggle fuzzer on/off using "Pause" key if attached to debugger.
Extended command selected randomly.

6 years agoFix always trapped castle chest
Patric Mueller [Sat, 15 Dec 2018 21:40:30 +0000 (22:40 +0100)]
Fix always trapped castle chest

6 years agoMakefile.msc update
nhmall [Sat, 15 Dec 2018 07:17:15 +0000 (02:17 -0500)]
Makefile.msc update

6 years agoMerge branch 'NetHack-3.6.2-beta01' into win-minor
nhmall [Sat, 15 Dec 2018 04:11:37 +0000 (23:11 -0500)]
Merge branch 'NetHack-3.6.2-beta01' into win-minor

6 years agofix up PDCurses cursor placement for prompts
nhmall [Sat, 15 Dec 2018 04:08:41 +0000 (23:08 -0500)]
fix up PDCurses cursor placement for prompts

6 years agotty status condition: Cf, Hl, Rd
PatR [Sat, 15 Dec 2018 02:51:07 +0000 (18:51 -0800)]
tty status condition: Cf, Hl, Rd

While the fuzzer was running, amidst the continual screen updating I
caught a glimpse of "Cn" and was puzzled about how the hero became
cancelled.  I quickly realized it actually meant confused, but I
think "Cf" is a better abbreviation for that.  I've also changed "Ha"
to "Hl" for hallucination and "Ri" to "Rd" for riding.  The rest is
formatting.

6 years agodisplacing pet long worm
PatR [Sat, 15 Dec 2018 02:17:42 +0000 (18:17 -0800)]
displacing pet long worm

Salvage part of an old patch.  Swapping places with any long worm,
even a baby one, always failed with "You stop.  Foo is in the way!"
This lets you swap places with tame baby long worms, and adult ones
if they have no tail (which won't happen unless there are more than
32 long worms on the current level--even if a long worm appears to
be only a head, there is normally a hidden tail segment at the same
location).

6 years agoMerge branch 'NetHack-3.6.2-beta01' into win-minor
nhmall [Fri, 14 Dec 2018 22:25:24 +0000 (17:25 -0500)]
Merge branch 'NetHack-3.6.2-beta01' into win-minor

6 years agolast? pickup_types
PatR [Fri, 14 Dec 2018 07:52:35 +0000 (23:52 -0800)]
last? pickup_types

Although choose_classes_menu() is only used for objects, it is written
to handle monsters too.  My change to give <space> special handling
might have broken selecting ghosts if it's ever used for monsters so
fix that.

6 years agoRemove parameter names in declaration.
Bart House [Fri, 14 Dec 2018 05:23:43 +0000 (21:23 -0800)]
Remove parameter names in declaration.

6 years agoMerge branch 'win-minor' into NetHack-3.6.2-beta01
nhmall [Fri, 14 Dec 2018 02:25:34 +0000 (21:25 -0500)]
Merge branch 'win-minor' into NetHack-3.6.2-beta01

6 years agomore interactive !pickup_types
PatR [Fri, 14 Dec 2018 01:33:46 +0000 (17:33 -0800)]
more interactive !pickup_types

More on clearing pickup_types so that autopickup reverts to picking up
evertyhing:  for menustyle:Full and Partial, add a menu entry for 'all
classes' as an alternative to unselecting every class already set.

Also, Full and Partial had no way to include venom.  Now it's a choice
when in wizard mode.  There's still no way--other than switching to
Traditional or Combination--during normal play (where venom objects can
exist if they were wished for in wizard mode and then left in bones).

6 years agostale dependency
nhmall [Fri, 14 Dec 2018 01:21:26 +0000 (20:21 -0500)]
stale dependency

6 years agocommented out by default
nhmall [Fri, 14 Dec 2018 01:11:03 +0000 (20:11 -0500)]
commented out by default

6 years agoMerge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource...
nhmall [Fri, 14 Dec 2018 01:08:47 +0000 (20:08 -0500)]
Merge branch 'NetHack-3.6.2-beta01' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.2-beta01

6 years agopdcurses expected objs
nhmall [Fri, 14 Dec 2018 01:07:22 +0000 (20:07 -0500)]
pdcurses expected objs

Match the required curses obj's in most recent updates from
git clone https://git.code.sf.net/p/pdcurses/code pdcurses

6 years agospell "autopickup" consistently
PatR [Fri, 14 Dec 2018 00:54:52 +0000 (16:54 -0800)]
spell "autopickup" consistently

The '@' command doesn't hyphenate 'auto-pickup' so 'O' and ^X shouldn't
either.

6 years agorandom_response() buffer overflow
PatR [Thu, 13 Dec 2018 10:12:31 +0000 (02:12 -0800)]
random_response() buffer overflow

'sz' is the size of the buffer; 'if (count < sz) buf[count++] = c;'
can fill the entire buffer, leaving count==sz, so buf[count] = '\0';
would be out of bounds.

Formatting was way off.  Indentation these days should be multiples
of 4 spaces, never tabs.

6 years agocore code style
nhmall [Thu, 13 Dec 2018 06:36:36 +0000 (01:36 -0500)]
core code style

6 years agoMerge branch 'win-minor' of https://rodney.nethack.org:20040/git/NHsource into win...
Bart House [Thu, 13 Dec 2018 05:46:32 +0000 (21:46 -0800)]
Merge branch 'win-minor' of https://rodney.nethack.org:20040/git/NHsource into win-minor

6 years agoChanges to get fuzzer working in NetHackW.
Bart House [Thu, 13 Dec 2018 05:46:14 +0000 (21:46 -0800)]
Changes to get fuzzer working in NetHackW.

6 years agoshow autopickup in ^X feedback
PatR [Thu, 13 Dec 2018 02:55:06 +0000 (18:55 -0800)]
show autopickup in ^X feedback

Gathers all the autopickup information in one place:

Auto-pickup is { off
               | on { for 'classes' [plus thrown]
                    | all types                   } [, with exceptions] }.

6 years agointeractive !pickup_types
PatR [Thu, 13 Dec 2018 02:49:12 +0000 (18:49 -0800)]
interactive !pickup_types

To use 'O' to clear a value from pickup_types with menustyle Traditional
or Combination, you needed to give a value starting with 'a' (for 'all').
Accept space(s) too, similar to removing an object or monster name.

6 years agofuzzing hero boost
PatR [Thu, 13 Dec 2018 01:55:43 +0000 (17:55 -0800)]
fuzzing hero boost

I watched the fuzzer run for a bit and noticed that Str and most other
characteristics were steadily dropping until they hit 3 and not being
recovered, so I gave the defenseless hero a chance to benefit from
blessed restore ability occasionally.  It hasn't helped much.  Str and
Con both still drop to 3.  [If I had to guess, I'd go with side-effect
of polymorphing, but not an intended one.]

6 years agoplace_monster() warning bit
PatR [Thu, 13 Dec 2018 01:54:53 +0000 (17:54 -0800)]
place_monster() warning bit

6 years agomon_sanity_check tweak
PatR [Wed, 12 Dec 2018 23:42:46 +0000 (15:42 -0800)]
mon_sanity_check tweak

A change I included with the vault guard fix was triggering fuzzer
panics about dead monsters on the fmons list.  I'm not quite sure why;
I couldn't reproduce it interactively.  [Perhaps caused by hero killing
a monster and then getting another move before monsters get their turn,
but trying to do that still didn't trip the dead monster sanity check.]
Suppress that check so that the fuzzer can run amok.

Also, a waiting-to-exit vault guard could move extra times, uselessly
since ''hero hasn't left temporary corridor yet'' is why he's waiting,
if there were any monsters fast enough to get extra moves before the
hero's next turn.

6 years agoMerge branch 'win-minor' into NetHack-3.6.2-beta01
nhmall [Wed, 12 Dec 2018 11:40:52 +0000 (06:40 -0500)]
Merge branch 'win-minor' into NetHack-3.6.2-beta01

6 years agofix #H7677 - guard placed twice at <0,0>
PatR [Wed, 12 Dec 2018 09:54:33 +0000 (01:54 -0800)]
fix #H7677 - guard placed twice at <0,0>

"Placing monster over another?" warning was triggered for vault guard
by an earlier change which made m_detach() stop removing monsters at
<0,*> from level.monsters[][].  So one guard would replace another at
<0,0> for however many guards were created, and memory for all but
the last one would be lost.

This involved a lot of flailing about and the patch includes various
things would could have been discarded.  One or two extended monster
sanity checks are included, plus a couple of debugpline()'s for
tracking guard movement.

6 years agoTerminal font when not fitting to screen. Consolas for fit to screen.
Bart House [Wed, 12 Dec 2018 04:52:07 +0000 (20:52 -0800)]
Terminal font when not fitting to screen.  Consolas for fit to screen.

6 years agoan() bit
PatR [Tue, 11 Dec 2018 09:27:20 +0000 (01:27 -0800)]
an() bit

6 years agofix 'a X'
PatR [Tue, 11 Dec 2018 01:34:18 +0000 (17:34 -0800)]
fix 'a X'

The fruit name fix a couple of days ago revealed that an() didn't
pick the right article for single letters.  If you set named fruit to
"X" and wished for "fruit", you'd have 'k - a X' added to inventory.
This changes an() and also doname() which bypasses an().

6 years agofix apparent copy and paste error
nhmall [Mon, 10 Dec 2018 23:01:43 +0000 (18:01 -0500)]
fix apparent copy and paste error

6 years agotypo fix
nhmall [Mon, 10 Dec 2018 22:28:43 +0000 (17:28 -0500)]
typo fix

6 years agotrigger update
nhmall [Mon, 10 Dec 2018 22:24:32 +0000 (17:24 -0500)]
trigger update

6 years agoQt build
nhmall [Mon, 10 Dec 2018 14:00:50 +0000 (09:00 -0500)]
Qt build

6 years agofix #H7707 - terrain change leaving stale flags
PatR [Mon, 10 Dec 2018 11:52:00 +0000 (03:52 -0800)]
fix #H7707 - terrain change leaving stale flags

struct rm.flags in overloaded for a bunch of rm.typ -dependent things
(doormask, altarmask, throne/fountain/sink looted, a few others) and
wasn't being reset for various cases where rm.typ gets changed.

I've changed a lot, some no doubt unnecessarily, and probably missed
plenty.  This compiles but has not been thoroughly tested.

6 years agofix #H7704 - clairvoyance: objects vs pools
PatR [Mon, 10 Dec 2018 10:21:31 +0000 (02:21 -0800)]
fix #H7704 - clairvoyance: objects vs pools

When clairvoyance revealed an underwater object and the player wasn't
being given a chance to browse for some other reason, the map didn't
get refreshed and the object stayed displayed with the water hidden
under it.  Force a chance to browse when revealing underwater objects
despite that being intrusive when clairvoyance kicks in while walking
around.

6 years agoMerge branch 'win-minor' into NetHack-3.6.2-beta01
nhmall [Mon, 10 Dec 2018 05:50:01 +0000 (00:50 -0500)]
Merge branch 'win-minor' into NetHack-3.6.2-beta01

6 years agoallow a deferred windowport init during options processing
nhmall [Mon, 10 Dec 2018 05:44:18 +0000 (00:44 -0500)]
allow a deferred windowport init during options processing

When options processing encountered OPTIONS=windowtype:X,
the code would immediately attempt to switch over to that
windowtype right in the midst of options processing.

This stores the chosen option into
chosen_window[WINTYPELEN]
thus allowing the startup code to choose it after
options processing has been completed.

6 years agofix #H7708 - change in terrain not noticed
PatR [Mon, 10 Dec 2018 00:22:27 +0000 (16:22 -0800)]
fix #H7708 - change in terrain not noticed

Jumping or teleporting while levitating in xorn form wouldn't toggle
blocking of levitation when moving from open spots to wall/stone and
unblocking of same when moving the opposite way.

This handles those cases but there are no doubt others.  The only
other one I checked was when failed #untrap moves hero onto trap.
That case works correctly--at least after this fix is in place.

Noticed while working on it:  change of terrain didn't always update
the status line.  When levitation became blocked, it still said Lev
and when unblocked, didn't say that.  Next status update got status
condition back in sync.

6 years agofix #H7702 - named fruit warning: singular of null
PatR [Sun, 9 Dec 2018 23:03:13 +0000 (15:03 -0800)]
fix #H7702 - named fruit warning: singular of null

Some code added for 3.6.1 tries to find the longest matching prefix
when comparing a user-supplied with previously set up fruit names.
It does so by temporarily replacing space with NUL then passing that
to makesingular().  After already having named a fruit (resulting in
something to try to compare with), attempting to assign a name
beginning with two or more spaces would yield an impossible "singular
of null?" warning.

After the warning, the name minus its leading spaces got successfully
assigned.  I'm not sure why a single leading space didn't trigger it
too, nor where the leading (and trailing, if any) spaces are going
away when the name is assigned.

Fix by removing all leading and trailing spaces from a new fruit name,
and combine consecutive internal spaces to one, before any other
manipulations.  (This can result in names that used to work as-is now
being simplified a bit--when consecutive internal spaces have been
given--but that shouldn't be a problem.)

Also, don't complain about "missing parameter for 'fruit:'" if user
hits <return> when prompted for fruit name by 'O'.  An empty fruit
name at that stage is just a no-op.

6 years agoChanges to font size and vary_msgcount options for Windows nethack ports.
Bart House [Sun, 9 Dec 2018 22:37:07 +0000 (14:37 -0800)]
Changes to font size and vary_msgcount options for Windows nethack ports.

6 years agoNetHackW default font changed from "Terminal" to "Courier New"
Bart House [Sun, 9 Dec 2018 22:06:25 +0000 (14:06 -0800)]
NetHackW default font changed from "Terminal" to "Courier New"

6 years agoMerge branch 'win-minor' into win-fontmap
Bart House [Sun, 9 Dec 2018 22:02:57 +0000 (14:02 -0800)]
Merge branch 'win-minor' into win-fontmap

# Conflicts:
# win/win32/mhmap.c

6 years agoThree fixes to NetHackW font handling.
Bart House [Sun, 9 Dec 2018 19:57:50 +0000 (11:57 -0800)]
Three fixes to NetHackW font handling.

Check that player level is valid before checking if it is rogue.
Prevent attempting to pick a font that is too small.
Don't leak fonts when trying to find a font that fits.

6 years agoRender the two block glyphs using FillRect instead of DrawText.
Bart House [Sun, 9 Dec 2018 19:30:29 +0000 (11:30 -0800)]
Render the two block glyphs using FillRect instead of DrawText.

6 years agoMerge branch 'NetHack-3.6.2-beta01' into win-minor
nhmall [Sun, 9 Dec 2018 18:47:12 +0000 (13:47 -0500)]
Merge branch 'NetHack-3.6.2-beta01' into win-minor

6 years agosome early startup adjustments
nhmall [Sun, 9 Dec 2018 18:09:30 +0000 (13:09 -0500)]
some early startup adjustments

6 years agofixes entry for foxen refix
nhmall [Sun, 9 Dec 2018 15:31:07 +0000 (10:31 -0500)]
fixes entry for foxen refix

commit e0927cd983097392efd06cec32cba43ee828fb82 fixes #167

6 years agoMerge branch 'foxen_fix' into NetHack-3.6.2-beta01
nhmall [Sun, 9 Dec 2018 15:19:27 +0000 (10:19 -0500)]
Merge branch 'foxen_fix' into NetHack-3.6.2-beta01

6 years agomore windmain
nhmall [Sun, 9 Dec 2018 15:14:19 +0000 (10:14 -0500)]
more windmain

6 years agoFix resurfacing of "foxen" pluralization bug
copperwater [Sun, 9 Dec 2018 14:51:47 +0000 (09:51 -0500)]
Fix resurfacing of "foxen" pluralization bug

Inadvertently reintroduced in f9f1236. It was just the conditional
that was bad: due to resolving the possible buffer underflow when
comparing to "muskox", the pluralizer now only adds -es when the length
of the string is greater than 5. So for "box" and "fox" the pluralizer
will never add the -es ending, since they are greater than 5.

This commit checks for "does not end in muskox" correctly.

6 years agoclean up some tear-down
nhmall [Sun, 9 Dec 2018 04:04:53 +0000 (23:04 -0500)]
clean up some tear-down

Windows continued to use function pointers belonging
to particular window ports that were still assigned
even after that port (tty) had gone through its
shutdown procedures when requested by the core.
Fix that and return to the minimal function pointers
that are not part of any of the actual WindowPorts.

6 years agoclean up Windows exit routines
nhmall [Sun, 9 Dec 2018 03:34:50 +0000 (22:34 -0500)]
clean up Windows exit routines

6 years agoa late bot() call was observed on GUI Windows so prevent such a crash
nhmall [Sun, 9 Dec 2018 03:08:55 +0000 (22:08 -0500)]
a late bot() call was observed on GUI Windows so prevent such a crash