Commit Graph

3637 Commits

Author SHA1 Message Date
PatR
2b818949b0 Revert "doc/tmac.n: UNIX trademark"
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.
2018-04-15 16:41:42 -07:00
keni
662380bf8c fix makedefs.6 formatting errors 2018-04-15 16:12:19 -04:00
keni
ce38567aeb fix makedefs.6 formatting errors 2018-04-15 13:56:55 -04:00
keni
6cf611cbc7 Merge remote-tracking branch 'origin/NetHack-3.6.0'
(required manual merge in include/config.h)
2018-04-15 13:50:59 -04:00
PatR
206f9e43e9 doc/tmac.n: UNIX trademark
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.
2018-04-14 19:21:04 -07:00
nhmall
68b1d0c7ba doc update 2018-04-14 19:01:15 -04:00
nhmall
a972554d7e more Guidebook symbols 2018-04-14 18:46:14 -04:00
nhmall
97a2995c28 spotted a typo in Guidebook.tex 2018-04-14 17:53:37 -04:00
nhmall
7945d517f4 more Guidebook 2018-04-14 17:34:05 -04:00
nhmall
fbb7aaaa63 bump the Guidebook date 2018-04-14 17:30:45 -04:00
nhmall
8acfd6dbef Three apparently didn't require it
Even though they appeared in a document as being "special"
food, fountain, and lava symbol didn't require the quote sequence
2018-04-14 17:08:51 -04:00
nhmall
1c180fd09c TeX characters with special meaning 2018-04-14 17:06:16 -04:00
nhmall
b8ea930e46 fix a heading and table column misalignment in doc/Guidebook.tex 2018-04-14 16:57:48 -04:00
PatR
5086c89658 doc formatting
Remove trailing spaces from doc/fixes36.1 (only a couple),
doc/Guidebook.mn (several), and doc/Guidebook.tex (many).  I re-split
some lines made wider by embedded formatting directives, but tried to
avoid getting carried away with that.

I think I added one missing period to Guidebook.mn and one missing
comma to Guidebook.tex.  Aside from that, they should format the same
as they did before this patch.
2018-04-14 13:13:42 -07:00
PatR
77da2fdc65 tty EDIT_GETLIN fix for wrapped prompt
When a getlin() response is being typed, it wraps to second line if
the cursor tries to go past COLNO-1, but if a previous response is
treated as part of the prompt, using pline() to write prompt+space+text
wraps at a whole word boundary.  tty's getlin() assumes that the screen
position can be derived from that prompt+space+text_so_far but that
doesn't match if wrapping at a word boundary leaves blank space at end
of the top line.

When a prompt is accompanied by default answer, output the answer
separately instead of pretending it is part of the prompt.  Line-wrap
should occur at same point as when it was originally typed and avoid
the confusion about how far to back up when deleting characters.

This hasn't been exhaustively tested but it seems to work correctly
for ordinary input, input erased one character at a time, and input
killed all at once.  One thing which definitely hasn't been tested is
having the prompt itself be so long that it needs to wrap.
2018-04-13 04:32:05 -07:00
PatR
44eed82d41 'm ^V' (aka 'm C-v')
Allow the 'm' prefix for wizard mode level teleport command.  Using
it skips the initial prompt for level destination and goes directly
to the menu of special level locations that you get when answering
'?' to that prompt.
2018-04-09 13:48:43 -07:00
PatR
8710c2c29a minor fix for #annotate
Some github feedback pointed out that getting annotation input from
the player behaved differently from similar input for naming of
monsters and objects.  The complaint stated that hitting <return>
without supplying any input removed the old annotation, where other
naming would leave the old name intact.  3.6.0 did misbehave that
way; current code does too if EDIT_GETLIN is disabled but behaves
as desired when it's enabled.  (There's nothing that I can spot in
donamelevel() to explain why.  I'm confused.  Is tty_getlin()
returning the default answer instead of empty if that default text
is deleted at the prompt and no new text entered prior to <return>?)

Make donamelevel() work like mon/obj naming.  Empty input leaves
existing annotation, if any, intact.
2018-04-08 17:04:24 -07:00
PatR
38df5360e0 fix #H7039 - autodescribe of hallucinated statue
Having the autodescribe feature enabled and moving the cursor onto
a statue yields "statue of a <mon>" under normal circumtances, but
when done while hallucinating the feedback was just blank (because
the lookat() code couldn't find any monster at statue's location).
Now it will be "<random mon>" (not "statue of a <random mon>")
instead, same as when moving cursor over glyphs of actual monsters.
2018-04-07 16:08:10 -07:00
nhmall
c24d13f391 another guidebook typo 2018-04-07 08:38:17 -04:00
Pasi Kallinen
056a544f5a Missing word 2018-04-06 17:58:11 +03:00
Pasi Kallinen
b87dfdbecd Guidebook: Just list the extended command
... the same way the extra key binds are listed just above.
2018-04-06 08:50:35 +03:00
Pasi Kallinen
095a00e0fc Guidebook: Move ladders into stairs section 2018-04-06 08:46:08 +03:00
Pasi Kallinen
57cadfd387 Capitalize NetHack correctly 2018-04-06 08:00:50 +03:00
nhmall
b0817ee88a gb typo fix 2018-04-05 20:49:12 -04:00
nhmall
4357f644b0 gb sync 2018-04-05 18:51:50 -04:00
nhmall
c9acbf8d14 more Guidebook updates 2018-04-05 17:59:52 -04:00
nhmall
b7d07e0d91 guidebook updates today's date and dungeoneers columns 2018-04-05 07:50:49 -04:00
PatR
e1552679e2 DUMPLOG map fix
I once changed dump_map() to suppress blank lines as it processed the
known portion of current dungeon level so that no blank lines would
be shown above the mapped area and at most one would be shown below.
Any blank lines within were put back.  But the count of the current
block of suppressed lines wasn't being zeroed when an internal gap
did get put back, so after that every line got spurious blank lines
inserted in front of it.  I'm surprised that no one seems to have
discovered this problem.

This fix also changes the dumped map to suppress trailing spaces.  In
the process, I noticed that the original DUMPLOG code was clobbering
column COLNO-1 if that was ever part of known map.  buf[x - 2] = '\0'
overwrote the final map character in buf[] with the terminator.
2018-04-04 18:27:13 -07:00
Pasi Kallinen
4318aa8c04 Guidebook fix, 4 column dungeoneers 2018-04-03 20:41:53 +03:00
PatR
6faff71a17 fix another 'wonky secret door'
The cavemen quest description includes an 'S' in the lower right
corner of the MAP...ENDMAP section of the locate level.  It produced
a secret door as intended but did not have horizontal vs vertical set
because the latter was only being done for DOOR directives.  Instead
of adding an explicit directive, make the loading code set horizontal
vs vertical for all doors.

This fixes the orientation of that secret door in the Cav locate
level, but I noticed that it showed up an a visible horizontal wall
when the spots on either side were still blank.  It's behaving as
if the door is on a lit spot and the adjacent walls are unlit (this
misbehavior was already present before the current change; it was
just shown incorrectly as a visible vertical wall before).
2018-04-02 13:35:41 -07:00
PatR
f8e64b296c steed sanity check
Wizard mode sanity checking gave spurious "mon not on map" warnings
for steed when hero is mounted.  Steed is in the fmon list but not
expected to be present on the map.
2018-03-31 16:55:29 -07:00
PatR
c058826995 fix #H7015 - explosion chain reaction bug
The fix to prevent "crushed by a gas spore's explosion" set killer.name
to an empty string after a gas spore explosion finished, but that made
nested explosions end up with empty killer.name after the innermost
call completed.  explode() shouldn't have been hanging on to a pointer
to a global value that is subject to change while it executes.  Making
a local copy of the current value at the time explode() is called will
solve that (I hope...).

Simply reverting the reset of killer.name wouldn't have been correct.
The innermost explosion would still be clobbering killer.name for any
outer MON_EXPLODE explosions in progress.  When the only exploding
monster is gas spore, that wouldn't be noticeable.  But having other
types of exploding monsters and a chain reaction which affected more
than one type would have exposed that bug.  I think this fixes both
aspects of this problem but don't have a second type of exploding
monster to verify the second part.
2018-03-30 17:05:23 -07:00
Pasi Kallinen
a2f6a7bec9 Support EDIT_GETLIN for win32
... but only without popup_dialog
2018-03-27 20:24:05 +03:00
Pasi Kallinen
94ad7512a6 Compile-time option to allow some prompts remember the input
Define EDIT_GETLIN to make the tty, X11, and Qt4 windowports to
remember the input strings for wishing and annotation.
2018-03-26 23:04:53 +03:00
keni
123268e0c9 Merge remote-tracking branch 'origin/NetHack-3.6.0' 2018-03-22 16:27:26 -04:00
PatR
906818f5cb wishing for containers
Noticed while investigating the broken chest whose lock was already
broken:  wishing for locked, unlocked, or broken chest (or large box)
was treated as asking for something unknown.  Add support for those
three prefixes, although they only have meaning for chest and box.
If more that one is specified in the same wish, whichever one comes
last overrides the others.

Also, "empty" was already an accepted prefix (for tins); honor it for
containers too.

Lastly, wishing for "box" failed.  Give a large box instead.  I went
back and forth about whether to do the same for "small box" and ended
up not including it, but turns out that small/medium/large prefix for
globs ends up making "small box" and "medium box" match "box" which
has now become a synonym for "large box".  I'm not sure whether that
is a bonus or a bug; small box is clearly not the same thing as large
box, but getting the only available box when asking for any box seems
better than claiming not to understand the request.
2018-03-19 17:59:24 -07:00
PatR
0419f097f1 fix #H6960 - redundant feedback for '#force'
When using #force at a spot which has a broken or unlocked chest (or
large box) whose lock state has been previously discovered, avoid
|There is a broken chest here, but its lock is already broken.
|There is an unlocked chest here, but its lock is already unlocked.
by suppressing "broken"/"unlocked" from the chest description for
that particular message.

We might still want to change "broken chest" to "damaged chest" but
I don't think there should be any reference to its lock as the reason
it's broken or damaged.  The fact that #loot, #force, and applying a
key still treat it as a container is sufficient to reveal that it
functions as one.
2018-03-19 15:48:46 -07:00
nhmall
7238803b25 revert box naming 2018-03-19 07:13:07 -04:00
nhmall
8ce08d3cf9 3rd time fixes36.1 2018-03-18 09:09:08 -04:00
nhmall
168d5171b7 typo in fixes36.1
locks -> lock
2018-03-18 08:52:34 -04:00
nhmall
e7ed6508cd more message adjustments to chests with broken locks 2018-03-18 08:49:25 -04:00
nhmall
e07c6b5b77 broken large box wording change
> When you try to #force a large box or chest whose lock is already broken from a
> previous #force, the game tells you "There is a broken large box here, but its
> lock is already broken." It's minor, but this implies that the box being broken
> is separate from the lock being broken (as well as that the box itself *can* be
> broken).

change the wording to "lock-damaged box" and suppress
", but its lock is aleady broken" when "lock-damaged box" has
already been displayed.

(Nobody particularly likes the wording "lock-damaged box" either, but at least
it seems less misleading)
2018-03-17 23:05:52 -04:00
PatR
877f403734 fix plural of box
"boxen" may be hacker slang for plural of "box", but "foxen" is
definitely not the plural of "fox".  Restrict the "ox"->"oxen"
entry to full word "ox", not "*ox" suffix.
2018-03-15 13:05:08 -07:00
Pasi Kallinen
aac0a21a7e Make graves white
Making them easy to distinguish from walls.
2018-03-15 18:42:25 +02:00
Pasi Kallinen
a785663c58 Attempting to open down or at yourself is same as #loot
Trying to open at the same location as you did nothing,
make it loot instead. Apparently #looting is also annoying
when using vi-keys.

Based on code by aosdict
2018-03-14 20:15:21 +02:00
PatR
c28b44c27c prevent pline() segfault
The use of debugpline() in tty_curs() got me wondering what would
happen if debugpline() was called while pline() is in progress.  I
don't know how to trigger the bad coordinate situation, so I put an
unconditional debugpline() in the NHW_MESSAGE case of tty_putstr()
and used DEBUGFILES=wintty.c to enable it.  Instant segfault, and
the backtrace was short and not useful so the stack might have been
clobbered.  I didn't spend any time trying to figure where or why
the segfault occurred.

Change pline() so that if it is called while the previous pline()
hasn't finished yet (ie, recursively), use raw_print() and return
early.  The raw_print message isn't very useful--it pops up wherever
the cursor happens to be, just like the cursor position bug that has
been an issue recently--but does get delivered without any segualt
and isn't completely useless if DUMPLOG is enabled and you save or
quit before the message buffer gets recycled.  Message readability
situation could be improved but avoiding the segfault was my goal.

Putting any debugpline() into *_raw_print() would be inadvisable....
2018-03-13 11:27:04 -07:00
PatR
152d9e7705 fix #H6955 - wielded potion 'object lost' panic
Report classified this as 'segfault' but it's actually a controlled
panic().  When hero has lycanthropy and is wielding a potion of unholy
water while in human form, if that potion is boiled then it triggers
a transformation to beast form which in turn causes wielded weapon to
be dropped.  When the code unwinds back up through potionbreathe() to
destroy_item(), the boiled potion won't be found in inventory any more
and useup() -> useupall() -> freeinv() -> extract_nobj() panics.
2018-03-11 12:39:01 -07:00
keni
6afb3ead34 Merge remote-tracking branch 'origin/NetHack-3.6.0' 2018-03-10 19:14:11 -05:00
nhmall
6fc324798e H5239 not hypocrisy to speed up your own pet
H5239 1100
2018-03-10 13:17:21 -05:00
PatR
4328cf49ef fix prayer infinite loop
Reported internally, if a prayer resulted in 'fix all troubles' and
one of those was TROUBLE_STUCK_IN_WALL but safe_teleds() couldn't find
any place to relocate the hero to, nothing was done and STUCK_IN_WALL
would be found again as the next trouble to fix.  Since safe_teleds()
eventually resorts to trying every single spot on the map, there was
no other result possible than failing to find an available spot again,
nothing would be done, and next trouble would be STUCK_IN_WALL, ad
naseum.

I started out with a fix that looked for secret corridors to expose
and doors to open, to make more space available, then try to move a
monster off the level, then try digging out rock and/or walls and
smashing boulders.  None of those guarantee success and I got bogged
down by the digging case.  This was going to be a last resort if all
of those still failed to make somewhere to move the hero, but for now,
at least, I'm skipping all that other stuff and going directly to the
last resort:  give the hero Passes_walls ability for a short time, and
let him or her find own way out of trouble.  The next trouble to fix
won't be STUCK_IN_WALL because Passes_walls makes that a non-issue.

I'm not thrilled with the new messages involved but want to get this
behind me.
2018-03-03 16:46:39 -08:00