]> granicus.if.org Git - nethack/log
nethack
7 years agohigh priest extinction
PatR [Fri, 19 May 2017 23:51:05 +0000 (16:51 -0700)]
high priest extinction

This issue has been around for a while but wasn't noticable to players
until some post-3.6.0 tweaking of end of game disclosure.  When testing
the DUMPLOG artifact_score fix, I level teleported to the Astral Plane
and performed a cheat ascension.  Final disclosure listed high priests
as extinct.  Same thing would happen after visiting Moloch's Sanctum
instead.  (The latter didn't interfere with creating the Astral high
priests if you got that far, just as creation of the first one there
didn't prevent the other two.)

I forget why high priests are flagged as unique (something I think
I'm responisble for...), but they shouldn't share unique's setting of
extinct during monster creation.  (They could be set that way after 4
are created, but this fix doesn't do that.  It just treats them like
ordinary monsters so you'd need 127 or 255 or some such to make them
become extinct.  Unlike other creatures with a special creation limit,
high priests can be produced when aligned priests gain experience--an
event that I don't recall ever noticing happen.)

7 years agodumplog revisions
PatR [Fri, 19 May 2017 22:19:39 +0000 (15:19 -0700)]
dumplog revisions

I saw dumplog text in a newsgroup posting and the only way I could
recognize what version generated it was that "You entered the dungeon
N turns ago" included the missing-until-recently final period.  So,
put nethack's one-line version information as the very first dumplog
text and follow it with the dumped game's start and end date+time.
(That information is useful to know in its own right, but also should
prevent the build date+time shown with the version from confusing
anybody about when the dump was written.)

Along the way, I noticed that the 'counting' phase for artifact_score
was being repeated for '#if DUMPLOG' even though it doesn't generate
output.  That had a side-effect of adding points for artifacts twice
(applicable when final score was for an ascension or dungeon escape).

7 years agomore movement prefix vs invalid direction
PatR [Wed, 17 May 2017 01:45:04 +0000 (18:45 -0700)]
more movement prefix vs invalid direction

If user enters Fz when 'cmdassist' is off, respond with "Invalid
direction for 'F' prefix." instead of "Unknown command 'Fz'."

7 years agofix #H5462 - failed F-attack gives misleading msg
PatR [Tue, 16 May 2017 23:22:43 +0000 (16:22 -0700)]
fix #H5462 - failed F-attack gives misleading msg

Report was for 'F' followed by '.' reporting "cmdassist: Invalid
direction key!" and then by a direction grid (which happened to
include '.' for self).  That behavior applied for all the movement
prefix keys ('m', 'G', &c).  When 'cmdassist' was off, "F." would
yield "Unknown command 'F.'." instead.

Now you'll get "You can't fight yourself.", either instead of the
"invalid direction key" part of cmdassist feedback (followed by a
direction grid which excludes up, down, and self since they aren't
applicable for prefix keys) or of the "unknown command" result.
Likewise, "You can't run upward." or "You can't rush downward."
for "G<" and "g>", respectively.

7 years ago'A' vs blindfold
PatR [Thu, 11 May 2017 23:26:35 +0000 (16:26 -0700)]
'A' vs blindfold

Fix an inconsistency with blindfold removal, eliminating possibility
of a panic (3.6.0) or an impossible (since mid-December, 2016).  The
'A' command treated blindfold removal as a multi-turn operation, the
rest of the wear/unwear code as single-turn operation so didn't try
to guard against it being disrupted.

7 years agofix #H5245 - levitation boots message sequencing
PatR [Sat, 6 May 2017 21:47:28 +0000 (14:47 -0700)]
fix #H5245 - levitation boots message sequencing

Report was for
  You finish taking off your boots.
  You float gently to the altar.  [destination was a red herring]
  [take some action to run through moveloop() for next turn]
  Your movements are slowed slightly because of your load.

Having float_down() do the next encumbrance check instead of
waiting for moveloop() to do so was straightforward.  However,
while testing I noticed the reverse situation (not due to the fix
for the above) when putting on levitation boots
  Your movements are now unencumbered.
  You finish your dressing maneuver.
  You start to float in the air!

Having float_up() do the encumbrance check isn't adequate to fix
this, because it takes multiple turns to put on boots but the
properties they confer are enabled immediately, so moveloop() runs
while hero is already levitating even though the game hasn't told
the player about it yet.  Fix is a hack to defer the effect of
levitation on encumbrance until the boots are fully worn, which
might lead to strangeness somewhere.  It's also boot-specific so
will need to be updated if some other multi-turn armor that confers
levitation ever gets added.

7 years agofix #H5416 - misleading attribute message
PatR [Sat, 6 May 2017 01:32:40 +0000 (18:32 -0700)]
fix #H5416 - misleading attribute message

Report was for losing strength when sitting on a throne, but the
message issue was more general than that.  Character was wearing
gauntlets of power, so no visible change in strength took place,
but player was told "you're already as weak as you can get" (because
the attempt to reduce strength didn't change current strength;
however, it did change the hero's underlying strength, observable
once the gloves were removed).

There was a beta report last January that was related:  in that case
the player thought that gauntlets of power were preventing blessed
potion of gain ability from raising strength, but it was actually
giving a misleading message claiming that strength was already as
high as it could get.

Fix:  vary the message when something prevents an attribute change
from being noticeable.

7 years ago^X/enlightenment tweaks
PatR [Fri, 5 May 2017 01:03:12 +0000 (18:03 -0700)]
^X/enlightenment tweaks

Noticed while working on something else:
  You entered the dungeon N turns ago
was missing the terminating period, and when polymorphed into a
1 hit die critter, plural "hit dice" is incorrect.  0 hit dice is
confusing even when fully spelled out, so include an explanatory
remark with it.

Don't include score (available if configured with SCORE_ON_BOTL)
unless player has the 'showscore' option enabled.  The value is
an approximation--accurate as far as it goes, but the value can
change depending upon how the game ends.  Someone who asks to have
it displayed on the status line will probably be used to that, but
others might start reporting bugs for it.

8 years agocouple of formatting bits
PatR [Sat, 29 Apr 2017 23:55:38 +0000 (16:55 -0700)]
couple of formatting bits

timeout.c:  the luck timeout expression caused a bit of thought trying
to decide whether it was doing what was intended (it was).  Add some
parentheses so that thought is no longer required.  ;-)

worn.c:  fix up a macro where automated reformatting mistook a
bitwise-and operation for a cast applied to the address of something.

8 years agosetmangry fixes
PatR [Fri, 21 Apr 2017 00:06:28 +0000 (17:06 -0700)]
setmangry fixes

Some discussion in the newsgroup about nearby peaceful monsters becoming
hostile if they observed the hero attacking a peaceful monster made me
look at the code and I spotted a couple of problems.  An auto array was
being initialized in an inner block--some pre-ANSI compilers couldn't
handle that.  Worse, it was inside a loop and may or may not have
resulted in unnecessary setup each iteration.  Make it static.  Oddly,
the array had the same name as a function but `gcc -Wshadow' either
didn't notice or didn't care.

A more significant problem was that mon->mpeaceful was being set to 0
without checking whether mon->mtame was set, potentially resulting in
humanoid pets being both tame and hostile at the same time.  This change
prevents that but doesn't do anything interesting about pets who observe
attacks against peacefuls.  (I also wonder why chaotic peacefuls now get
upset by seeing other peacefuls be attacked; it seems out of character.)

There was also a check for non-humanoid peacefuls seeing another of the
same species be attacked, but it was checking for an exact match without
regard for littler or bigger incarnations of the same species.  I've
added the latter.

This also reformats a couple of block comments.

8 years agofix #H5333 - overview annotation for quest summons
PatR [Wed, 12 Apr 2017 00:58:14 +0000 (17:58 -0700)]
fix #H5333 - overview annotation for quest summons

The automatic annotations supplied for various special levels were
treating the quest leader's summons as being mutually exclusive with
the other things of interest.  It's not, so wasn't shown if the entry
portal was on either the bigroom level or the rogue level.  Handle it
differently from the rest so that it can stack with annotations for
those levels.  (The annotation for the portal itself, which doesn't
get added until traversed, was already handled differently and shown
correctly on those levels.)

8 years agoautodescribe vs DUMPLOG
PatR [Sun, 9 Apr 2017 02:54:18 +0000 (19:54 -0700)]
autodescribe vs DUMPLOG

Keep getpos's autodescribe feedback out of the DUMPLOG message history.
Unfortunately it still gets put in interface-specific message history
and is liable to fill up the buffer there, forcing actual old messages
to be flushed away.

8 years agoautodescribe vs detection
PatR [Sun, 9 Apr 2017 02:39:43 +0000 (19:39 -0700)]
autodescribe vs detection

Temporary map views for detection or #terrain allow moving the cursor
around to get the brief location description provided by getpos's
autodescribe feature and were doing so by forcing the 'autodescribe'
option to True, then leaving it that way.  Save the option value prior
to such operations and restore it after instead of leaving it changed.

8 years agofix #H5264 fix
PatR [Wed, 5 Apr 2017 19:44:55 +0000 (12:44 -0700)]
fix #H5264 fix

MSGTYPE handling was being suppressed, except during prompting when
it was intended to be suppressed.

8 years agopartial fix for #H5216 - sortloot inconsistency
PatR [Thu, 30 Mar 2017 23:12:21 +0000 (16:12 -0700)]
partial fix for #H5216 - sortloot inconsistency

The tie-breaker for the qsort comparison routine used for 'sortloot'
had its logic backwards.  Instead of retaining the original relative
order for tied items, it inadvertently reversed them.  So a chest
containing
  club
  dagger named A
  dagger named B
  dagger named C
  long sword
would alternate between that order and
  club
  dagger named C
  dagger named B
  dagger named A
  long sword
each time the chest's contents were examined.  This fixes that, and
also simplifies the unnecessarily convoluted bless/curse state handling.

The other half of the report was a request that 'sortloot:n' not do
any sorting.  Right now, if the player has 'sortpack' set then
'sortloot:n' results in grouping into object classes within pack order
rather than not sorting at all.  (Also, armor and weapons are further
ordered within their groups:  armor by slot [helms, gloves, shields, &c]
and weapons by function [ammo, launchers, missiles, 'ordinary', pole-
arms].)  I think the proper fix is to add a new setting for 'sortpack'
which yields the current behavior before changing 'n' to leave things
in their unsorted order.

8 years agomaybe fix #H5264 - screen clears on prompting
PatR [Thu, 30 Mar 2017 21:14:38 +0000 (14:14 -0700)]
maybe fix #H5264 - screen clears on prompting

I couldn't reproduce the reported problem of the "In what direction?"
being issued after the screen was cleared, but bypassing pline() in
favor of putstr(WIN_MESSAGE) for tty prompts did also bypass
  if (vision_full_recalc) vision_recalc(0);
  if (u.ux) flush_screen(1);
done in pline().  Inadvertent loss of the latter could conceivably be
responsible for the problem.  If so, the escape code used by cl_end()
may be broken for somebody's termcap or terminfo setup since clearing
to the end of the line in the message window shouldn't erase the rest
of the screen.

Regardless, the prompting change also bypassed the ability to show
the prompt with raw_printf() if the display wasn't fully intialized
yet, so some change to the revised prompting was necessary anyway.

Switching back from putstr(WIN_MESSAGE) to pline() resulted in
duplicated entries in DUMPLOG message history, one with bare prompt
followed by another with response appended, so more tweaking was
needed.  The result is use of new custompline() instead of normal
pline().  custompline() accepts some message handling flags to give
more control over pline()'s behavior.  It's a more general variation
of Norep() but its caller needs to specify an extra argument.

8 years agotty prompting fix and DUMPLOG of prompts+answers
PatR [Tue, 21 Mar 2017 02:11:48 +0000 (19:11 -0700)]
tty prompting fix and DUMPLOG of prompts+answers

Update DUMPLOG's message history to include player responses to
most queries.  For tty, both getlin() and yn_function().  For other
interfaces, only yn_function() is covered.  (It's intercepted by a
core routine that can take care of the logging; getlin() isn't.)
Also includes saved messages from previous session(s), for the
interfaces which support that (tty), to fill out the logging when
a game ends shortly after a save/restore cycle.

The tty interface was using pline() to display prompt strings.
Having 'MSGTYPE=hide "#"' or 'MSGTYPE=hide "yn"' in .nethackrc
would suppress many prompt strings (in the two examples mentioned,
entering extended commands or the vast majority of yes/no questions,
respectively) and generally lead to substantial confusion even if
done intentionally, so switch to putstr(WIN_MESSAGE) instead.

8 years agofix Bell of Opening segfault
PatR [Fri, 17 Mar 2017 10:20:11 +0000 (03:20 -0700)]
fix Bell of Opening segfault

Noticed on nethack.alt.org; the Bell of Opening could trigger a
segfault if applied near a trap door or bear trap (and a few others)
that had no monster at the trap location.  Reproducible if done
while mounted; {open,close}{fall,hold}ingtrap() would try to access
monst->mx and monst->my of a Null monst pointer if given one when
u.usteed was non-Null.

8 years agofix #H5188 - getting an artifact break illiterate
PatR [Tue, 14 Mar 2017 12:27:45 +0000 (05:27 -0700)]
fix #H5188 - getting an artifact break illiterate

To-be-3.6.1 bug, caused by a patch (of mine...) incorporated about
a week after 3.6.0 was released that was intended to be for naming
Sting or Orcist.  Any artifact creation ended up breaking illiterate
conduct whether user-assigned naming was involved or not (because
oname() is always used to apply the name, not just when do_name() is
executing).

This should be handled differently but I don't want to go through
the dozen and half or so calls to oname() to add an extra argument.

8 years agomore control key formatting
PatR [Mon, 13 Mar 2017 22:43:08 +0000 (15:43 -0700)]
more control key formatting

The previous fix to use highc(UNCTRL(x)) worked for ^A through ^Z,
but not for NUL (yielded ^` instead of usual ^@) or ^[ through ^_
(yielded lowercase ^{ and so on).  The problem was UNCTRL(); it
shouldn't have been forcing on the lowercase bit to begin with.
Also, the code that used UNMETA() for formatting wouldn't work as
intended for M-control char since it stripped off the 8th bit but
didn't apply any fixup for control chars.

Just get rid of ISCTRL/ISMETA/UNCTRL/UNMETA and use the existing
visctrl() routine instead.  (Its 3.6.0 edition didn't handle
M-control char, but the to-be-3.6.1 branch has done so since a
week or two after the 3.6.0 release.)

8 years agoShow control key combos with uppercase alpha
Pasi Kallinen [Mon, 13 Mar 2017 18:32:43 +0000 (20:32 +0200)]
Show control key combos with uppercase alpha

Instead of ^r, show ^R, as that one is used everywhere.

8 years agoDocument explicitly what m-prefix does to each command
Pasi Kallinen [Mon, 13 Mar 2017 15:17:58 +0000 (17:17 +0200)]
Document explicitly what m-prefix does to each command

8 years agodumplog message history groundwork
PatR [Sat, 11 Mar 2017 00:41:49 +0000 (16:41 -0800)]
dumplog message history groundwork

Separate the message logging out of pline so that other things (for
instance, one-line summary for quest block messages) can be logged.
The code that utilizes this isn't ready for prime time yet.

For FREE_ALL_MEMORY, release DUMPLOG message history when saving.
(Actually, this frees it unconditionally rather just doing so for
FREE_ALL_MEMORY.)  It was being freed when logged at end of game,
but not during save.  If dumplog message history and interface
message history get integrated, the existing message history
save/restore handling should become applicable instead.

8 years agovanquished monsters tidbit
PatR [Sat, 11 Mar 2017 00:35:49 +0000 (16:35 -0800)]
vanquished monsters tidbit

Use the same terminology ("creatures" rather than "monsters") for
the two "no <foo> {have been, were} vanquished" messages as for the
"disclose vanquished <foo>" prompt and its "M <foo> vanquished"
summary.

8 years agodumplog fixes: genocide list, survivor's tombstone
PatR [Mon, 6 Mar 2017 08:22:00 +0000 (00:22 -0800)]
dumplog fixes: genocide list, survivor's tombstone

The dumplog data was including a final tombstone unconditionally,
which looked awfully strange for characters who didn't die.  Make
it conditional, like actual end-of-game tombstone.  (One difference
though:  dumplog has a tombstone for hero who died from genocide,
end-of-game does not.  I think the latter should display one even
though no grave gets generated.)  [Potential for future enhancement:
add some alternate ascii art in place of tombstone for survivors.]

The list of genocided and/or extincted species was never shown
since caller passed 'a' to list_genocided() and it expected 'y'.
Also, once shown, the list entries were lacking indentation that
other sections of the dump generally have.

Both vanquished monsters and genocided/extinct monsters included
a blank line separator even when there was no feedback, making a
noticeable gap in the dumplog text.  Have them report "no creatures
vanquished" and "no species genocided", when applicable, so that
their separator lines always have something to separate.

When dumping, omit a couple of blank lines each from vanquished
creatures list, genocided species list, and tombstone so the
relevant sections of the dump are more compact.

8 years agomore DUMPLOG lint
PatR [Sun, 5 Mar 2017 03:45:15 +0000 (19:45 -0800)]
more DUMPLOG lint

The recently added dumplog code assumed that 'time_t' is 'long int'
or at least will give sensible results when formatted with '%ld'.
This is more of a Band-Aid(tm) than a proper fix.

8 years agodumplog's saved_plines[]
PatR [Mon, 27 Feb 2017 10:54:14 +0000 (02:54 -0800)]
dumplog's saved_plines[]

Use a simple ring buffer instead of a flat array that needed to have
49 pointers shifted down a slot every time a pline message was issued.

'saved_plines[saved_pline_index]' is the oldest message in the buffer
and the next slot to use when adding a new one.

8 years agomiscellaneous formatting
PatR [Sun, 26 Feb 2017 02:29:31 +0000 (18:29 -0800)]
miscellaneous formatting

8 years agodumplog lint and formatting
PatR [Sun, 26 Feb 2017 02:27:21 +0000 (18:27 -0800)]
dumplog lint and formatting

8 years agoAdd end-of-game dumplogs
Pasi Kallinen [Sun, 19 Feb 2017 13:30:46 +0000 (15:30 +0200)]
Add end-of-game dumplogs

This is based on the "new" dumplog patch for 3.6.0, by Maxime Bacoux.

Define DUMPLOG to enable. By default only enabled for the TTY linux.

8 years agofix #H5082 - growing into opposite sex monster
PatR [Fri, 17 Feb 2017 20:24:24 +0000 (12:24 -0800)]
fix #H5082 - growing into opposite sex monster

When a female dwarf grows (via level gain) into a dwarf lord, it
changes sex as well as base monster form because all dwarf lords
are male.  The earlier fix for #H4276 (16-Mar-2016, to give an
alternate grow-up message acknowledging the change) used the wrong
monster form (monst's old one instead of new one).

8 years agosome fixes36.1 fixes
PatR [Sun, 12 Feb 2017 08:24:29 +0000 (00:24 -0800)]
some fixes36.1 fixes

Fix a couple of typos, change one entry which referenced internal
coding issues to a more general description for end-users, and remove
a duplicate about color handling for status hilites and menucolors.

(I've only skimmed through the first section.  There are likely more
inconsistencies in the file.)

8 years agofix rumors.tru typo
PatR [Wed, 8 Feb 2017 21:23:00 +0000 (13:23 -0800)]
fix rumors.tru typo

"They say that an ooze will bite your boots and a rockmole will eat them."

'rockmole' should be two words.  Also, rock moles won't eat leather
boots, so change 'will eat' to 'might eat'.

8 years agofix g.cubes eating green slime
PatR [Wed, 8 Feb 2017 21:10:15 +0000 (13:10 -0800)]
fix g.cubes eating green slime

Back when dead green slime left a corpse, gelatinous cubes wouldn't
eat that, but they would eat globs of green slime without being
affected.  Add the missing glob check so g.cubes will engulf globs
of green slime instead of eating those.

8 years agoFix #H5056/bz1086: Bug in Achievement Recording
Pasi Kallinen [Mon, 6 Feb 2017 14:42:33 +0000 (16:42 +0200)]
Fix #H5056/bz1086: Bug in Achievement Recording

Bug report was:

> "Completed sokoban" achievement was logged when picking up
> a randomly generated bag of holding in the gnomish mines.

The picking-up code was missing checks for the branches, so
you could get the achievements outside the correct branches.

8 years agoAllow changing max name len via hints file
Pasi Kallinen [Sun, 5 Feb 2017 07:59:56 +0000 (09:59 +0200)]
Allow changing max name len via hints file

8 years agoFix complaint about uninitialized variable
Pasi Kallinen [Fri, 27 Jan 2017 05:35:46 +0000 (07:35 +0200)]
Fix complaint about uninitialized variable

8 years agoFix Valgrind complaint of uninitialized memory
Pasi Kallinen [Tue, 24 Jan 2017 18:56:15 +0000 (20:56 +0200)]
Fix Valgrind complaint of uninitialized memory

8 years agoFix use of freed memory when snuffing a potion of oil
Pasi Kallinen [Tue, 24 Jan 2017 18:19:37 +0000 (20:19 +0200)]
Fix use of freed memory when snuffing a potion of oil

8 years agoDocument paranoid_confirm:all
Pasi Kallinen [Mon, 23 Jan 2017 15:14:04 +0000 (17:14 +0200)]
Document paranoid_confirm:all

8 years agotribute typos
PatR [Fri, 20 Jan 2017 08:37:24 +0000 (00:37 -0800)]
tribute typos

8 years agoPrevent a segfault with leashed vanished monster
Pasi Kallinen [Thu, 19 Jan 2017 17:46:37 +0000 (19:46 +0200)]
Prevent a segfault with leashed vanished monster

It's apparently somehow possible to have a leash "attached" to
a monster not present on the current level. Complain instead of
segfaulting. (This is a post-3.6.0 bug)

8 years agoAccessibility: option to prevent status line updates
Pasi Kallinen [Tue, 10 Jan 2017 20:19:00 +0000 (22:19 +0200)]
Accessibility: option to prevent status line updates

Apparently some screen readers keep reading the status lines
at the bottom of the screen when parts of those change.
Add an option to prevent updates to those lines.

8 years agoShow all statusline info in #attributes
Pasi Kallinen [Tue, 10 Jan 2017 18:45:16 +0000 (20:45 +0200)]
Show all statusline info in #attributes

8 years agoFix mnearto return value confusion
Pasi Kallinen [Sat, 31 Dec 2016 22:21:53 +0000 (00:21 +0200)]
Fix mnearto return value confusion

This caused appeased shopkeepers returning to their shops being killed.

8 years agoSilence Yet Another Valgrind complaint
Pasi Kallinen [Thu, 29 Dec 2016 17:19:00 +0000 (19:19 +0200)]
Silence Yet Another Valgrind complaint

8 years agoSilence some Valgrind errors
Pasi Kallinen [Wed, 28 Dec 2016 20:52:02 +0000 (22:52 +0200)]
Silence some Valgrind errors

Need to have the allocated memory explicitly cleared for Valgrind
to know it.  We should probably start using calloc or something...

8 years agoModified player name list to include new team members.
karnov [Wed, 28 Dec 2016 04:08:05 +0000 (23:08 -0500)]
Modified player name list to include new team members.

8 years agoFix valgrind complaint in wizmode terrain
Pasi Kallinen [Fri, 23 Dec 2016 11:34:06 +0000 (13:34 +0200)]
Fix valgrind complaint in wizmode terrain

The code was writing characters into row[x-1] in the loop, but putting the
string terminator at row[x], leaving one character between uninitialized.

8 years agotty's compress_str(), core's dat/keyhelp
PatR [Tue, 20 Dec 2016 20:43:35 +0000 (12:43 -0800)]
tty's compress_str(), core's dat/keyhelp

Rewrite 3.6.1's compress_str() to avoid peeking past the end of the
input string.  This should eliminate the reported valgrind complaint.
The problem was noticed for post-3.6.0 code introduced [by me...] last
June, but it looks like it was present in the old code too.

Also, fix the wording in the paragraph about NUL in the keyhelp text.

tty_putstr() always passes non-message window text through compress_str(),
clobbering usage of two spaces to separate sentences.  putstr()'s caller
ought to have more control over that (possibly via its hardly ever used
'attribute' arg?).

8 years agoFix wishing for tins of specific type
Pasi Kallinen [Wed, 14 Dec 2016 16:27:57 +0000 (18:27 +0200)]
Fix wishing for tins of specific type

I believe this bug already existed, but was only exposed by
my wishing parser change post-3.6.0

8 years agoSet max players in sysconf, not in the shell script
Pasi Kallinen [Wed, 14 Dec 2016 14:45:06 +0000 (16:45 +0200)]
Set max players in sysconf, not in the shell script

8 years agoImpossible instead of segfault in cursed
Pasi Kallinen [Mon, 12 Dec 2016 15:42:02 +0000 (17:42 +0200)]
Impossible instead of segfault in cursed

While fuzz testing, I've seen segfault a handful of times in here,
coming from do_takeoff(). Looks like context.takeoff.what is stale,
having WORN_BLINDF, but we're not wearing the blindfold anymore.

Haven't been able to trace it down yet, so guard it with impossible.

8 years agofix #H4597 - sitting on level teleport trap
PatR [Fri, 9 Dec 2016 01:22:59 +0000 (17:22 -0800)]
fix #H4597 - sitting on level teleport trap

During #sit:  "You sit down.  You step on a level teleporter."
Switch to alternate phrasing for #sit.

Webs and polymorph traps had similar issues.

8 years agofix #H4706 - non-zero hit points for poison death
PatR [Fri, 9 Dec 2016 00:39:55 +0000 (16:39 -0800)]
fix #H4706 - non-zero hit points for poison death

For "the poison was deadly" against hero, hit points were set to -1
(which gets displayed as 0 when shown) but the status lines weren't
being updated, so stale positive HP value was visible during final
disclosure.

8 years agofix some recent lint
PatR [Fri, 9 Dec 2016 00:01:09 +0000 (16:01 -0800)]
fix some recent lint

8 years agoFix segfault when attacked while polyed into disenchanter
Pasi Kallinen [Wed, 7 Dec 2016 18:23:07 +0000 (20:23 +0200)]
Fix segfault when attacked while polyed into disenchanter

The pointer keeping tabs of monster's current weapon was
not cleared.

How to trigger: Get hit by a monster wielding a weapon,
teleport to another level, poly into disenchanter, get hit
by any monster with AD_PHYS attack and not wielding any weapon.

8 years agoFix some issues found with fuzz testing
Pasi Kallinen [Wed, 7 Dec 2016 15:53:03 +0000 (17:53 +0200)]
Fix some issues found with fuzz testing

Mostly to do with relocating monsters when the level is already full,
and unsticking a monster if it gets relocated.

8 years agoAdd missing symbols to Blank symset and Guidebook
Pasi Kallinen [Sun, 4 Dec 2016 19:38:59 +0000 (21:38 +0200)]
Add missing symbols to Blank symset and Guidebook

8 years agoFix segfault when looking at detected monster hiding under unknown armor
Pasi Kallinen [Fri, 2 Dec 2016 20:03:10 +0000 (22:03 +0200)]
Fix segfault when looking at detected monster hiding under unknown armor

This segfault happened when a detected monster such as a garter snake was
hiding under an unknown/unseen armor of a type that has no description
field (eg. a leather armor), and you farlooked at the monster.

At the same time, simplifies the code a tiny bit.

8 years agoMerge branch 'ais523-movespeed' into NetHack-3.6.0
Alex Smith [Fri, 2 Dec 2016 17:10:37 +0000 (17:10 +0000)]
Merge branch 'ais523-movespeed' into NetHack-3.6.0

8 years agoMake Ogresmasher grant 25 constitution
Pasi Kallinen [Mon, 14 Nov 2016 18:22:33 +0000 (20:22 +0200)]
Make Ogresmasher grant 25 constitution

8 years agoMake Dragonbane confer reflection when wielded
Pasi Kallinen [Mon, 14 Nov 2016 17:34:16 +0000 (19:34 +0200)]
Make Dragonbane confer reflection when wielded

8 years agoFix wrong material for novels
Pasi Kallinen [Sun, 13 Nov 2016 13:25:40 +0000 (15:25 +0200)]
Fix wrong material for novels

HI_PAPER is color, PAPER is material - the novel object definition
was using the wrong one. The caused the novel material to be gold.

8 years agoChangelog for movement speed changes
Alex Smith [Sat, 12 Nov 2016 01:28:47 +0000 (01:28 +0000)]
Changelog for movement speed changes

8 years agoMake free actions easier to predict, nonfree actions more predictable
Alex Smith [Sat, 12 Nov 2016 01:24:03 +0000 (01:24 +0000)]
Make free actions easier to predict, nonfree actions more predictable

This fixes melee kiting more comprehensively (it now doesn't work
against slower monsters either), and prevents you doing things like
opening up a gap when running from an imp (you couldn't do that in
3.4.3).

8 years agoSanity check for returning Mjollnir animation
Pasi Kallinen [Fri, 11 Nov 2016 16:18:55 +0000 (18:18 +0200)]
Sanity check for returning Mjollnir animation

8 years agoMake older corpses not taste okay
Pasi Kallinen [Thu, 27 Oct 2016 18:44:38 +0000 (21:44 +0300)]
Make older corpses not taste okay

Post-3.6.0 change made practically all corpses taste okay.
Change it so there's always a 10% chance for the corpse
to taste terrible, and increase the chance if the corpse
is slightly old.

8 years agoMerge branch 'ais523-elbereth' into NetHack-3.6.0
Alex Smith [Fri, 21 Oct 2016 22:30:09 +0000 (23:30 +0100)]
Merge branch 'ais523-elbereth' into NetHack-3.6.0

8 years agoAccept custom level annotations at the level teleport prompt
Pasi Kallinen [Tue, 18 Oct 2016 20:19:12 +0000 (23:19 +0300)]
Accept custom level annotations at the level teleport prompt

via UnNetHack, original implementation by aaxelb

8 years agoWith fragile wands, use snap instead of break
Pasi Kallinen [Tue, 18 Oct 2016 16:42:20 +0000 (19:42 +0300)]
With fragile wands, use snap instead of break

8 years agoChangelog for the Elbereth changes
Alex Smith [Tue, 18 Oct 2016 15:52:21 +0000 (16:52 +0100)]
Changelog for the Elbereth changes

8 years agoWielding Demonbane prevents demons summoning friends
Pasi Kallinen [Tue, 18 Oct 2016 15:07:53 +0000 (18:07 +0300)]
Wielding Demonbane prevents demons summoning friends

8 years agoUgh, why does NH3's commit process have to differ from NH4's?
Alex Smith [Mon, 17 Oct 2016 17:29:09 +0000 (18:29 +0100)]
Ugh, why does NH3's commit process have to differ from NH4's?

8 years agoChange the rules for Elbereth erosion
Alex Smith [Mon, 17 Oct 2016 17:26:44 +0000 (18:26 +0100)]
Change the rules for Elbereth erosion

If you attack a monster under Elbereth protection, and it wasn't
scuffed by the attack itself, then it'll be automatically removed
with an alignment penalty. It no longer fades from scaring monsters;
only from being abused to attack monsters while protected.

8 years agoDifferentiate between monster anger from attacks and from other causes
Alex Smith [Mon, 17 Oct 2016 17:15:57 +0000 (18:15 +0100)]
Differentiate between monster anger from attacks and from other causes

setmangry() and wakeup() were being used for multiple purposes. Add an
extra parameter to track which. This fixes several minor bugs (e.g.
whether monsters with no eyes were angered by (useless) gaze attacks
against them previously depended on the state of a UI option, and
the Minetown guards would be annoyed if you used a cursed scroll of
tame monster on a shopkeeper). It's also a prerequisite for the
Elbereth changes I'm working on.

8 years agoFix engrave.c; I used the wrong commit command
Alex Smith [Mon, 17 Oct 2016 16:34:08 +0000 (17:34 +0100)]
Fix engrave.c; I used the wrong commit command

8 years agoMake the Elbereth restrictions more flavour-consistent
Alex Smith [Mon, 17 Oct 2016 16:31:00 +0000 (17:31 +0100)]
Make the Elbereth restrictions more flavour-consistent

Elbereth now has to be on a square by itself; it's hard to justify
why text before it would prevent it working if text after it fails
to prevent it working.

8 years agoWielding Trollsbane prevents trolls from reviving
Pasi Kallinen [Sat, 15 Oct 2016 16:47:04 +0000 (19:47 +0300)]
Wielding Trollsbane prevents trolls from reviving

8 years agoPut throne room gold in the chest
Pasi Kallinen [Sat, 15 Oct 2016 07:26:20 +0000 (10:26 +0300)]
Put throne room gold in the chest

8 years agoX11: Handle define-lines in NetHack.ad
Pasi Kallinen [Fri, 14 Oct 2016 13:43:49 +0000 (16:43 +0300)]
X11: Handle define-lines in NetHack.ad

xrdb can load a X recource file with #define-lines, but NetHack
cannot. Substitute the defines in Makefile during compile.

Requires grep

8 years agomore lint and formatting
PatR [Thu, 13 Oct 2016 19:08:06 +0000 (12:08 -0700)]
more lint and formatting

Fix a C89/C90 complaint about a declaration following executable code.
The rest is formatting (of stuff I saw rather than systematic fixups).

8 years agoAllow toggling menu for any travel target list
Pasi Kallinen [Thu, 13 Oct 2016 17:16:21 +0000 (20:16 +0300)]
Allow toggling menu for any travel target list

8 years agoOccasionally remove maze dead ends, creating loops
Pasi Kallinen [Wed, 12 Oct 2016 15:39:24 +0000 (18:39 +0300)]
Occasionally remove maze dead ends, creating loops

8 years agolint fix
PatR [Tue, 11 Oct 2016 23:03:45 +0000 (16:03 -0700)]
lint fix

8 years agoShow correct keybind in ext cmd list
Pasi Kallinen [Tue, 11 Oct 2016 20:03:32 +0000 (23:03 +0300)]
Show correct keybind in ext cmd list

8 years agoFree allocated memory
Pasi Kallinen [Tue, 11 Oct 2016 15:34:41 +0000 (18:34 +0300)]
Free allocated memory

8 years agoFix valgrind complaint
Pasi Kallinen [Tue, 11 Oct 2016 14:59:35 +0000 (17:59 +0300)]
Fix valgrind complaint

8 years agoAdd wizmode command to recreate current level
Pasi Kallinen [Tue, 11 Oct 2016 14:26:32 +0000 (17:26 +0300)]
Add wizmode command to recreate current level

8 years agoSometimes create mazes with wide corridors
Pasi Kallinen [Tue, 11 Oct 2016 09:45:24 +0000 (12:45 +0300)]
Sometimes create mazes with wide corridors

...and/or thick walls.

8 years agoUse even more enums
Pasi Kallinen [Mon, 10 Oct 2016 18:55:23 +0000 (21:55 +0300)]
Use even more enums

8 years agoUse more enums
Pasi Kallinen [Mon, 10 Oct 2016 13:18:14 +0000 (16:18 +0300)]
Use more enums

We're already using enums, so convert some already existing defines.

8 years agoDon't clobber up and down ext cmd binds
Pasi Kallinen [Sun, 9 Oct 2016 15:10:28 +0000 (18:10 +0300)]
Don't clobber up and down ext cmd binds

8 years agoGive quest guardians some equipment
Pasi Kallinen [Sat, 8 Oct 2016 18:09:31 +0000 (21:09 +0300)]
Give quest guardians some equipment

8 years agoTypofix
Pasi Kallinen [Sat, 8 Oct 2016 11:11:20 +0000 (14:11 +0300)]
Typofix

8 years agoHero polyed into ghoul can eat only non-veggy corpses or eggs
Pasi Kallinen [Sat, 8 Oct 2016 10:57:39 +0000 (13:57 +0300)]
Hero polyed into ghoul can eat only non-veggy corpses or eggs

Change via dNetHack.  Restrict heroes polymorphed into ghouls
so they can only eat non-vegan corpses and eggs.  This matches
more closely what pet ghouls prefer.

8 years agoAdd couple hallu monsters
Pasi Kallinen [Sat, 8 Oct 2016 10:16:46 +0000 (13:16 +0300)]
Add couple hallu monsters

8 years agoMake kicking activate statue trap
Pasi Kallinen [Sat, 8 Oct 2016 09:47:27 +0000 (12:47 +0300)]
Make kicking activate statue trap

Change via dNetHack

8 years agoPet starting apport equals your current charisma
Pasi Kallinen [Sat, 8 Oct 2016 08:55:22 +0000 (11:55 +0300)]
Pet starting apport equals your current charisma

8 years agokeybinding lint and formatting
PatR [Fri, 7 Oct 2016 20:14:54 +0000 (13:14 -0700)]
keybinding lint and formatting