]> granicus.if.org Git - nethack/log
nethack
5 years agoRevert "no devteam email for testing" NetHack-3.6
nhmall [Sun, 27 Oct 2019 19:01:09 +0000 (15:01 -0400)]
Revert "no devteam email for testing"

This reverts commit 721822a6555b45021509f513068cd0fe66ad774d.

5 years agono devteam email for testing
nhmall [Sun, 27 Oct 2019 18:59:18 +0000 (14:59 -0400)]
no devteam email for testing

5 years agoChange ZIP file layout to be flat.
Bart House [Sun, 27 Oct 2019 03:39:24 +0000 (20:39 -0700)]
Change ZIP file layout to be flat.

5 years agoMerge branch 'NetHack-3.6' of https://rodney.nethack.org:20040/git/NHsource into...
Bart House [Sun, 27 Oct 2019 03:12:09 +0000 (20:12 -0700)]
Merge branch 'NetHack-3.6' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6

5 years agoChanged travis email to once again send to devteam.
Bart House [Sun, 27 Oct 2019 03:11:21 +0000 (20:11 -0700)]
Changed travis email to once again send to devteam.

5 years agoModified travis builds to deploy the x86 windows build to github if tagged.
Bart House [Sun, 27 Oct 2019 03:09:14 +0000 (20:09 -0700)]
Modified travis builds to deploy the x86 windows build to github if tagged.

Moved the travis visual studio build bash script to live outside of
the travis YML file.  Updated the script to use powershell to generate
ZIP file form the binary results.

Deploy Windows build ZIP file to github releases if build has commit
has been tagged.  Build will be marked pre-release.

5 years agoparanoid_query bulletproofing
PatR [Sun, 27 Oct 2019 02:01:49 +0000 (19:01 -0700)]
paranoid_query bulletproofing

Make paranoid_query() (yn question requiring explicit "yes" answer)
protect itself from overly long prompt strings.  I'm not aware of
any specific overflowing queries so I temporary reduced QBUFSZ within
paranoid_query() in order to test.

For EDIT_GETLIN, don't use previous response as default if we loop
after neither "yes" nor "no" was given for paranoid confirm.

5 years agoFix wizmakemap leaving genocided monsters on map
Pasi Kallinen [Sat, 26 Oct 2019 16:56:03 +0000 (19:56 +0300)]
Fix wizmakemap leaving genocided monsters on map

If a genocided monster was in "limbo" (migrating to the same level),
wizmakemap put it back on map.

5 years agofix github issue #238 - 'scores' option v3.6.3.757eca7
PatR [Sat, 26 Oct 2019 06:11:06 +0000 (23:11 -0700)]
fix github issue #238 - 'scores' option

Fixes #238

For the three fields in the 'scores' option's argument: top, around,
and own, if any was separated from preceding one by space(s) rather
than slash and lacked a count prefix, the argument parsing skipped
over it.  So "10t/3a/o" and "10t 3a 1o" worked but "10t 3a o" ignored
the 'o'.  The issue report was about 'own' but there's nothing special
about 'own' itself; just that it doesn't warrant a count prefix and is
usually last (in other words, normally preceded by one or both of the
other two) so more likely to trip over this.

[I thought there was another report about 'scores' misbehaving (from
quite a while ago) but couldn't find one.  If it exists, it might have
been about the same thing.]

5 years agopull request #236 - tty's 'maxwin'
PatR [Tue, 22 Oct 2019 23:31:25 +0000 (16:31 -0700)]
pull request #236 - tty's 'maxwin'

'maxwin' was not being get up to date.  Just get rid of it.

5 years agofix H9344: remove_object: obj not on floor (heavy iron ball & chain)
nhmall [Tue, 22 Oct 2019 14:02:53 +0000 (10:02 -0400)]
fix H9344: remove_object: obj not on floor (heavy iron ball & chain)

5 years agofix recent bypass of obj placement
nhmall [Tue, 22 Oct 2019 13:40:10 +0000 (09:40 -0400)]
fix recent bypass of obj placement

5 years agoone new rumor
nhmall [Sun, 20 Oct 2019 15:21:47 +0000 (11:21 -0400)]
one new rumor

5 years agomimicking slime molds
PatR [Sun, 20 Oct 2019 00:38:27 +0000 (17:38 -0700)]
mimicking slime molds

Mimic-as-slime_mold needs to keep track of the fruit index the same
way that mimic-as-corpse keeps track of corpse's monster type.  The
mimic description was changing (for '/' and ';' feedback) whenever
the player assiged a new fruit name.

That wasn't noticeable when applying a stethoscope because
mimic-as-slime_mold always yielded "that fruit is really a mimic".
Change it to report the fruit's type instead of generic "fruit".

5 years agogrammar fix for "That walking shoes is really a small mimic"
nhmall [Sat, 19 Oct 2019 16:05:33 +0000 (12:05 -0400)]
grammar fix for "That walking shoes is really a small mimic"

5 years agosymset and roguesymset options
PatR [Sat, 19 Oct 2019 01:23:47 +0000 (18:23 -0700)]
symset and roguesymset options

For 'O's menu, make the current symbol set be pre-selected so that
the set in use is clearly marked while contemplating changing it.
Using Return or Enter will pick it again; Escape is now needed to
deliberately not make any selection.

Also, change several symbol set initializations to use the new method
of deciding whether the default symbols are still in place.

5 years agocontainers in shops
PatR [Fri, 18 Oct 2019 22:00:16 +0000 (15:00 -0700)]
containers in shops

Fix a couple of bugs I stumbled across while testing something else.
The sell prompt for a container dropped in a shop had phrasing issues.
This fixes a couple but there are more.  The message composition
assumes that contents fall into two categories:  those already owned
by the shop and those the shopkeeper is offering to buy from the hero.
But there is a third:  stuff the shopkeeper doesn't care about so
won't buy.  The count_contents() routine can supply total contents or
shop-owned contents.  Subtracting one from the other yields combined
hero-owned without any way to separate out shk-cares and don't-care.

5 years agoMerge branch 'NHTangles-NetHack-3.6' into NetHack-3.6
nhmall [Fri, 18 Oct 2019 15:00:45 +0000 (11:00 -0400)]
Merge branch 'NHTangles-NetHack-3.6' into NetHack-3.6

5 years agocurses - remove unused variable in curses_str_remainder()
k21971 [Thu, 17 Oct 2019 12:49:22 +0000 (08:49 -0400)]
curses - remove unused variable in curses_str_remainder()

and remove incorrect use of 'count' which could result in messages being
repeated indefiitely.

5 years agorevert part of 4b87e858aa - partly eaten food
PatR [Fri, 18 Oct 2019 01:55:35 +0000 (18:55 -0700)]
revert part of 4b87e858aa - partly eaten food

Partly eaten globs is seems to be can'o'worms and the hack I just
added to get_pricing_units() made things worse, so back that out.

5 years agofix #H9312 - partly eaten food in bones shop
PatR [Fri, 18 Oct 2019 01:45:56 +0000 (18:45 -0700)]
fix #H9312 - partly eaten food in bones shop

Dying in a shop while carrying partly eaten food would place that food
on the floor without marking it no_charge.  But marking it that way
wouldn't have helped because as bones data gets saved, every object on
the level has its no_charge flag cleared.  So 'no_charge' needs to be
explicitly set for partly eaten food in tended shops as a bones level
gets loaded.

Most of the shk.c diff is reformatting, but it does change the
get_pricing_units() routine to lie that the quantity is zero for
partly eaten food so that when multiplying with price it won't matter
whether the price has been forced to zero or been left non-zero.

5 years agospelling mistake in comment in recent commit
nhmall [Fri, 18 Oct 2019 01:26:59 +0000 (21:26 -0400)]
spelling mistake in comment in recent commit

5 years agozap colors
PatR [Thu, 17 Oct 2019 22:50:33 +0000 (15:50 -0700)]
zap colors

One of the comments for pull request #234 mentions that the colors
for sleep and poison are backwards.  Yellow dragons had green breath.
Green dragons would have had yellow breath if they used the normal
zap symbols, but they use the poison cloud one which is green so
they had green breath.  I rarely have color enabled and had never
noticed.  (At the moment I can't find where the switch from zap to
cloud is being done.)

Pull request #234 is based on #231, about control of the shield
effect animation when resisting.  But it changes struct flags so
would break 3.6.x save file compatibility.

5 years agogithub pull request #233 - plural of Nazgul
PatR [Thu, 17 Oct 2019 21:58:16 +0000 (14:58 -0700)]
github pull request #233 - plural of Nazgul

Fixes #233

makeplural() and makesingular() know that the plural of Nazgul is
Nazgul, but one of the hard-coded rumors didn't.

5 years agogithub pull request #235 - curses symbol set init
PatR [Thu, 17 Oct 2019 21:38:45 +0000 (14:38 -0700)]
github pull request #235 - curses symbol set init

Fixes #235

For initial options under curses, specifying 'DECgraphics' as a
boolean rather than as 'symset:DECgraphics' wasn't overriding the
new default 'symset:curses'.  Since previously DECgraphics was
rejected for curses, it's possible that no one noticed.

5 years agoanother thinko
PatR [Thu, 17 Oct 2019 12:17:08 +0000 (05:17 -0700)]
another thinko

5 years agocouple of curses symbol handling bits
PatR [Thu, 17 Oct 2019 12:07:03 +0000 (05:07 -0700)]
couple of curses symbol handling bits

Primary and rogue symbols were being set to default if primary hadn't
been given a value, possibly clobbering rogue symbols if those had
been given a value.  Initialize them independenly.

Return early from curses_convert_glyph() if the value doesn't have
the 8th bit set since it now deals exclusively with DECgraphics
handling.  Force a sane value for returning early on rogue level.

5 years agosymbol set reorganization
PatR [Thu, 17 Oct 2019 12:00:58 +0000 (05:00 -0700)]
symbol set reorganization

Change the way symbol sets are loaded to make them have the same order
as they appear in the symbols file rather than being reversed.

Revise dat/symbols so that the new ordering yields a result similar
to the old ordering, more or less.  I've added a few set descriptions.
The only substantive change is marking DECgraphics as primary-only
(not available on rogue level) and adding new set DECgraphics_2 which
is commented out near the end.

Define symbol handling H_MAC since one of the sets specifies
'handling: MAC'.  All H_MAC is used for now is to avoid showing
MACgraphics as a symset when compiled without MAC_GRAPHICS_ENV (which
was used for pre-OSX Mac by the old code in sys/mac/), so it will be
hidden for everyone.

I left handling H_CURS even though curses doesn't implement anything
for it.  It could do something when rendering the map or assign a
function to 'cursesgraphics_mode_callback' for special init or both
but hasn't needed to.  Since curses is now supporting DECgraphics,
define 'decgraphics_mode_callback' for it.  No value is being
assigned so that doesn't do anything; curses seems to be setting up
the primary character set as text and secondary one as line-drawing
without the need for that hook.

With the added set descriptions, 'O's symset menu looked horrible for
curses due to the way curses decides to set the width of menus and
the resulting line wrapping which took place because of a too-narrow
menu.  I've added a chunk of code to the options handling code which
shouldn't really be there but makes the menu much easier to read.

Lastly, do some formatting cleanup in files.c.

5 years agofix curses build warning and update fixes36.3
PatR [Wed, 16 Oct 2019 23:19:51 +0000 (16:19 -0700)]
fix curses build warning and update fixes36.3

Move a declaration that became mid-block when a preceding 'if () {'
got removed to top of block suppress warning about C99 feature.

Add new entry for the curses symset change to fixes36.3.

5 years agogithib pull request #232 - curses symset
PatR [Wed, 16 Oct 2019 22:52:00 +0000 (15:52 -0700)]
githib pull request #232 - curses symset

This time I'm putting things in as-is before making a few tweaks.

The pull request was three or four separate changes.  I used the
patch instead so they've been collected into one commit.

5 years agocomment typo
PatR [Mon, 14 Oct 2019 23:02:30 +0000 (16:02 -0700)]
comment typo

5 years agocurses decgraphics bit
PatR [Mon, 14 Oct 2019 09:53:19 +0000 (02:53 -0700)]
curses decgraphics bit

Array bounds error; thinko rather than typo.

5 years agofix use_inverse (aka wc_inverse) for curses
PatR [Mon, 14 Oct 2019 09:28:27 +0000 (02:28 -0700)]
fix use_inverse (aka wc_inverse) for curses

Highlighting for monsters shown due to extended monster detection and
for lava shown in black and white didn't work because that keys off
of 'iflags.use_inverse' (actually a macro for 'iflags.wc_inverse') and
curses wasn't enabling that window-capability option.  To be fair, it
was probably unconditional at the time the curses interface was first
developed.  It checked for whether a monster was supposed to be drawn
with inverse highlighting but wouldn't draw it that way because the
flag was always false.  Inverse b&w lava is relatively new and curses
hadn't been taught about it.

Various other things such as pets (if hilite_pet is on) and object
piles (if hilite_pile is on) get highlighted with inverse video when
use_color is off, regardless of whether use_inverse is on or off.
That's probably a bug.

5 years agopull request 229/#H9299 - DECgraphics for curses
PatR [Mon, 14 Oct 2019 00:41:24 +0000 (17:41 -0700)]
pull request 229/#H9299 - DECgraphics for curses

Fixes #230

Incorporate github pull request #230, support for DECgraphics-style
line drawing in the curses interface.  I've rewritten the
curses_convert_glyph() part so that it doesn't require C99 and
doesn't reinitialize its pair of arrays for every character written
to the map.  The DECgraphics conversion is now a straight char for
char one, DEC line drawing code to ACS, without regard to what map
symbol is intended or what 'cursesgraphics' uses for that symbol.

5 years agoFix monster triggering land mine accessing deleted trap
Pasi Kallinen [Sun, 13 Oct 2019 17:52:34 +0000 (20:52 +0300)]
Fix monster triggering land mine accessing deleted trap

mintrap -> thitm -> mondied -> relobj -> mdrop_obj ->
flooreffects -> deltrap

after calling thitm, the mintrap code was trying to access the trap.

5 years agoFix launched object accessing a deleted trap
Pasi Kallinen [Sun, 13 Oct 2019 17:40:54 +0000 (20:40 +0300)]
Fix launched object accessing a deleted trap

In launch_obj, the code first got the trap, then called ohitmon
(which can delete the trap by doing mondied -> fill_pit ->
flooreffects -> deltrap), then after that used the trap variable.

5 years agoFix addressing deleted trap when helping monster out of a pit
Pasi Kallinen [Sun, 13 Oct 2019 16:57:05 +0000 (19:57 +0300)]
Fix addressing deleted trap when helping monster out of a pit

Move reward_untrap before fill_pit, as the trap may get deleted.

5 years agoFix hero hiding under a statue shattered by land mine
Pasi Kallinen [Sun, 13 Oct 2019 16:16:38 +0000 (19:16 +0300)]
Fix hero hiding under a statue shattered by land mine

Trigger a land mine while being polymorphed into a monster that
automatically hides (eg. scorpion). Have the statue on the land mine
shatter and all items on that square scatter away. Avoid falling
into the pit left by the land mine.

5 years agofix part of #H9299 - DECgraphics symset comments
PatR [Sat, 12 Oct 2019 22:33:57 +0000 (15:33 -0700)]
fix part of #H9299 - DECgraphics symset comments

For the DECgraphics symbol set, down ladder is the greater-than-or-
equal-to character as intended and up ladder is less-than-or-equal-to,
but comments in dat/symbols had their descriptions transposed.

5 years agofix #H9298 - corpse mismatch
PatR [Sat, 12 Oct 2019 09:31:47 +0000 (02:31 -0700)]
fix #H9298 - corpse mismatch

Corpses for dying monsters were being created with the wrong type,
caused by incorrect block nesting for 'if (ptr)' from commit
ad302fb8a99a5795c4d206870ea6573349b2d92a (Oct 10).

5 years agoSouth Park reference - gnomes' business plan
PatR [Sat, 12 Oct 2019 01:33:32 +0000 (18:33 -0700)]
South Park reference - gnomes' business plan

If you chat with a peaceful gnome while hallucinating, you might
get a silly message from the TV show South Park.

To make it work for non-gnome characters, I changed the speech of
monsters who normally just grunt (gnomes, orcs, ogres, a couple
of other groups) to full humanoid when the hero is hallucinating.
(It already does that for orcs if the hero--hallucinating or not--
is an orc and for gnomes when the hero is a gnome.)

5 years agoFix priests and shopkeepers moving on other monsters
Pasi Kallinen [Fri, 11 Oct 2019 17:24:17 +0000 (20:24 +0300)]
Fix priests and shopkeepers moving on other monsters

5 years agoFix vault guard impossible
Pasi Kallinen [Fri, 11 Oct 2019 17:11:24 +0000 (20:11 +0300)]
Fix vault guard impossible

... when the guard is angry, and he's in the vault or in his corridor,
you're not in the vault nor in his corridor, and the level is full
so the guard cannot relocate.

5 years agoFix fired iron ball sanity error
Pasi Kallinen [Fri, 11 Oct 2019 17:00:17 +0000 (20:00 +0300)]
Fix fired iron ball sanity error

When hero was punished and swallowed, and fired the attached
iron ball from a quiver, thrownobj was not cleared.

5 years agomksobj failure
PatR [Fri, 11 Oct 2019 00:43:31 +0000 (17:43 -0700)]
mksobj failure

If mksobj() was told to initialize the object it's creating and the
object class was something it didn't understand, it would issue a
warning and return Null.  But an unknown object class is a severe
internal error and very few callers were prepared to deal with a
Null result, so change mksobj() to panic instead.  Also eliminate the
few attempts to deal with Null result that are present in mkobj.c;
I didn't go looking elsewhere.

5 years agocurses on unix - terminal reset needed after abort
PatR [Wed, 9 Oct 2019 20:18:34 +0000 (13:18 -0700)]
curses on unix - terminal reset needed after abort

Noticed while investigating the message loop.  If I had level files
from an interrupted game and was asked "Destroy old game?" when
starting a new one, answering 'n' left the terminal in an unusable
state.  Executing 'stty sane' (invisibly since input echo was off)
repaired things but the user shouldn't have to do that.

Change unixtty.c's error() to shut down windowing if that has been
initialized.  This might need some tweaking for tty, which will now
clear the screen before showing the startup error message.  Other
systems besides unix use unixtty.c so are affected, but I think the
change doesn't introduce anything that should cause trouble (aside
from the potential screen erasure).

5 years agoremove one band from a recent attempted warning correction
nhmall [Wed, 9 Oct 2019 00:17:01 +0000 (20:17 -0400)]
remove one band from a recent attempted warning correction

5 years agofix #H9266 - redundant obj init
PatR [Tue, 8 Oct 2019 21:23:27 +0000 (14:23 -0700)]
fix #H9266 - redundant obj init

Sword given to angels used obj->spe = max(obj->spe, rn2(4)) [except
using a temporary to sanely work with max() macro].  But the obj was
explicitly created as no-init, so obj->spe was always 0 and the max()
was pointless.  Shield given to angels was manipulating bless/curse
state directly instead of using the functions intended for that, a
no-no and also pointless to be clearing 'cursed' for a no-init item.

Mace for priests had useless handling for object creation failure.

Object creation failure could only happen if the mksobj() call had a
valid entry in objects[] (or out of bounds access that didn't crash)
for an object class that it doesn't know how to handle.  That can't
happen unless somebody screws up big time.  If it ever did happen,
it would have produced a memory leak.

5 years agoW_WEAPON -> W_WEAPONS
PatR [Tue, 8 Oct 2019 20:26:39 +0000 (13:26 -0700)]
W_WEAPON -> W_WEAPONS

Report #H9243 misinterpreted W_WEAPON as W_WEP and attributed a
hypothetical ball and chain sanity checking problem to that.
Rename the former to W_WEAPONS to emphasize that it includes
alternate/secondary weapon and quivered stack as well as wielded
weapon.

5 years agoFix ball and chain sanity
Pasi Kallinen [Tue, 8 Oct 2019 16:44:51 +0000 (19:44 +0300)]
Fix ball and chain sanity

Scatter did not consider the ball or chain, and moved them around, causing
ball and chain sanity error.

One way to trigger was being punished, with chain on a land mine and having
a monster trigger the mine. Now the chain will shatter, unpunishing the hero.

5 years agomore github 229 warning
nhmall [Tue, 8 Oct 2019 02:02:26 +0000 (22:02 -0400)]
more github 229 warning

5 years agomore unix username (#26 - validating #explore)
PatR [Mon, 7 Oct 2019 21:44:32 +0000 (14:44 -0700)]
more unix username (#26 - validating #explore)

I had this in place at one point but must have accidentally undone it
before deciding that yesterday's patch was finished.  Defer fetching
'pw' until it's needed.

5 years agofix github pull request #26 - validating #explore
PatR [Mon, 7 Oct 2019 00:30:18 +0000 (17:30 -0700)]
fix github pull request #26 - validating #explore

Fixes #26

Report stated that the attempt to look up the player's username
(on Unix) failed (reason unknown) and nethack refused to allow the
player to execute the #explore command even though sysconf was set
to use character names (CHECK_PLNAME=1) instead of user names.
Setting EXPLORERS to "*" overcomes this glitch, but the fix moves
a bit of code around to honor CHECK_PLNAME before fetching username
so that that isn't necessary.

I ended up doing some formattng clean up (replace tabs with spaces,
whitespace cleanup in 'port_insert_pastebuf()').  The actual change
to fix #26 is only a few lines.

5 years agoclear up some reported curses warnings
nhmall [Sun, 6 Oct 2019 13:07:49 +0000 (09:07 -0400)]
clear up some reported curses warnings

5 years agotty condition_size() name and return value
nhmall [Sun, 6 Oct 2019 02:17:48 +0000 (22:17 -0400)]
tty condition_size() name and return value

the return value from condition_size() was unused so
eliminate an unused variable warning and rename the function
to better reflect that it updates tty_status[NOW][BL_CONDITION].lth

5 years agotty xputc()
PatR [Sat, 5 Oct 2019 23:49:34 +0000 (16:49 -0700)]
tty xputc()

Another part of github issue 227.  Casting a function pointer when
passing it to another function is iffy when lying about the return
type.  tputs() expects a routine which returns int, so give it one.
Other xputc() usage is equivalent to putchar(), so define xputc()
with the same function signature as that has.

The tputs() declarations in system.h should probably be changed
(third argument is a function which takes an int rather than
unspecified parameters) but I've left them alone.  I made that change
to tputs() in sys/share/tclib.c though.

NT and MSDOS changes are untested.  tclib.c compiles ok with clang-
as-gcc on OSX but hasn't been tested with the port that uses it (VMS).

5 years agofix pull request #227 - running over engravings
PatR [Sat, 5 Oct 2019 23:42:13 +0000 (16:42 -0700)]
fix pull request #227 - running over engravings

Fixes #227

Travel, <ctrl><direction>, <g|G><direction> all stop on engravings,
but <shift><direction> told the player what the engraving said and
kept going.  The message output is buffered until map update or
another message, so player couldn't tell where hero was at the time
the engraving got shown.  Make <shift> running stop on engravings.

5 years agono-return usage in dlb_main.c
PatR [Sat, 5 Oct 2019 06:55:49 +0000 (23:55 -0700)]
no-return usage in dlb_main.c

More from github issue 229:  mark routines in util/dlb_main.c which
don't return as such and add some 'break' statements for compilers
that don't have support for that.

5 years agoglob pricing
PatR [Sat, 5 Oct 2019 00:53:01 +0000 (17:53 -0700)]
glob pricing

get_pricing_units() returns a long, so use long for intermediate steps
of the calculation.  Part of github issue 229, about mixing signed and
unsigned.

5 years agopotion mixing - healing vs "bad" potions
PatR [Sat, 5 Oct 2019 00:28:32 +0000 (17:28 -0700)]
potion mixing - healing vs "bad" potions

Another part of github issue 229, mixtype() didn't have either 'break'
or '/*FALLTHRU*/' separating healing from extra healing, extra healing
from full healing, and full healing from unicorn horn.  So dipping
"bad" potions (sickness, confusion, blindness, hallucination) into
healing/extra healing/full healing or vice versa operated the same as
dipping a unicorn horn into the bad potion (producing fruit juice for
sickness and water for the others).  It wasn't clear from the code
whether or not that was intentional.  It actually seems reasonable
(albeit suboptimal use of {plain, extra, full} healing), so continue
to allow it and make the code clear that it's intentional.

5 years agosortloot of tools
PatR [Fri, 4 Oct 2019 23:37:14 +0000 (16:37 -0700)]
sortloot of tools

Fix the first part of github issue 229.  sortloot_classify() tries to
group musical instruments separately from other tools, but missing
'break' in a 'switch' prevented that from happening--they were mixed
together.

Since that grouping isn't documented anywhere, only source divers
would ever notice that it wasn't working as intended.

5 years agofix #H9272 - "object lost" panic
PatR [Fri, 4 Oct 2019 23:12:08 +0000 (16:12 -0700)]
fix #H9272 - "object lost" panic

when polymorph causes loss of levitation boots or water walking boots
while over water.  If discarding stuff while trying to crawl out got
rid of the taken-off boots, they wouldn't be in inventory any more
when break_armor() tried to drop them after taking them off.

5 years agofix 'b&c distance' sanity check warning
PatR [Fri, 4 Oct 2019 22:16:51 +0000 (15:16 -0700)]
fix 'b&c distance' sanity check warning

when attempting to crawl out of water fails and hero is life-saved
or wizard-/explore-mode player declines to die.  If the hero is saved
by positioning him/her one step further away from ball and chain,
teleds() tries to drag them, but if 'emergency disrobe' left the hero
stressed or worse, dragging fails.  Ball and chain were being left
where they were, with chain no longer being adjacent to hero.

If drag_ball() fails, have teleds() teleport ball and chain to hero's
new spot, same as when that isn't within range of a one step drag.

5 years agofix #H9269 - potential panic due to window slots
PatR [Thu, 3 Oct 2019 22:45:43 +0000 (15:45 -0700)]
fix #H9269 - potential panic due to window slots

A couple of early returns could result in temporary windows getting
left around instead of being released for re-use, which in turn might
lead to a panic due to lack of available window slots.  The first
one is accompanied by an 'impossible' warning which no one has ever
reported and the second one could only happen if data file 'keyhelp'
was missing, so panic due to either of these is hypothetical as far
as released versions go.  Somebody making modifications could run
afoul of either of them though.

query_category() - switch from early return to 'goto' so that the
  temporary window used for a menu will always be destroyed;
whatdoes_help() - defer creating the display window until after the
  data file has been successfully opened so that early return won't
  need any window cleanup.

5 years agoupdate README.linux
nhmall [Wed, 2 Oct 2019 19:22:14 +0000 (15:22 -0400)]
update README.linux

closes #118

5 years agoyet more orc obj init
nhmall [Wed, 2 Oct 2019 18:58:21 +0000 (14:58 -0400)]
yet more orc obj init

5 years agomore orc obj init
nhmall [Wed, 2 Oct 2019 18:55:28 +0000 (14:55 -0400)]
more orc obj init

5 years agoGuidebook.txt update
nhmall [Wed, 2 Oct 2019 14:56:39 +0000 (10:56 -0400)]
Guidebook.txt update

5 years agoRevert "Guidebook.txt update"
nhmall [Wed, 2 Oct 2019 14:50:04 +0000 (10:50 -0400)]
Revert "Guidebook.txt update"

This reverts commit df7e6a0f2a5589dd58323a221c1654642fa8c5a3.

stamped with incorrect version

5 years agoGuidebook.txt update
nhmall [Wed, 2 Oct 2019 14:47:47 +0000 (10:47 -0400)]
Guidebook.txt update

5 years agofix a Guidebook.tex bit just noticed
nhmall [Wed, 2 Oct 2019 13:46:30 +0000 (09:46 -0400)]
fix a Guidebook.tex bit just noticed

5 years agoallow orctown booty items to be initialized in mksobj
nhmall [Wed, 2 Oct 2019 01:06:07 +0000 (21:06 -0400)]
allow orctown booty items to be initialized in mksobj

5 years agoupdate guidebook
nhmall [Tue, 1 Oct 2019 23:57:04 +0000 (19:57 -0400)]
update guidebook

5 years agofollow-on bits
nhmall [Tue, 1 Oct 2019 21:47:45 +0000 (17:47 -0400)]
follow-on bits

5 years agoautopickup exception priority in pull request 226
nhmall [Mon, 30 Sep 2019 14:54:03 +0000 (10:54 -0400)]
autopickup exception priority in pull request 226

The pull request #226 commentary follows:

One major limitation of the autopickup exception system is that you can't
define an exception from an exception, despite both menucolors and msgtypes
prioritizing rules based on the order they are defined in .nethackrc. This
is because the "always pickup" and "never pickup" exceptions are tracked in
different lists, and at runtime, when the player steps over an object, the
game checks these lists seperately, with "never pickup" taking precedence.
This means that if you want to pick up some but not all items matching a
given expression, you may need to write a long and kludgy list of regexes
to get the behavior you want.

I've edited the autopickup exception code to remove this necessity: now
the exceptions are stored in one list, and conflicts between them are
resolved based on their relative position in that list. Whether an
exception was inclusive or exclusive was already tracked individually;
I don't know why they were stored separately in the first place. This
edit makes the system both more convenient and more consistent with the
semantics of menucolors and msgtypes.

With these changes, the 33 autopickup exception rules in the wiki article
linked above may be replaced with the following 7 much simpler rules for
the exact same effect:

AUTOPICKUP_EXCEPTION=">.* corpse.*"
AUTOPICKUP_EXCEPTION="<.* newt corpse.*"
AUTOPICKUP_EXCEPTION="<.* lichen corpse.*"
AUTOPICKUP_EXCEPTION="<.* lizard corpse.*"
AUTOPICKUP_EXCEPTION="<.* floating eye corpse.*"
AUTOPICKUP_EXCEPTION="<.* wraith corpse.*
AUTOPICKUP_EXCEPTION=">.*\>.*"

closes #226

5 years agoMerge https://github.com/Vivit-R/NetHack into Vivit-autopickup-exceptions-3.6
nhmall [Mon, 30 Sep 2019 14:48:18 +0000 (10:48 -0400)]
Merge https://github.com/Vivit-R/NetHack into Vivit-autopickup-exceptions-3.6

5 years agoRemove redundant function "count_ape_maps"
HMM [Mon, 30 Sep 2019 06:12:06 +0000 (02:12 -0400)]
Remove redundant function "count_ape_maps"

5 years agoDelete unusued local variable
HMM [Fri, 27 Sep 2019 19:42:50 +0000 (15:42 -0400)]
Delete unusued local variable

5 years agoFix check_autopickup_exceptions to return null pointer if no exception is found
HMM [Fri, 27 Sep 2019 19:17:53 +0000 (15:17 -0400)]
Fix check_autopickup_exceptions to return null pointer if no exception is found

5 years agofix errant verb tense in some messages if pet or mon name ends in 's'
nhmall [Thu, 26 Sep 2019 15:49:15 +0000 (11:49 -0400)]
fix errant verb tense in some messages if pet or mon name ends in 's'

Report stated:
"Poes deliberately slither onto a polymorph trap!" ... it's only one cat, er,
black naga. Why does the parser treat the name as plural? There are lots of
singular words and names that end in -s or -es!

H9249 1780

5 years agoClean up stray comments
HMM [Wed, 25 Sep 2019 00:05:37 +0000 (20:05 -0400)]
Clean up stray comments

5 years agoMerging in autopickup exception rework
HMM [Tue, 24 Sep 2019 23:12:54 +0000 (19:12 -0400)]
Merging in autopickup exception rework

5 years agoRework autopickup exceptions to override one another like menucolors
HMM [Tue, 24 Sep 2019 22:20:49 +0000 (18:20 -0400)]
Rework autopickup exceptions to override one another like menucolors

5 years agofix uarmh null pointer dereference
nhmall [Tue, 24 Sep 2019 16:32:58 +0000 (12:32 -0400)]
fix uarmh null pointer dereference

uarmh null pointer dereference if a helm of opposite alignment came off due
to being polymorphed

fixes #225

5 years agofix add_to_minv panic when aklys kills enfulger
PatR [Mon, 23 Sep 2019 22:16:39 +0000 (15:16 -0700)]
fix add_to_minv panic when aklys kills enfulger

Reported directly to devteam rather than via the web contact form:
throwing wielded aklys while swallowed would hit the engulfer and
return to the hero's hand but leave a stale 'thrownobj' pointer if
the monster survived.  Under usual circumstances, throwing anything
else or throwing the aklys again when not engulfed would clear that
pointer, putting things back to normal.  However, killing any engulfer
with the same weapon would try to add it to engulfer's inventory to
be dropped as it died.  If the killing blow was via melee rather than
another throw, the object in question would still be in hero's
inventory instead of free, hence panic.

The initial returning-aklys implementation shared Mjollnir's code
which doesn't have this issue.  This reverts from having attached
aklys always returning successfully when thrown while swallowed to
Mjollnir's 99% chance of return and 99% to be caught when it does
come back.  (That was already the case if the engulfer was killed by
the throw, where hero wasn't swallowed anymore after the damage was
inflicted.)

5 years agocorrect spelling mistake on stupefied
nhmall [Mon, 23 Sep 2019 18:19:15 +0000 (14:19 -0400)]
correct spelling mistake on stupefied

As reported in github issue 224

Fixes #224

5 years agofix #H9232 - message phrasing for openholdingtrap
PatR [Sun, 22 Sep 2019 22:03:52 +0000 (15:03 -0700)]
fix #H9232 - message phrasing for openholdingtrap

Zapping wand of opening or spell of knock at self while trapped:
"You are released from pit."
ought to be
"You are released from the pit."
Likewise for most of the other held-in-place situations.

Also, when released like that vision wasn't being recalculated right
away to update line of sight to reach beyond the edge of the pit.

5 years agofix github issue 223 - rubbing ring on touchstone
PatR [Thu, 19 Sep 2019 19:48:41 +0000 (12:48 -0700)]
fix github issue 223 - rubbing ring on touchstone

Fixes #223

The touchstone code treated all rings as if they had gemstones, but
quite a few don't and feedback could be unexpected.  Cited case was
an iron ring yielding a cyan (hi_metal) streak instead of the normal
iron result ("scritch, scritch").  A gold ring yielded a yellow
streak rather than a golden scratch.  I didn't test silver ring but
suspect it yielded a silver streak rather than a silvery scratch.

This changes touchstones to treat non-gemstone rings like other
classes of objects instead of like gems.  I made mineral rings keep
acting like gemstone rings--I'm not sure whether that's right.

5 years agofix github issue 221 - unfixable troubles
PatR [Wed, 18 Sep 2019 18:37:11 +0000 (11:37 -0700)]
fix github issue 221 - unfixable troubles

Fixes #221

Routine unfixeable_trouble_count() is used for both applying a unicorn
horn (possibly internally via #monster if poly'd into a unicorn) and
drinking a blessed potion of restore ability.  For the latter case, it
always gave the wrong answer (unless the hero happened to be all of
Sick and Stunned and Confused and Hallucinating and Vomiting and Deaf).
Since the actual count wasn't used to decide whether hero felt "great"
or just "good", having any of those conditions would hide the problem.

5 years agogithub pull request - man page typo
PatR [Sun, 15 Sep 2019 01:04:33 +0000 (18:04 -0700)]
github pull request - man page typo

Fixes #205

"at last" should be "at least".  doc/nethack.txt is now out of date.

5 years agogithub pull request - "You are <a foo>[.]"
PatR [Sun, 15 Sep 2019 01:00:39 +0000 (18:00 -0700)]
github pull request - "You are <a foo>[.]"

Fixes #215

A post-3.6.2 change added a message for life-saving which lack its end
of sentence punctuation.

5 years agogithub pull request - fake mail
PatR [Sun, 15 Sep 2019 00:52:02 +0000 (17:52 -0700)]
github pull request - fake mail

Fixes #216

A github pull request changed one of the fake mail messages so that
our web site's URL is added at compile time instead of being hard-
coded.  However, it wouldn't compile with a pre-ANSI compiler since
it relied on concatenating adjacent string literals.  This is more
complex but achieves the same result, and also makes the existing
run-time subsitution be a bit clearer.

Testing was a hassle but eventually successful.

5 years agouse faster method to write characters to VGA in msdos port
nhmall [Fri, 13 Sep 2019 04:38:04 +0000 (00:38 -0400)]
use faster method to write characters to VGA in msdos port

chasonr's comments in github pull request #220:
It was necessary, when updating the MS-DOS port for 3.6, to revise the
screen-clearing and character-drawing functions, because the background
color is no longer zero. But the 3.6.1 method is rather slow, using
write mode 2 and a lot more calls to outportb.

outportb is expensive when running under a virtual machine, the typical
use case for the MS-DOS port these days, because it traps to the
hypervisor rather than actually writing to hardware.

This change restores the speed of the 3.4.3 version. The adapter is left
in write mode 0. Clearing is accomplished by writing zero to planes where
the background color has a zero bit, and 0xFF where the background color
has a one bit. Characters are drawn by writing 0x00, 0xFF, the font data,
or the inverse of the font data, as appropriate, to each plane.

When testing, be sure to use OPTIONS=videomode:vga, because autodetect
will go to VESA mode if it can.

closes #220

5 years agoMerge branch 'chasonr-msdos-vga' into NetHack-3.6
nhmall [Fri, 13 Sep 2019 04:36:32 +0000 (00:36 -0400)]
Merge branch 'chasonr-msdos-vga' into NetHack-3.6

5 years agoUse faster method to write to VGA
Ray Chason [Fri, 13 Sep 2019 03:04:15 +0000 (23:04 -0400)]
Use faster method to write to VGA

5 years agofix github issue 218 = hallu vs passive gaze
PatR [Fri, 6 Sep 2019 21:39:25 +0000 (14:39 -0700)]
fix github issue 218 = hallu vs passive gaze

Fixes #218

Hallucinating hero has 75% to be unaffected by a gaze counterattack
that paralyzes.  Check for that before checking free action (100%
chance to be unaffected).  The only change is that player might get
different feedback when both forms of protection against the gaze.

5 years agofix github issue 210 - dead code in sp_lev.c
PatR [Fri, 6 Sep 2019 21:27:40 +0000 (14:27 -0700)]
fix github issue 210 - dead code in sp_lev.c

Fixes #210

Subject was 'Bad loop condition in sp_lev.c'.  Some object creation
code had handling for something that couldn't happen due to the logic
leading up to it.  I couldn't figure out any way to make it useful so
just remove the dead code.

5 years agoPrevent a possible impossible when guard relocated a monster
Pasi Kallinen [Fri, 6 Sep 2019 19:09:03 +0000 (22:09 +0300)]
Prevent a possible impossible when guard relocated a monster

5 years agofix github issue 217 - monster spellcasting feedback
PatR [Mon, 2 Sep 2019 09:59:09 +0000 (02:59 -0700)]
fix github issue 217 - monster spellcasting feedback

Fixes #217

Feedback when spellcasting monster aimed at the wrong spot due to not
being able to see an invisible hero only gave the intended message if
hero couldn't see self.  The code was using 'if (Invisible)' which
checks whether the hero is invisible and can't see invisible, when it
should have been using 'if (Invis)' which just tests whether the hero
is invisible.

It wouldn't surprise if the same problem occurs elsewhere.  Those
macros are rather error prone.

The issue report mentions that one of the affected messages might be
unreachable.  I didn't investigate that.

5 years agocurses menu coloring
PatR [Sun, 1 Sep 2019 06:51:59 +0000 (23:51 -0700)]
curses menu coloring

Have the 'menucolors' option control menu color pattern matching
(instead of curses-specific 'guicolor') for all menus, not just for
the persistent inventory window.