The following fixes several bugs:
1) Mismatch between docs and game in definition of what '+' resolved in
favor of docs...
2) When game needs to be recovered a message box is shown. This is a very
deprecated fix. It pretty much answers just the conditions that require
this (a yn question to an erroneous winid), and is not useful for other
purposes.
3) The score file is written.
If you interrupt nethack (^C) in tty windowport mode while a pompt is
displayed and and msg_window=true, it can display the full message history
at an unexpected time. Detect this and display only the topl, as expected.
to allow common parsing in the core, and direct access to the
results by the window port.
Notes:
o Adds a new field, wincap, to the window_procs
structure for setting bits related to the preference
features that the window port supports. This allows
run-time determination of whether a particular option
setting is applicable to the running window port. A
window-port is free to support as many, or as few,
of the available options as it wants. Ensure that
only the ones supported have their corresponding bit
set in window_proc.wincap. [see chart in
doc/window.doc for help with that.]
o The settings I stuck into wincap for each window
port are almost certainly not accurate, so each port
team should review them. You should only include
the ones that you will actually react to and make
adjustments for if the user changes that option.
Without the setting in wincap, the option won't even
show up in the 'O'ptions menu.
o preference_update() added to the window-port
interface, so that the window-port can be notified
if an option of interest (an option with its
corresponding bit set in wincap field) is
changed.
o provided a genl_preference_update() routine in
windows.c and used it for all the existing
window ports since they don't have a functional
one of their own yet.
o this messes around heavily with iflags and the options
arrays in options.c
o I hope I didn't break any port's existing code. I
tried not to. The Mac however, in particular, should
be looked at because it suffered a namespace collision
with what I was working on around fontname. It had
Mac specific font stuff in options.c. Please test
the Mac.
From one of <Someone>'s ascension posts: the introductory message
when you enter the Samurai's quest is slightly odd if you can't see at
the time. This rewording acknowledges the difference between being
blind or sighted, but it is still a bit odd to able to know which flag
is flying when unable to actually see it.
The inability to wish for a blessed +2 fireproof speed boots really was a bug.
Prefixes are checked for inside a loop which should allow them to be in any
order; for some reason +nnn and empty were outside that loop.
Also adding the secret door detection fix to betabugs 3.3.0. (Is it safe to
hand-modify betabugs 3.3.2?)
SPLEVTYPE can have a value like "minetn-3,minend-2,soko2-2" and allows
someone in debug mode to select specific instances of random levels to use
in a test game. Invalid values found in SPLEVTYPE are silently ignored.
I'm surprised that you credit me with the ninja yumi-ya thing as a
"patch" in README; I didn't submit any code for it, it's trivial, and
it's vanishingly unlikely ever to come into play :-) If I'm to be
credited with anything on that list, I'd have thought it'd be the
no starting pet option.
Apparently, " is part of an accented character in US(international) keyboard
layout (additional character specific to the language of an origin - for
example, left and right double quotation marks). The code did not handle it
too well since it maps to 2 ASCII characters instead of one (one of them is
so called "dead" character). We can ignore the dead character as a
workaround for this problem. The patch is attached.
<Someone>.
Give names to remaining town levels.
Change elements in College Town that don't follow theme.
Remove isolated niche and helm of brilliance from end #3.
The patch is attached. Array bounds went unchecked in
the menu page operations (, \ ~) This resulted in
memory corruption.
The actual crash depends on your luck actually. It will
only crash if heap headers are corrupted, otherwise it
can go unnoticed. When you do "Du," the list page size
is 18 (on my screen) with only 2 items in the menu. The
program assigned count of -1 to 18 items in the array
of 2. Ka-boom. I put bounds checking code in several
places. The window size does not have anything to do
with it.
<Someone>.
+ attributes may exceed 18 for non-humans
+ update spell casting paragraph to loosely describe 3.3 style spell casting
+ correct description of the output of the '+' command
+ note default value for 'mail' option
- allow spaces between the different possibilities
- add a missing null at the end of the list of prefixes to prevent index()
from going crazy
- slight re-wording of the Guidebook
The autodig code still requires lots of interaction, because of all the
digging messages. Make these messages behave more like boulder pushing
messages, where they only display if the previous move wasn't a push.
- B1026 [confirmed] win32: setting multiple options
- bugfix: menu: set focus to the item and make it visible when it is
selected with accelerator key.
- increased menu font size by 1 point
- layout the main window on WM_MOVE message so the menu windows stays with
the main window (it was not changing the location before)
- got rid of WinCE specific define (ARM)
- handle all keyboard input via WM_KEYDOWN instead WM_CHAR
Files affected: config1.h mhmsg.h mhmain.c mhmenu.c mswproc.c resource.h
winhack.rc
Notes:
That overrides Yitzhak's mhmenu patch - I don't like the menu prompt on the
title bar since it can be null and in most cases it is. It looks much better
as a header column in the list and is displayed only if present.
I moved ARM-related (processor) defines to wceconf.h You cannot undef ARM
before windows.h is processed - ARM version won't compile.
.rc files are generated by IDE - you cannot edit them directly or your
changes will be gone next time the file is saved. If anything needs to be
added to winhack.rc file manually it has to be marked by the following
defines or via menu option View->Resource Includes:
#define APSTUDIO_READONLY_SYMBOLS
...
#undef APSTUDIO_READONLY_SYMBOLS
[...]
One of them deals with the patch you just sent, that changes the name but
does so more extensively, particularly, also in the Save dialog in
mhmain.c. Another is one of the changes to winhack.rc to make it compile
under Borland.
This also (beyond patches I sent): fixes no Options prompt bug, and fixes
up the menu bar (which I broke in one of my patches).
Tested on msc/bcc tty/win makefiles and vc ide.