For
key name description
reduce the width of the first column from 8 spaces to 6 and increase
the width of the second column from 8 spaces to 10 so that fewer lines
have misaligned third column caused by long name.
Also a small amount of extra verbosity, mostly for I and A/P/R/T/W.
git has me really confused right now, first requiring a merge, then
not needing any merge. Anyway, add pull request #624 which was
unintentinoally closed and then couldn't re-opened. Now it's been
incorporated so is intentionally closed.
Closes#624
If you want to declare a pointer which the address pointed to is constant,
you should declare it as like `static const char *const var = "...";`.
This commit supplies missing `const` and prevents some programming
error in the future.
If the one provided in the zip/distribution is newer, replace
the one used by the game after renaming the current one to
symbols.save.
If the one used by the game is newer, do nothing with it.
The mingw-w64 version on the CI platform is older and
is missing a sought copy of winres.h.
This attempts to work around that by having the Makefile
create a temporary copy of winres.h in the win/win32 directory
which that windres.exe is already search in. The file is
then immediately removed after windres uses it.
The contents of the temporary winres.h match the contents
of that file that is distributed with the more up-to-date msys2
distribution of mingw-w64.
It won't be known if this workaround solves all the CI issues
with the mingw build until after it is committed and observed.
I unintentionally swapped the shift and ctrl movement keys
when redoing the movement input - change them back to how
it was earlier.
Also change the number_pad meta-key bindings, and explain
in the comments why: We can't bind shift or ctrl numbers.
Meta (aka alt-key) works with number-pad numbers when
the altmeta-option is on. There was no altmeta in 3.4.3.
Here's a table of the flags.run/g.context.run values,
from 3.4.3 and 3.7 as of this commit:
| num_pad:0 || num_pad:1
| 343 | 370 || 343 | 370
-------------------------------------------------
<dir> | 0 | 0 || 0 | 0
shift-<dir> | 1 | 1 || 0 | N/A
ctrl-<dir> | 3 | 3 || 0 | N/A
meta-<dir> | N/A | N/A || N/A | 1 (with altmeta)
m-prefix | 0 | - || 0 | -
G-prefix | 3 | 3 || 3 | 3
g-prefix | 2 | 2 || 2 | 2
5-prefix | N/A | N/A || 3 | 3
-------------------------------------------------
The m-prefix in 3.7 does not set the run-value, as it can now
be used with any movement key or prefix, which will set the run value.
New input system does not lose functionality when compared to 3.4.3.
Instead, the number_pad users gain the meta-<dir> running.
This doesn't fix the issue of three badly differentiated run values.
Make the same change as was done for Qt three or so weeks ago: force
the 'toptenwin' option on in X11_init_nhwdinows() so that scores (or
wizard mode "your score is ignored") are shown in a popup text window
instead of being sent to stdout.
The X11 tiled map was being initialized to the tile for giant ant.
Visible during the role/race/&c selection dialog and if you get the
"already a game in progress under your name; destroy it?" prompt.
Makefile.mingw32 and Makefile.mingw32.depend are intended to replace
Makefile.gcc.
To use them:
cd /d/prj/NetHack/src
cp ../sys/windows/Makefile.mingw32* .
mingw32-make -f Makefile.mingw32 clean
mingw32-make -f Makefile.mingw32 depend
mingw32-make -f Makefile.mingw32
Improvements:
Add $(USE_LUADLL) to release lua-5.4.3.dll, instead of link static
lua.lib into .exe files.
Add windres "--target" option, to fix the NetHackW.exe startup problem.
Add "-s" option to $(LDFLAGS) in release mode, to make exe/dll smaller.
Add $(CLEAN_DIR) and $(CLEAN_FILE) to track what to clean.
Remove *.tag, but use "order-only prerequisites" to make directory
before any '.o' is built.
Use make variables and functions to improve readability.
Each project has its own directory to hold object files, to fix the
interference problem between different projects, like NetHack.exe object
files were built with "-DTILES".
Add "-mconsole" option when linking NetHack.exe, to fix that sometimes
GetStdHandle returned with invalid handle error.
Add ".PHONY" statements.
Use "gcc -E -MM -MT" to implement semi-auto "Prerequisites Generating".
The stop_row and stop_col were off-by-one in some cases, leaving
black lines on the map when a window on top was closed.
Simplify the calculation by always going one row/col further,
ensuring previously covered area gets redrawn for sure.
This should not affect speed or resource usage noticeably these days.
The priest/cleric quest provides unlimited wraiths and a player
(not a robot with limitless patience) posting on reddit gave up
building up his character by killing them and eating the corpses
after accumulating 40K HP and 20K En. (Or something close to that;
I can't get back to the post right now.) His character might have
been capable of surviving decapitation or bisection.
Make it very much harder to get to 5 digits of HP or En via level
gains after reaching level 30. If maxhp < 300, new gains will be
capped at 5 extra HP; 300..599, cap is 4; 600..899, cap is 3;
900..1199, cap is 2; and once 1200 is reached, further level gains
will only add 1 HP. For maxen < 200, extra En is capped at 4;
200..399, cap is 3; 400..599, cap is 2; and once 600 is reached,
further gains only add 1 En. Note: this only kicks in when gaining
levels while already at level 30.
Make the code for setting up the 'O' menu's '?' entry more compact.
Also adds 'skipinvert' flag for that entry but it doesn't do anthing
here. I thought that it had been implemented, but aside from the
flag itself, it doesn't seem to exist.
The extended command input prompt was behaving in an unintended way:
Typing #a<enter> executed #adjust. Spaces in the entry prevented matching
any command. No error message was given when no command was matched.
Fix all of those, so it behaves more like the tty.
Clean up the tty, curses, and X11 windowport code, so they don't use
the extcmdlist array directly, but query with extcmds_match
and extcmds_getentry.
Honor any key binding for <space> when rest_on_space is Off.
Toggling it On and Off remembers the key binding if there is one.
So if the RC file has BIND=\32:attributes, <space> will run #wait
when rest_on_space is On and run #attributes when it's Off.