Pull request by entrez: refine the recent change to have buried
zombies be affected (emerge from ground sooner) by objects that
impact the ground on or near their burial spot.
Closes#1119
Change 852f8e4 by requiring a minimum impact before a buried zombie
nearby will be disturbed: light, but still excluding things like
scrolls, if it's a violent impact (dropped while levitating, thrown, or
kicked), and fairly heavy if the hero is just placing the item on the
ground normally.
Moving the call out of flooreffects meant it no longer applied to
pushing boulders around, so have moverock disturb nearby zombies. I
additionally had wake_nearby do the same thing.
Finally, I renamed check_buried_zombies (which doesn't really reflect
what it does) to disturb_buried_zombies.
My compiler didn't warn about this. The value conditionally gets set
but then isn't used anywhere besides that. For the time being, give
'skipped_noninuse' a fake use rather than eliminate it altogether.
'nethack --show' is rejected, which is ok, but the feedback is
'prscore: bad arguments (2)' which is pretty confusing.
Reject any --s unless it's the start of --scores or --showpath[s].
'nethack --show' will be rejected as "Unknown option: --show."
'nethack -show' is still accepted and will report that it can't find
any scores for how as it always has (assuming that there aren't any
score entries for "how" :-).
dosacrifice() into a separate routine.
Pull request from argrath: move the code that handles same-race
sacrifice into a separate routine.
Log message for commit d5fa2f8ba0.
Closes#1120
Pull request from entrez: clean up the if/else-if/else logic in
level_tele().
Trying things a little differently this time. This is an extra log
message for commit 4876b70b9b.
Closes#1115
Remainder of 'database-suggestions' pull request by entrez: named
fruit lookup when checking for data.base entries.
I'll admit that not sure what this actually accomplishes and am not
interested enough to figure it out myself.
This is the first time I've ever managed to do something useful with
'git cherry-pick', although I haven't tried much after early failures.
The other part of the pull request was dealt with manually earlier,
commit bc9518ca16.
Closes#1109
Use fruit_from_name instead of checking gp.pl_fruit directly so that
changing the fruitname won't cause fruits already in the player's
inventory to stop working with lookup.
Add a new option 'perminv_mode' to augment perm_invent. It handles
the same choices as the temporary TTYINV method: show all items other
than gold, show full inventory including gold, or only show in-use
items (similar to the '*' command).
For tty, both the all-except-gold and full-inventory modes can add
the poorly named 'sparse' variation which populates unused slots in
its fixed grid with the inventory letter that would go in each.
For others, the default has been changed from full-inventory to
all-except-gold. Note that gold is treated as part of 'all' or of
'in-use' if it is quivered because having the amount be shown on the
status line doesn't make that redundant.
Changing the default may mess up WinGUI if it assumes that perm_invent
is full inventory with gold.
Initially I was going to change perm_invent into a compound but this
leaves it as an on/off toggle and adds perminv_mode as a separate
option for how to show the inventory when the toggle is on. It may
make sense to combine them since dual controls is a little confusing,
but right now setting perm_invent On when perminv_mode is 'none'
changes that to 'all' and changing perminv_mode away from 'none' when
perm_invent is Off toggles it to On.
Guidebook.mn has been updated but as usual Guidebook.tex is lagging.
If there's room, avoid writing the column indicator (when one or more
entries have been truncated due to insufficient window width) on an
entry. Only applies to first page so only matters if sortpack is off.
Also, for windowborders=3 or 4, where the map, message, and status
windows have borders but the perm_invent one doesn't, insert a blank
line at the top when there is only one line of output (such as "not
carrying anything") so that it lines up with the top line inside the
adjacent window rather than with that window's top border. No effect
when perm_invent itself has a border or when none of the others do.
Part of the pull request by entrez, changing a few data.base entries
recently introduced by PR #1108.
Changes ice box to a different quote, but I've re-applied the prior
quote to ice terrain rather than delete it. Also replace a UTF
apropostophe in the ice quote which escaped the previous purge of
such things.
Replaces the C.S.Lewis quote for Demonbane with a one-liner from the
Bible. I realized a bit late that Demonbane is no longer a sword and
never given to lawful Angels as starting gear anymore, consequently
the new quote doesn't fit very well.
The PR changed the helm of brilliance entry to be for all helms and
this rejects that. Instead, it adds a few generic helmet descriptions
and changes the helm of brilliance quote--now misquote--to be useful
to players, describing it as crystal rather than steel.
Pull request 1109 is still open--there's a second commit in it dealing
with fruit name handling that this commit doesn't touch.
Pull request from vultur-cadens: make thrown potion of sickness more
consistently effective but less powerful. It is no longer blocked
by a target monster's innate magic resistance but it now only halves
current HP without also halving maximum HP, and the message about the
target "looking rather ill" is skipped if it only has 1HP so doesn't
take any damage.
Closes#1103
The potion of sickness would previously always print the message
"<mon> looks rather ill." when hitting a non-poison-resistant monster,
even if all effects were resisted due to monster magic resistance.
To make the potion more useful against high-MR monsters, this change
removes the dependence on monster MR, but also removes the halving of
maximum HP to prevent it from being overpowered. Hitting with a
potion of sickness now reliably halves only the current HP of
non-poison-resistant targets.
The effect of poisoned projectiles, which can be created from a potion
of sickness, is not resisted by monster MR, so it does not make much
sense for the potion effect to be subject to monster MR. There is
also code to make Pestilence suffer the sickness effect when hit by a
potion of healing, but due to monster MR, it had no practical effect
other than printing a misleading message.
Pull request from bernhardreiter: NetHack.ad has a comment about
needing to use an external tool such as XV or PBMplus rather than
the NetHack.double_tile_size resource if nethack is built with the
USE_XPM configuration. Add some more detail since using 'hints' when
setting up the Makefiles can define that behind the builder's back.
The extra detail won't be useful to players who obtain prebuilt
binaries that incorporate the X11 interface. The comment in config.h
(see preceding pull request) won't be either, and maybe should be
moved to NetHack.ad where such users will be able to see it.
Fixes#1114.
If throwing an item while levitating sent the hero hurtling into a wall
of water, the item would land in the water due to water_damage_chain's
use of bhitpos. Restore the previous value when it is finished to avoid
interfering with the use of bhitpos further up the call stack.
A hero hurtled into a wall of water while levitating, flying, or wearing
water-walking boots wouldn't be stopped by it unless it was on the Plane
of Water. Make it stop hurtling heroes immediately no matter the
location.
I also noticed that once I was hurtled safely into the wall of water, it
was described as a "pool" when I examined it with ':'. Fix that, too,
even though I think it shouldn't really be encountered in-game.
Pull request from bernhardreiter: NetHack.ad has a comment about
needing to use an external tool such as XV or PBMplus rather than
the NetHack.double_tile_size resource if nethack is built with the
USE_XPM configuration. Add some more detail since using 'hints' when
setting up the Makefiles can define that behind the builder's back.
The extra detail won't be useful to players who obtain prebuilt
binaries that incorporate the X11 interface. The comment in config.h
(see preceding pull request) won't be either, and maybe should be
moved to NetHack.ad where such users will be able to see it.
Fixes#1114.
Pull request from bernhardreiter: config.h shows an example of how
to manipulate the tiles file with PBMplus (to enlarge them for X11
under the USE_XPM configuration) but that example is missing the
final step of capturing the modified data in a file.
Fixes#1113
Stop trying to deduce whether the document is being formatted for a
typesetter (a device that can use proportional fonts) or a terminal (a
device that generally can't) by asking the formatter to measure
formatted texts. Instead, use the built-in `n` and `t` conditions that
nroff and troff have supported for this purpose since 1976 at the
latest. All known troff implementations support these.
https://www.gnu.org/software/groff/manual/groff.html.node/Operators-in-Conditionals.html
These *roff control lines were ill-formed. `.fi` is a request to turn
on filling, not a closing bracket for an `if` request (*roff is not a
Bourne shell).
https://www.gnu.org/software/groff/manual/groff.html.node/Conditional-Blocks.html
Further, *roff generally does not accept more than one request per
input line. Exceptions to this rule are the control structuring
requests (`if`, `ie`, `el`, and in GNU troff, `while`, `do` and `nop`).
But here, only one (`do`-nested) request is governed by the `if` anyway.
I did this several months ago to avoid a sanity check warning (and
consequent fuzzer panic) when an engulfer expels the hero on a full
level. I was hoping to refine it but never went back; install it
now before forgetting about it entirely.
If a chameleon changes from wall-phazer to engulfer while in a spot
the hero can't move onto and engulfs him/her, expelling the hero
after the engulfer has taken the hero's spot might be forced to put
the hero on top of the engulfer or another monster when unable to
use the engulfer's former spot. Rather than try to figure out all
the possible ways this might happen and attempt to deal with each
of them, just prevent an engulf attack from succeeding if the hero
wouldn't be able to move to the engulfer's spot. (Does not prevent
an air elemental over water from engulfing the hero.)
Don't attempt to switch to CR font (used to get fixed-width characters
when generating output that uses proportional width ones) when output
is already fixed-width (plain text).
The most recent release of groff (version 1.23) complains when a font
can't be found, then keeps going. Earlier versions just silently kept
going. Failing to load the CR font when already producing fixed-width
chars makes 'keep going' acceptable but the font-load-failure warnings
are a nuisance.
"object lost" panic occurred when hero's worn amulet of magical
breathing was stolen. This prevents drown() -> emergency_disrobe()
from dropping an item while in the midst of it being stolen, avoiding
the possibility of it no longer being in inventory when the theft
completes. There may be variations other than drowning that lead to
unwear -> drop-or-destroy that are still vulnerable, and this fix can
potentially cause items to vanish from hangup save files.
It also has a side-effect of not being able to drop levitation boots
to lighten encumbrance enough to crawl out of water if the drowning
occurs while they are being taken off, not just when being stolen,
even though they should be easily droppable in such circumstance. The
hero will just need to drop other things instead.