The code to choose a likely target when applying a polearm was
basing its decision on visible spots which contained monsters,
so could expose the location of a hidden monster if there was
only one such spot within polearm range. Not mentioned in the
report: it also wouldn't pick remembered, unseen monster unless
there was a monster still at that spot.
I've changed it to choose candidate location based on the glyphs
shown rather than on the presence of monsters.
Orc heroes get an extra food item ("to compensate for generally
inferior equipment") and it could randomly be lembas wafers (or
cram rations), and Ranger heroes always started with cram rations
even when they're orcs. Fixing the latter was simple, but the
normal race-based substitutions weren't applied to randomly
generated items, so the fix for the former required a bit of code
reorganization in ini_inv().
Elf heroes already get lembas instead of cram; do the reverse for
dwarves (although I don't think this case can happen--no role gets
lembas wafers and only orcs and always-human tourists get random
food); give orc heroes tripe instead of either lembas or cram.
> [1. perm_invent is kept in flags so persists across save/restore, but
> perm_invent capability can change if player restores with a different
> interface--or same one running on a different-sized display--so it
> ought to be in iflags instead.]
Not addressed here.
> 2. perm_invent window does not get updated when charging a wand (or
> other chargeable item presumably), with a scroll of charging.
Most scrolls rely on useup() -> update_inventory(), but charging uses up
the scroll early so that it will be gone from inventory when choosing an
item to charge. It needed an explicit update_inventory() after charging.
> 3. update_inventory(), is called from setworn(), which is called from
> dorestore(), when loading a save. Segfaults have been observed in
> variants based on this code (though not yet in vanilla 3.6.1), so it's
> possible this may be unsafe. The update_inventory() call in setworn()
> could be protected with "if (!restoring) ..."
tty doesn't support perm_invent, so this might be a win32 issue.
I've made the suggested change, but a better fix would be to turn off
perm_invent as soon as options processing (new game) or options restore
(old game unless/until #1 gets changed) has finished setting things up,
then turn it back on at the end of moveloop()'s prolog when play is
about to start.
= =
Most of the read.c change is reordering prototypes to match the order
of the corresponding functions. I did this when adding a new static
routine, then ended up discarding that routine.
There was a prior report about this but I can't find it; maybe it
didn't go through the web contact form. Anyway, status_hilite
threshold numeric values wouldn't accept a minus sign before the
digits, preventing negative AC values from being tracked.
From Bart...
When we are creating the console font for testing character widths,
we were not specifying width. Because of this, the created font's
average width might be larger then what we expect and we might
falsely detect that the font was inappropriate for playing Nethack.
Fix provides the width that we are expecting when creating the font.
Noticed while testing the fix for the recently reported clairvoyance
bug. I saw a '1' move onto an 'I', then when it moved again the 'I'
reappeared. The remembered unseen monster couldn't be there anymore
if the warned-of monster was able to walk through that spot, so
remove any 'I' when showing a warning (digit) to stop remembering an
unseen monster at the warning spot.
Nobody has ever reported this so fixing it isn't urgent, but fixing
it is trivial so I'm doing it in now (without the clairvoyance fix).
Mostly add a paragraph clarifying the classification of WONTFIX for
a reported bug ('I' unseen monster clobbers remembered object at the
location). It felt like it needed a parallel paragraph for monsters.
H7074 1311
> When moving from a pit into an adjacent pit, you "fall into" the pit and take
> damage. This happens even when you are walking back and forth between two pits,
> repeatedly, where you should have no way to fall.
>
> The intent seems to be that you can move into the adjacent pit without having
> to climb out of the first one, and this works properly - the only problem is
> that the pit gets triggered when you ought to have no distance to fall.
This is really just stumbling over uncleared clutter, not a pit fall.
There was already a way to clear the clutter between adjacent pits.
A couple of \e to \\ changes, a whole bunch of ^ to \(ha changes
(similar character but bigger so easier to see), ~ to \(ti (ditto),
and - to \- (first is a hyphen, second is a minus sign which is
bigger; see the difference for "- and | The walls of a room...").
As well as horizontal walls, open doors, top and bottom of swallow
and explode octagons, I changed command line switches -s, -X, and -D
to use minus sign. I was unsure whether the umpteen M-C should be
changed too. Since it was less work to leave them as-is, that's
what I did. I also left ^C with smaller circumflex punctation
instead of changing to bigger circumflex character for same reason.
The [much smaller] Guidebook.tex changes need testing.
Not fixed:
I think the sentence "you can type 'nethack -s all' on most versions"
is very misleading. Using 'versions' to refer to the various ports
rather than different releases is iffy, but my complaint is that
"typing something" sounds like an action you would perform while in
the game. Access to a command line and figuring out how to invoke
nethack from there is probably not something where "most versions"
applies any more. But I don't know how to rephrase that succinctly.
If I did, I would have just changed it....
The Guidebook.tex band in it breaks the creation of Guidebook.tex.
! Not a letter.
l.2701 \hyphenation{.
nethackrc}
?
For these simple one-time situations, just use \mbox{} to prevent
them from hyphenation instead.
The sample map was being rendered in a proportional-width font for
Guidebook.mn -> Guidebook.ps -> Guidebook.pdf so looked awful. It
is quite hard to believe that no one ever noticed this. I wasn't
sure how to force tty font, but it is straightforward to pick
constant-width variant of Roman which seems to be 'roff's universal
font.
Prevent ".nethackrc" from being hyphenated and split across lines.
Ditto for other file names in the same section even though they
hadn't been positioned in spots where they got split. I put same
thing into Guidebook.tex but I don't know whether their embedded
dots will become a problem there.
Loads of unmatched double quotes were confusing Emacs' nroff-mode
(which unlike tex-mode for Guidebook.tex, wasn't being activated
by default for Guidebook.mn). Supply missing closing quote for a
bunch of things, convert literal '"' to '\(dq' for ones that aren't
intended to have matching close quote. And change a bunch of
instances of "text" to ``text'' for rendering as quoted strings.
(There are a lot of single-quoted characters 'c' which should
probably be `c' instead, but I haven't touched those.)
There were several '\e' to render the 'escape' character, but that
is something which can be changed at will. Use '\\' to explicitly
show backslash instead. Change several ' - ' and '--' to '\(em'
for M-sized dash. Right now they all have <space>\(em<space> but
the spaces probably shouldn't be there.
Change instances of 'number_pad' to '.op number_pad' to have it
rendered as an option name.
Remove the obsolete sentence which said that "Elbereth" might be
conditionally excluded. (This change also made in Guidebook.tex.)
Split some wide lines (wide in the source, not after rendering),
although this wasn't done exhaustively. For the re-split lines,
put each sentence on its own line as suggested by 'roff' man page.
Fix the alignment of three short tables which use 'key dash meaning'
so that the dashes line up using Keni's .PS/.PL/.PE macros. (There
might be others that need this.)
Center the "- - - -" separator which precedes the list of dungeoneers
at the end. (Thinking about it now, possibly it should be forced to
have zero paragraph indentation prior to centering rather than tacking
on some trailing spaces to shift the non-blank part to the left. The
title for the table of display symbols might be in the same boat here.
But I'm roff'd out for the time being.)
Try to explain object filtering for commands that can take multiple
object classes combined with multiple BUCX states (and/or 'unpaid').
At the moment it is attached to the 'D' command where it is most
likely to be used, but probably ought to have its own subsection in
the Objects chapter so that it doesn't bog down the command list.
The filtering paragraph ought to be duplicated in Guidebook.tex, but
there's enough quoting going on that I didn't trust myself to attempt
an untested change.
Instead of modifying tmac.n's '.ux' macro, replace usage of it with
clone '.UX' (inline in Guidebook.mn in order to avoid modifying tmac.n
according to the author's wishes). '.ux' was used in several places
and neglected in a few others. Now all "UNIX" references use '.UX'
(unless I missed some...). Only the first generates a trademark
footnote. Also only the first adds the (r) superscript for registered
trademark; it would be better if that macro always showed (r) while
continued to show the footnote only once.
I made the mistake of making a bunch of small revisions all at once
and am not going to try to separate them out for separate commit.
I'm not sure they all got reviewed closely; I didn't spot any glaring
errors while scrolling through the formatted file.
The table of display symbols wasn't quoting the backslash used for
thrones so that symbol showed erroneously as blank. hbeam, vbeam,
lslant, and rslant (used for zap animations) were mislabeled as
"wall". (drawing.c used to have the same bug but it got fixed about
two years ago. Guidebook.tex still needs to have this fixed.)
In the section 'using a configuration file', the file name ".nethackrc"
ended up as a hyphenated split across two lines. That needs to be
fixed; the presence of a dash makes the spelling of the name become
ambiguous.
Several small tables that use <something><space+dash+space><something>
don't line up their dashes correctly.
I replaced most blank lines and also lines which begin with whitespace.
One notable exception is the sample map excerpt. It seems to format
as intended so I didn't try to tinker with it.
This reverts commit 206f9e43e9.
tmac.n contains a comment asking that modified versions not be
distributed. So back out the change which updated '.ux' with
the current trademark owner for "UNIX" so that we can continue
distributing with Guidebook.mn. We'll handle the out of date
trademark issue in another fashion.
The 'roff Guidebook's first reference to UNIX includes a footnote with
the trademark notice. Several subsequent ones do not. I think that's
ok; I think the '.ux' macro even keeps track and only issues it once.
But the extra ones aren't currently using '.ux' and probably should in
order to get the '(tm)' character. I'll leave that for someone else....
The history section mentions quite a few trademarked names. I hope
that the blanket "brand and product names are trademarks or registered
trademarks of their respective holders" is sufficient for them.