- adds a few more items.
- remove the line "primarily a bug fix release" since it it were,
it would be 3.3.2
- remove "to tell more would be cheating" reference, since we're
considering including fixes34.0 in the distribution
- expands on the Gnomehack stale situation
includes container contents, not just the cost of the
container itself (a prices in inventory phenomenon).
Along the way I discovered a peculiarity -
contained_cost() was adding up the cost of everything in
a container, even if you had stashed items in it that were your
own and not marked unpaid it seems.
I added a flag to force the code to only add objects
that were marked "unpaid" so I could use it in this new
instance, but I didn't change any of
the existing usages (I left the flag at FALSE which leaves
the consideration of the unpaid status alone just as
before).
Some of this is correction of some messages that were
wrong prior to this when dealing with selling of objects
inside a container when only part of the contents was unpaid.
> Is the "You are surrounded by darkness!" message from reading a cursed
> scroll of light (or non-cursed if confused) appropriate if you're
> wielding Sunsword, which _doesn't_ get turned off by it?
-Rename is_greystone() to is_graystone() since I've
had one complaint about my choice of spelling for
the macro already.
-Change the recent "#rub touchstone" code to use
the macro which pre-existed under the other spelling
and was already used in the very same "if" statement
with that spelling in invent.c. :-)
The recent wizkit change caused the build to
fail on all environments other than unix and vms.
>..\src\files.c(1607) : error C2065: 'envp' : undeclared identifier
>..\src\files.c(1607) : warning C4047: '=' :
>'int ' differs in levels of indirect ion from 'char *'
>..\src\files.c(1608) : error C2100: illegal indirection
>..\src\files.c(1608) : warning C4047: 'function' :
>'const char *' differs in levels of indirection from 'int '
>..\src\files.c(1608) : warning C4024: 'strncpy' :
I didn't mean to override for any color in the mask. My
earlier patch caused it to make green, blue, or red all
become black (which still looked better than white on
grey).
This gets it right (famous last words), and only makes
the text character's color black if it is actually white
or bright white.
when hilite_pet was enabled. After checking into it, the
test was looking for the value:
(FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED)
which signifies a white color on win32 console I/O. The
problem was that in some cases that was OR'd with
something else such as FOREGROUND_INTENSITY.
Fix it by checking only the bits that matter when
turning on the attribute.
accelerators).
[...]
- added F4/F5 functionality - same as in MSDOS port
F4 toggles between fitting the tiled display to the screen
and full size (compresses the tiles to fit / uncompresses).
F5 alternates between ascii and tiles.
- added support for wc_vary_msgcount
Defer to the validation code from pickup.c for checking
valid categories. This reduces the number of callback
functions required, and allows combinations of BUCX
to be used in traditional menu style.
in util/lev_main.c:write_maze(), line which reads
"Write(fd, &(pt->ngold), sizeof(pt->naltar));"
should read
"Write(fd, &(pt->ngold), sizeof(pt->ngold));"
1) Removal of bmp placement in binary directory in NT
2) No use of "intrinsic function" optimization in dsp
3) Compilation of resource file for NT Console
Untested on Borland yet. Tested on console/graphical/ide Microsoft C 6.0
in the objects[] array to allow inclusion of touchstone
when wishing for gray stone.
The patch increments editlevel and invalidates bones
and save files.
Ctrl-left_arrow - scroll left
Ctrl-right_arrow - scroll right
Ctrl-up_arrow - scroll up
Ctrl-down_arrow - scroll down
Ctrl-home - scroll to upper left corner
Ctrl-end - scroll to lower right corner
Ctrl-PgUp - scroll one page up (vertical)
Ctrl-PgDown - scroll one page down (vertical)
- F3/F4 keys switch between tiles / fit-to-screen ASCII mode (Yitzhak's
suggestion)
I have made what I hope are some final changes to the OS/2 makefile
These include more removal of old/obsolete comments, additional changes
to support X11 compilation as well as changing versions to 3.4.
Shouldn't gold detection pay attention to my inventory? "You feel
materially poor" sounds extremely odd if I've got 50,000 zorkmids
stuffed in my backpack.
also corrects a cut-and-paste error that I made in options.c
The following options can be set in the game now:
WC_HILITE_PET
WC_ALIGN_MESSAGE
WC_ALIGN_STATUS
WC_SCROLL_MARGIN
WC_MAP_MODE
WC_FONT_MESSAGE
WC_FONT_STATUS
WC_FONT_MENU
WC_FONT_TEXT
WC_FONTSIZ_MESSAGE
WC_FONTSIZ_STATUS
WC_FONTSIZ_MENU
WC_FONTSIZ_TEXT
I was asked how a window-port controls which options are
set to SET_IN_FILE, DISP_IN_GAME, or SET_IN_GAME.
This provides a run-time way to change an option's SET_IN_FILE,
DISP_IN_GAME, or SET_IN_GAME status through code, rather
than clog up options.c with a lot of compile-time #ifdefs
for different ports to offer different default option settings.
Update the documentation to reflect this.
- added support for new options
- fixed couple of typos in options.c
- added sunken edge around message window
- added capability to replace font in the font table (if we will want to
change font sizes dynamically later)
- visual feedback after a prompt: append an empty line to the message
window when clear_nhwindow(WIN_MESSAGE) is called. Filter
out empty lines in the buffer except for the active slot.
- append ellipses to the status line text if the text is truncated
- get rid of message boxes at the end of the game (ignore empty lines in
raw_print as Yitzhak suggested)
Add absent prototypes to some core routines.
Also add some port function() to function(void) in some win32 routines.
Also updates the Borland C Makefile for win32.
As Warwick suggested, instead of having fixed tile
sizes as options, allow specification of the size
explicitly.
Also, at Yitzhak's suggestion, provide a hook for
overriding the port's tile file name. That name,
and the contents of the file it points to, will
be window-port specific of course.
<Someone> wrote:
>I also note that it's weird for your nose to stop tingling and your
>sense of smell to return to normal, if flags.beginner prevented your
>realising that your nose was tingling in the first place.
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.
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.
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>.
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>.
- 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
- 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.
B2001 <Someone> [reported] win32?: giant ant is black square
Where is the open doorway with the giant ant standing in it?
There used to be a closed door there, if I recall correctly.
[now there is just a black square]
I'm saving the level files at this point, and I will be saving
the game after I did that, in case you're interested in any save
files.
>
> I'd like the default for "Would you like to see your <whatever>"
> at the end of a game to be "y" instead of "n". I haven't asked
> for full disclosure in order to have it skipped if I press the
> space bar once too often by mistake.
This changes the way the flags.end_disclose array is used to
allow what this request is asking for. It should be backward
compatible with previous "disclose" options.
The order that the end_disclore options are stored:
inventory, attribs, vanquished, genocided, conduct
There is an array in flags:
end_disclose[NUM_DISCLOSURE_OPT];
with option settings for the each of the following:
iagvc [see disclosure_options in decl.c]:
Legal setting values in that array are:
DISCLOSE_PROMPT_DEFAULT_YES ask with default answer yes
DISCLOSE_PROMPT_DEFAULT_NO ask with default answer no
DISCLOSE_YES_WITHOUT_PROMPT always disclose and don't ask
DISCLOSE_NO_WITHOUT_PROMPT never disclose and don't ask
Those setting values can be used in the option
string as a prefix to each disclosure option
to get the desired behaviour for that option.
For backward compatibility, no prefix is actually required,
and the presence of a i,a,g,v, or c without a prefix sets
the corresponding value to DISCLOSE_YES_WITHOUT_PROMPT;
The actual prefixes used are controlled by the following in flag.h:
#define DISCLOSE_PROMPT_DEFAULT_YES 'y'
#define DISCLOSE_PROMPT_DEFAULT_NO 'n'
#define DISCLOSE_YES_WITHOUT_PROMPT '+'
#define DISCLOSE_NO_WITHOUT_PROMPT '-'
As far as the docs go, I don't know if I've got the *roff
stuff right. The TeX stuff looks okay when I converted it to .pdf.
This increments EDITLEVEL. If that is a problem, I can
add a routine to restore.c to perform a conversion of the old
values in flags. Let me know.
was added, specific to menustyle:combination in
menu_drop(), which short-circuited a redundant
prompt that <Someone> had complained about by returning
immediately if a special code came back from
ggetobj() in ggoresults.
The top of menu_drop, however, had created a
u_gold object and inserted it into the invent
chain, so you can't just return. You have
to use a "goto" to get to drop_done, so that
the object is cleaned up.
- Fix the tty build so it wasn't trying to link with GUI switches.
- Don't make graphical the default for the Makefile. It is for the
IDE projects.
- Be explicit about compiler versions required/tested.