Commit Graph

10428 Commits

Author SHA1 Message Date
PatR
e4221db47e fix github issue #275 - artifact life drain
A monster using Stormbringer or Staff of Aesculapius to drain life
from another monster would heal the hero instead of the attacker.
2019-12-29 15:30:55 -08:00
Pasi Kallinen
2dda1c43b2 Fix heap-use-after-free when rewielding partial stack 2019-12-29 17:28:15 +02:00
Pasi Kallinen
4c82594193 Fix another out-of-bounds error
Monster trying to decide if a tin could cure stoning looking at
a special or empty tin would do acidic(&mons[-1])
2019-12-29 16:36:54 +02:00
nhmall
d7e3331129 remove a few obsolete notes 2019-12-28 16:35:26 -05:00
nhmall
471f3e6556 Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2019-12-27 12:14:13 -05:00
nhmall
4e904d01e8 msdos cross-compile bits 2019-12-27 12:13:41 -05:00
nhmall
e76326544f fix Xcode warning 2019-12-27 10:32:06 -05:00
nhmall
a4dfac2cec pull requests #174 and #128 for hallucinatory traps and autounlock
Pull requests:
hallucinatory traps
autounlock

This breaks existing save files.

Closes #174
Closes #228
2019-12-27 09:05:27 -05:00
nhmall
90f2af5277 merge bit 2019-12-27 09:02:51 -05:00
nhmall
b241945672 Merge branch 'NetHack-3.7' 2019-12-27 08:52:42 -05:00
Pasi Kallinen
6d8d3a9557 Add lua object references
Whenever a lua script references a core struct obj, increment a counter
in the obj struct. Core code will not free the obj, if there are any
lua references pointing to it, just makes it free-floating.
When lua script ends, the lua gc will free the free-floating objects.

Also exposes u.inventory to lua.

Breaks save and bones compat.
2019-12-26 19:15:24 +02:00
PatR
7ea7058c01 fix github issue #272 - meat rings, +0 protection
Meat rings were causing increased hunger even though they don't do
anything.  Not mentioned in the report, but cheap plastic imitation
amulets increased hunger too and they don't do anything either.
Trickier to fix, +0 rings of protection were excluded from hunger
on the grounds that +0 rings don't do anything, but since 3.6.0
+0 protection provides +1 to magic cancellation if protection isn't
coming from anywhere else.  Two +0 rings of protection are trickier
still since only one of them provides the MC bonus.

Fixes #272
2019-12-24 04:31:41 -08:00
PatR
6aabc78c83 'w-' object lost panic
After the "make 'w' parallel with 'Q'" patch, wielding bare hands
was erroneously treating object id 0 as a split of zeroobj.  That
isn't in inventory so seems 'lost'.  Fixed by testing for nonzero.
There was another bug:  you could wield a partial stack even if your
current weapon was cursed.  Fixed by reordering if/else-if/end-if.
2019-12-24 03:26:34 -08:00
PatR
60ec7256ab fix github issue #268 - worm tooth & crysknife
Change the composition of worm tooth from none-of-the-above to bone
and crysknife from mineral to bone, same as is used for unicorn horn.
I think the only significant difference will be that worm teeth used
up during polypiling will produce skeletons rather than flesh golems.

Fixes #268
2019-12-24 02:41:19 -08:00
nhw_cron
578f095639 This is cron-daily v1-Dec-12-2019. files updated: Files 2019-12-23 23:20:15 -05:00
nhmall
5d64e5d433 Merge branch 'chasonr-msdos-build' into NetHack-3.7 2019-12-23 22:27:13 -05:00
nhmall
01a3f8094f Merge branch 'msdos-build' of https://github.com/chasonr/NetHack into chasonr-msdos-build 2019-12-23 22:25:20 -05:00
nhmall
3ec080ab7d Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2019-12-23 21:45:26 -05:00
nhmall
a034e8200c centralize the invert decision logic to avoid updates to 7 ports
This will make it easier to tinker for best results.
2019-12-23 21:44:34 -05:00
PatR
7401931b02 curses_add_menu warning suppression 2019-12-23 17:24:17 -08:00
PatR
8eca3a99ab giant {spider,beetle} fixes entry 2019-12-23 16:35:12 -08:00
Ray Chason
6f9e7b6b97 Fixes to build NetHack 3.7.0 on FreeDOS 2019-12-23 18:03:26 -05:00
nhmall
11e003cb47 add a requested interface adjustment for menu invert operations
Originally requested by one of the hardfought admins

Adjust all active window ports (tty, curses, win32, Qt, X11) to store
the itemflags that they receive with each item.

Also, make those active window ports understand the new
MENU_ITEMFLAGS_SKIPINVERT flag by skipping any menu items with that
setting during invert_all and invert_page operations.

Build testing and rudimentary functionality testing was carried out
on each of the window ports listed above.

The code was also modified on some non-active window ports (Qt3, gem,
gnome) but it was not tested for build or function there.

The desired functionality expressed was to be able to select a
single object category, and use the @ "invert all" function to
exclude that one and select all the others.

The "invert all" function's behavior of also including things
like "select all" and BUCX menu items made the feature unuseful
for that purpose.
2019-12-23 10:44:07 -05:00
Pasi Kallinen
fc0596d529 Fix Qt compile 2019-12-23 17:24:41 +02:00
Pasi Kallinen
370cfad85a Fix X11 compile 2019-12-23 16:45:25 +02:00
nhmall
f3987d6d70 add a use of MENU_ITEMFLAGS_SKIPINVERT to pickup.c 2019-12-23 09:26:08 -05:00
nhmall
510d8514b6 tty update 2019-12-23 09:05:01 -05:00
nhmall
83fdda56fe curses updates 2019-12-23 08:53:58 -05:00
nhmall
7012e7046f add support for MENU_ITEMFLAGS_SKIPINVERT
Able to test:
win/tty
win/win32
win/curses

Unable to test:
win/X11
win/Qt
win/Qt3
win/gem
win/gnome
2019-12-23 08:36:44 -05:00
PatR
c9bc2f5a2a github issue #267 - giant {beetle,spider}
Increase weight of giant spider from 100 to 200; leave nutrition at 100.
Increase weight of giant beetle from 10 to 200; increase nutrition from
10 to 50.  Both are still size 'large'.

I've left giant ant with weight 10, nutrition 10, size 'tiny' so that
it doesn't become bigger than soldier and fire ants.

Fixes #267
2019-12-23 02:26:59 -08:00
nhw_cron
181470bf66 This is cron-daily v1-Dec-12-2019. guidebook updated: doc/Guidebook.txt 2019-12-22 20:37:03 -05:00
PatR
e0c67f49fc fix mysterious force bug
Subtracting one dungeon depth value from another had the subtraction
backwards and that yielded a negative value where a positive one is
expected.  If NH_RELEASE_STATUS were to be set to NH_STATUS_RELEASED
then this was at risk of crashing (if the bad subtraction yields -2,
rn2(diff+2) would divide by 0) since rn2()'s argument isn't validated
for released version.

fixes37.0 was confused, listing a couple of things that aren't bugs
in 3.6 as general fixes.  I suspect that the DLB one was fixed before
being exposed via git, so shouldn't be there at all.
2019-12-22 17:22:07 -08:00
PatR
6e136b19c4 X11_add_menu() 2019-12-22 17:05:42 -08:00
nhmall
d48f2a62ba doc bit 2019-12-22 19:04:35 -05:00
nhmall
e323a68dc7 unintended change fix 2019-12-22 18:53:39 -05:00
nhmall
308943aea4 groundwork for window port interface change to add_menu
groundwork only - window port interface change

This changes the last parameter for add_menu() from a boolean
to an unsigned int, to allow additional itemflags in future
beyond just the "preselected" that the original boolean offered.

There shouldn't be any functionality changes with this groundwork-only
change, and if there are it is unintentional and should be reported.
2019-12-22 18:28:24 -05:00
PatR
0f1284f068 wielding partial stack
If you're wielding a stack of N items, issuing the command to quiver
them asks whether you want to quiver N-1 of them (implicitly leaving
one wielded).  If you answer no then you're asked whether to quiver
all of them.  You could also give a count when picking the item to be
quivered and the stack would be split based on that.

However, if you have a stack of N items quivered, issuing the command
to wield them just did so, leaving the quiver empty.  And picking an
item ignored any count, so even explicitly asking for 1 (out of N)
wielded the whole stack.  Change 'w' to parallel 'Q'; if you try to
wield a quivered stack, you'll be asked whether to wield just 1 of
them.  For no, ask whether to wield the whole stack.  Or you can give
an explicit count when picking any stack in inventory to wield.

Both 'w' and 'Q' probably ought to handle the alternate/secondary
weapon similarly when it contains a stack.  This doesn't address that.
2019-12-22 14:51:05 -08:00
nhmall
9c0e8190eb urealtime.realtime was being calculated incorrectly
Looks like a merge gone awry perhaps.

Fixes #270
2019-12-22 17:23:18 -05:00
nhmall
4079c50cb3 urealtime.realtime was being incorrectly calculated
Looks like a branch merge gone awry perhaps.

fixes #270
2019-12-22 17:21:02 -05:00
PatR
c3fb94104b 'quick_farsight' option
Bite the bullet and add a special purpose boolean option to control
game behavior for random clairvoyance.  When objects or monsters are
discovered, it normally issues "you sense your surroundings" and
performs a getpos() operation which allows the player to browse the
map by moving the cursor around and getting 'autodescribe' feedback.
But there have been complaints that once the hero has the Amulet
(which triggers random clairvoyance even though hero isn't flagged
as having that attribute) the message and pause-to-browse become too
intrusive.

This was initially combined with the 'timed clairvoyance' fix because
they both bump EDITLEVEL to invalidate existing save files, but their
details don't interact so I separated them.
2019-12-22 13:40:59 -08:00
PatR
48a82fea8c fix github issue #266 - timed clairvoyance
When the hero has random clairvoyance, the code used
| (moves % 15) == 0 && rn2(2) != 0
(where 'moves' is actually the turn number) to decide when it would
kick in and show a portion of the map.  If the hero was fast enough
to get an extra move when the turn value met the (moves % 15) == 0
condition then clairvoyance could happen twice (or more if poly'd)
on the same turn.

The changes (one new field, reordering a few others) in 'struct
context' invalidate existing 3.7.0-x save files.

Fixes #266
2019-12-22 13:30:25 -08:00
Bart House
be47c0303d Merge branch 'NetHack-3.6' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6 2019-12-21 17:04:49 -08:00
nhmall
08dd9acf92 post-release windows binary fix 2019-12-21 20:02:37 -05:00
PatR
9b9925828a Unix Makefile.utl
Build feedback filtered by a script which filters out -Dthis -Wthat:
gcc -g -I../include -I../lib/lua-/src -c ../win/share/tilemap.c

The second -I is obsolete or else its bogus value would have caused
build failure.  When removing it, I noticed that there was still quite
a bit of obsolete yacc and lex stuff in there.  Remove that too.
2019-12-21 16:57:53 -08:00
nhw_cron
78b64b6cb5 This is cron-daily v1-Dec-12-2019. files updated: Files 2019-12-21 19:51:34 -05:00
Bart House
7074b1c55f Prevent crash caused by division by zero in NetHackW. 2019-12-21 15:34:57 -08:00
Bart House
496a81d5b0 Get Visual Studio builds working once again. 2019-12-21 15:34:31 -08:00
Bart House
37a7d624be Ensure front tile size is non-zero to avoid divide by zero exceptions. 2019-12-21 13:14:14 -08:00
Bart House
fb044c1a9f Bump in manifest to reflect latest store release. 2019-12-21 13:13:43 -08:00
nhmall
bdb8edff11 attempt to get all 3.7.0 builds working in travis successfully
multiple flavours of unix including bionic and xenial
multiple Windows builds including visual studio and mingw
msdos cross-compile on unix
2019-12-21 14:22:24 -05:00