VESA mode: Set the viewport size correctly so the position bar does
not overlay the map.
VESA mode: Correctly set the size to which tiles are stretched when
overview mode (F4) is selected.
Both VESA and 16 color modes: Pass correct parameters to vga_userpan
and vesa_userpan, so the pan keys (CTRL+arrow) work correctly.
Some emulations don't report CTRL with up or down arrows, so accept
CTRL-home, CTRL-page up, CTRL page down and CTRL-end.
16 color mode: Set the panning direction so CTRL-left and CTRL-right
pan in the same direction as 3.4.3.
Pull request from youbo0: when hero's alignment gets low enough, the
adjusted experience level for erinyes effetively dropped instead of
increased. It was being capped at 50 which has a special meaning for
monsters.
Change the level limit to 49 which is as high as ordinary monsters go.
Does not affect saved data.
Fixes#1557
They aren't initially loaded with boulders, thus aren't dangerous.
This is particularly relevant for pets, who would otherwise be very
reluctant to follow their owners up to the level above.
If a monster is marked as off the map, then it is included in
iterations over the monster list, but not allowed to move. This
meant that such monsters would gain movement points on every turn
but not spend them, which could lead to the monster taking a lot of
turns in a row when placed back onto the map.
This commit removes the movement allocation from monsters that are
flagged as dead or removed from the map, meaning that they neve
get more than one turn's worth of movement allocation.
The basic colors are being displayed as black. Colors specified as RGB
are not being converted to the pixel format for the current mode. This
manifests as walls in dungeon branches being drawn in black when the
symbol set is IBMgraphics, and in the wrong color when Enhanced1 is in
use and the display mode uses 15 or 16 bits per pixel. A particular
mode that shows this bug is 1024 by 768 under DOSBox.
u.ustuck and u.usteed are handled differently in 5.0.0 than
in previous releases, and an unexpected halt to NetHack could
result in an inability to use recover to get the game back.
If the hero was engulfed, u.uswallow, could get saved to the
checkpoint file with a value of 1 without a corresponding
u.ustuck_mid value representing the m_id of the engulfing monster.
Recover had no information to use to restore the u.ustuck pointer
when loading the monsters on the level.
With u.uswallow set to 1, the game would proceed to enter if-blocks
based on that, and then crash/fault when it attempted to dereference
u.ustuck, during the recover attempt.
This updates the values of u.ustuck_mid immediately before saving
struct you during a checkpoint, so that the resulting file had
u.uswallow and u.ustuck_mid values that were in concert.
It does the same for u.usteed and u.usteed_mid.
This also now adds a save_currentstate() checkpoint call when
the swallowed/unswallowed status changes, that is whenever set_ustuck()
is called.
The revived mac68k port (on the m68k-wip branch) removed it: it runs
an event loop after exit_nhwindows() has torn the windowing system
down and crashes; the tombstone already pauses. Removing it here too
keeps the block from resurfacing in NetHack-5.0 <-> m68k-wip merges.
track which locations had updates that could be seen in tmp_at()
to aid in cleanup.
ensure that nothing is shown for places that the hero can't see
(internal buglist entry 3161).
adjust several aklys messages to better reflect the tethering
aspect.
LUAMAKEFLAGS uses TARGET_CC, which the cross hints override to the
target compiler. The top-level liblua.a is a host-side prerequisite
of the generated include/nhlua.h; the target lua is built separately
under BUILD_TARGET_LUA.
A very small number of boolean options had drifted, such that
their initval setting did not match its opt_in or opt_out value.
Correct that, by ensuring opt_in or opt_out reflects what was
actually happening.
The only option whose initial value is changing as a result
of this is timed_delay. It was listed as an opt_out option, but
was not being initialized as such. Now it is. This makes the
Mac X11 throwing animations work correctly with the earlier
timed_delay option adjustments for X11. There was nothing
displaying on Mac X11 after those earlier changes, unless
the timed_delay option was turned on.
Going forward, for boolean options, setting opt_in or opt_out
is all that is required, as that was the original intention
of those fields. It will take precedence if they fall out of
sync again.
I noticed a strange thing where the X11 windowport didn't show the tethered
thrown aklys animation correctly. Interestingly, other stuff, such as zapped
wands did show the path. I didn't bother trying to figure out what the core
was doing differently, as the animation worked in all the other windowports,
so instead fix the issue in X11, so it behaves the same as all the others.
The issue seems to be that the event loop exited on any(?) event, instead
of our specific timed event. So, create our event with a magic id number,
and exit only when we encounter that.
Also: Obey the timed_delay option, and change the delay from 30ms to 50ms,
like in other windowports.