cohrs [Fri, 29 Mar 2002 17:56:13 +0000 (17:56 +0000)]
Rolling boulder traps and pacifism
If you stepped on an unknown rolling boulder trap, and that rolling boulder
hit a monster and killed it, you would be called a killer. This makes
playing a pacifism conduct game rather difficult.
- track boulders from unknown rolling boulder traps, and don't charge/credit
hero if they kill monsters. This is done by temporarily setting otrapped on
such boulders.
- boulders from known traps are still charged/credited to the hero
- fix a couple places in ohitmon where is_poisonable wasn't checked along
with opoisoned.
nethack.rankin [Fri, 29 Mar 2002 13:37:16 +0000 (13:37 +0000)]
polyself: centaurs vs boots
Monster centaurs can't wear boots, and characters who polymorph
into centaurs have their boots pushed off, but there was nothing to
prevent such characters from putting those boots right back on.
nethack.rankin [Thu, 28 Mar 2002 03:03:04 +0000 (03:03 +0000)]
"harassment mode"
Make a change suggested by <Someone> to have the Wizard
enter harassment mode when you perform the invocation, in case
you manage to obtain the Book of the Dead without killing him.
Instead of just initiating that periodic effect, behave as if
you have actually killed him (which also affects random monster
generation frequency, prayer timeout, and shopkeeper salutations).
nethack.rankin [Thu, 28 Mar 2002 01:37:39 +0000 (01:37 +0000)]
lev_comp,dgn_comp vs CRLF style input
Allow the special level and dungeon compilers to handle input
files which have CR+LF delimited lines. Apparently Cygwin doesn't
convert MSDOS style line ends into newlines the way stdio should
do for text I/O. The resulting unexpected CR characters result in
syntax errors.
And explicitly using '\n' on both the lex and yacc sides of
MAP processing allows removal of the old NEWLINE hack for Mac MPW.
It won't matter what numeric value that character escape sequence
has internally.
nethack.allison [Wed, 27 Mar 2002 12:17:26 +0000 (12:17 +0000)]
(from <Someone>)
Two things:
1. This patch causes the window placement of the main window to be
written to the registry, and to be restored upon the next start
of the program. I had to move the creation of the main window to init_nhwindows,
as the registry is not read until then.
2. Implement support for wc_popup_dialog (or rather, support for not having
popup windows.) It asks getlin questions and get_ext_cmd on the
message window, much like the TTY port does it.
The get_ext_cmd procedure is almost but not quite the same as the
one for TTY, and I think it is better: It autocompletes the extended
command you type, but if you keep on typing it doesn't add those letters
after the completed command, but just keeps track of how many (correct)
characters you typed. If you type a different character than the
autocompleted command has, it shows you what you typed again. If you
press backspace, it deletes the characters you typed, and if autocompletion
is no longer possible, it removes the autocompleted part. The effect
of this is that you can type as many letters as you want when typing
an extended command, as long as it is enough to identify one command;
and you only have to delete the characters you actually typed if you made
a mistake. I think autocompletion is a lot less obtrusive this way.
Some notes about the patch:
- Both mswin_getlin and mswin_get_ext_cmd now have two versions, with
and without a popup.
- yn_question was changed so that it displays a caret, which is a lot
nicer IMHO.
- I had to implement a new NetHack Windows Message parameter,
"MSNH_MSG_CARET", to make it possible to show and hide the caret in
the message window. Normally the caret is created and destroyed by the
window that owns it, but in NetHack the input focus is always on the
main window, while the caret is in the message window, which happens
to be the only one that knows how large the caret should be.
- mswin_putstr_ex's last parameter changed from boolean to int; the
semantics are enhanced so that a negative last parameter means "delete
that many characters from the input line". The string to be deleted is
passed in as well, although it is currently not used.
- A rather large chunk of code finds out where the last string that was
displayed on the message window ended. This is necessary to place the
caret at the right spot. The caret is always positioned there, even if
it is hidden or non-existing.
- mswin_get_nh_event was changed to actually process and empty the
message queue, and called from mswin_putstr_ex to make sure the
message window is updated before the next step is done. Without this,
the caret is positioned before the last message is painted, which
makes its x-position after the last character of the previous line.
cohrs [Wed, 27 Mar 2002 04:58:42 +0000 (04:58 +0000)]
Sunsword kept glowing after monster wielding it died
- <Someone> reported this bug to the mailing list
- add a check in relobj(), which should catch all the cases
cohrs [Wed, 27 Mar 2002 02:31:21 +0000 (02:31 +0000)]
half-physical-damage from gas spore explosion should only affect you
- <Someone> noticed the fix for applying half physical damage to gas spore
explosions affected damage to all monsters, not just you
cohrs [Wed, 27 Mar 2002 00:58:44 +0000 (00:58 +0000)]
seemimic produces transparent doors
- if a mimic mimics a boulder (top sokoban) or a door atop
a closed door the closed door didn't block your vision after
the mimic is sensed.
- also, make mondied consistent with xkilled WRT corpses on inaccessible
locations: no corpse
cohrs [Tue, 26 Mar 2002 21:56:03 +0000 (21:56 +0000)]
R691 - bad cursor positioning debug message
- remove the "#define DEBUG" from wintty.c that caused this message to
be displayed when not in a debugging mode
arromdee [Tue, 26 Mar 2002 06:05:24 +0000 (06:05 +0000)]
iron balls (R676)
Well, this proved rather annoying. Problems included:
-- the solid rock problem that was noticed
-- teleporting to a spot two spaces away but on the other side of solid rock
could also leave the chain in solid rock
-- in one place I said chainx instead of ballx, which could cause problems with
teleporting
-- the teleport code moved the player before moving the ball, violating the
assumption that the player hasn't been moved yet (which only caused problems
after I added the solid rock fix).
Ball movement still isn't quite right, though the cases are really rare. I
may fix them later.
nethack.allison [Tue, 26 Mar 2002 05:33:04 +0000 (05:33 +0000)]
generic feature_toggle
This adds a generic feature_toggle mechanism to
the game. Code that wants to offer two different
ways of doing something can add an entry to
feature_toggles[] (in decl.c), and create a
preprocessor macro for its array index in decl.h.
Then the code can test it using
if (feature_toggle(FEATURE_NAME))
..do_this..
else
..do_that..
The player can toggle the alternate code path
on using OPTIONS=feature_toggle:feature_name_1 feature_name_2 ...
This seems better than creating brand new options
for controlling features (ala prayconfirm, which
could switch to this single option feature_toggle
mechanism as well)
My first use of it is to allow toggling of the selectors
on the loot menu, which I'm hesitant to just change back
because now people are actively using the new selectors and
the complaints would be really loud if the interface were
to just switch back after they adjusted.
The default behaviour is the new behaviour "iob", but with an
OPTIONS=feature_toggle:loot_menu_selectors
in your config file, it will revert to using "abc" as it did
in 3.3.1. I'll add a Guidebook page of "features/behaviour
that can be toggled" later.
The toggles can only be done in defaults.nh, and are
not saved with the game.
nethack.rankin [Mon, 25 Mar 2002 09:01:35 +0000 (09:01 +0000)]
impaired movement fix
Fix the reported problem of incorrect conditional logic
making it impossible to bump into closed doors when moving while
impaired for the #if STEED configuration.
cohrs [Mon, 25 Mar 2002 07:48:03 +0000 (07:48 +0000)]
R677 - two swords slipping due to fried food prints same message
- report: twoweapon mode, eat fried food, get messages like:
Your sword slips from your hands.
Your sword also slips from your hands.
- the fix tracks the kind of the 1st weapon, and adds "other" to the 2nd
message if necessary
nethack.allison [Sun, 24 Mar 2002 23:53:28 +0000 (23:53 +0000)]
#R675: bug in win32 GUI (division by zero)
(from <Someone>)
>The tile size is actually set just once in mhmap.c so validation can be done
>in one place. The patch is attached.
>
><email deleted>
on Sunday, March 24, 2002 at 16:15:50
---------------------------------------------------------------------------
mailversion: 1.10
nhversion: 3.4.0
nhfrom: 3.4.0 Official binary release for Windows 95/98/NT/2000/Me/XP
(nh340win.zip)
hardware: 1 Ghz AMD Athlon, 512 MB RAM etc. etc.
I don't think that the hardware is related to the problem because I found it.
software: I used Win 98 (1st edition) and MS VC++ 6.0 to find/fix the bug in
Nethack 3.4.0.
comments: steps to crash: start nethackw.exe - start a game - select "fit to
sreen" in the map menue - rezize the map until it is very very small -> crash
nethack.allison [Sun, 24 Mar 2002 03:57:22 +0000 (03:57 +0000)]
#649, #656 hilite_pet bug (from Yitzhak)
#649
<email deleted> on Friday, March 22, 2002 at 13:27:03
software: os: w2k workstation
nh: stock tty nethack.exe
comments: When you move onto a space and your pet moves onto the space
next to you on your left, your @ is displayed w/ normal attributes
instead of bright.
hilite_pet option is enabled
IBMGraphics option is disabled
#656
<email deleted> on Friday, March 22, 2002 at 16:59:37
nhfrom: 3.4.0 Official binary release for Windows 95/98/NT/2000/Me/XP
software: Windows 98 SE playing the ASCII version
comments: Sometimes when I'm standing next to my pet the @ turns grey, it goes
back to white after I move.
nethack.allison [Sun, 24 Mar 2002 01:37:16 +0000 (01:37 +0000)]
#R668: Windows 2000 Lock File Creation Error
This was a tricky one. While the error was ultimately because
he was specifying a non-existant directory in defaults.nh, the
error message lead me to the wrong area until I traced through
with a debugger.
It turns out that an fqn buffer was being re-used before it
was finished being used with the original information in
sys/share/pcunix.c, so the error message listed the
wrong file!
This adds one more buffer and fixes the problem.
Note that it could only affect plaforms with
PREFIXES_IN_USE defined (NOCWD_ASSUMPTIONS
or VAR_PLAYGROUND)
It also alters the WIN32 error message to give them a
hint as to what the problem might be.
<email deleted>
<email deleted>
Sent: Saturday, March 23, 2002 9:27 AM
Subject: #R668: Windows 2000 Lock File Creation Error
> nhfrom: 3.4.0 Official binary release for Windows 95/98/NT/2000/Me/XP
> I get an error after unzipping nethack to c:\nethack, and changing the
> configuration (defaults.nh) to reflect this in the hackdir, levels and save
> configuration items.
>
> The error I get is "cannot creat lock file (C:\nethack\NHPERM_lock.)" after
> entering nethack at the command line and answering the Who are you? question.
cohrs [Sun, 24 Mar 2002 00:04:41 +0000 (00:04 +0000)]
restore support for non-square XPM-based tiles (X11 & Gnome)
- change the way the tile sizes are calculated, based on the image size,
so non-square tiles can once again be supported.
- fix Gnome port so it can actually display non-square tiles, several
height/width uses were backwards
- update Install.X11 to note the number of tiles per row in the XPM image
cohrs [Sat, 23 Mar 2002 22:27:54 +0000 (22:27 +0000)]
wall symbol not replaced when digging while blind and levitating
- this was reported to the mailing list just before 3.4.0 shipped
- treat in a manner similar to chopping a boulder while blind and levitating
cohrs [Sat, 23 Mar 2002 22:11:07 +0000 (22:11 +0000)]
only get gems from kicking thrones
- this was a betabug I think, but not recorded as such
- if you kicked a throne, any GEM_CLASS item could be generated, including rocks
- changes behavior to be consistent with gems from fountains
cohrs [Sat, 23 Mar 2002 21:58:42 +0000 (21:58 +0000)]
README.linux sync
- forgot to apply this change before making the 3.4.0 binary (it was
actually built using these settings). It's safer for the game itself to be
non-group writable so that someone on a public server can't exploit a
bounds checking or similar error to infect the executable itself with
a trojan horse.
arromdee [Sat, 23 Mar 2002 18:30:38 +0000 (18:30 +0000)]
bad wizkit items
Format multiple bad wizkit items a little better. It will scroll off the screen
if there are more than a screen of bad items, but that's probably not too
likely.
nethack.allison [Sat, 23 Mar 2002 17:27:52 +0000 (17:27 +0000)]
more explode panic()
You could still get a panic. To reproduce:
- wizwish for a statue, and drop it
- wizwish for a landmine, and apply it at same location as statue
- move one square and wish for a boulder, drop it (automatically likely)
- push the boulder on the landmine to trigger it.
- the panic came from the statue this time.
nethack.allison [Sat, 23 Mar 2002 12:43:11 +0000 (12:43 +0000)]
The spellbook fadefades.
<email deleted>
<email deleted>
Sent: Saturday, March 23, 2002 6:01 AM
Subject: Bug in 3.4.0: spellbook fading
> Dip a spellbook in a fountain:
> "The spellbook fadefades."
>
> In get_wet (potion.c), otense is used, which returns "fades",
> redundantly, as a suffix to "fade".
nethack.rankin [Sat, 23 Mar 2002 12:08:19 +0000 (12:08 +0000)]
conduct bit
Document the way to decline a wish or genocide, and allow both
actions to accept both "none" and "nothing" so that players don't
have to remember which response goes with which prompt.
nethack.rankin [Sat, 23 Mar 2002 06:53:09 +0000 (06:53 +0000)]
annoying shop bug
The shop billing code assumes that food marked partly eaten
is worthless, but the eating code was changed to make sure that any
eating attempt will never leave food marked as not partly eaten.
The end result is that non-corpse food which is consumed in a
single byte can be eaten off shop floors for free, and if eaten
from inventory--so already on shop bill--the "Ix" display of used
up goods lists the item as partly eaten (with right price though).
This fix makes single-byte food be handled the same as other
food: the first byte taken causes the food to be auto-purchased
immediately instead of waiting until it's used up to add it to the
shopping bill.
nethack.rankin [Sat, 23 Mar 2002 04:37:02 +0000 (04:37 +0000)]
Mjollnir fix
Fix one of the problems From a bug report: Mjollnir is only
giving the intended feedback when it is thrown. Against ordinary
monsters the problem isn't too bad--you get a lightning message
without the preceding hit message--but against resistant ones there
is no message at all when you hit hand-to-hand. (There is a similar
bug for artifacts which add magic missile damage, but since no such
artifacts exist that isn't much of a problem. :-)
nethack.allison [Sat, 23 Mar 2002 01:35:59 +0000 (01:35 +0000)]
#R650: Game crash (Panic - obj not free)
> <email deleted>
> Oops! [...]
> Suddenly, the dungeon collapses.
> place_object: obj not free
>
> The crash is reproducible in wizmode by wishing for a landmine, arming it and
> pushing a wished-for boulder onto it.
kmhugo [Wed, 20 Mar 2002 13:48:22 +0000 (13:48 +0000)]
Mac documentation tidbit
Fix a documentation inaccuracy pointed out by Michael. Intended for
the 3.4.0 source tarball, even though it was submitted after the
code freeze. Does not affect compiled binaries.
nethack.allison [Wed, 20 Mar 2002 13:05:58 +0000 (13:05 +0000)]
(final patch from <Someone>)
This patch implements two things:
- space now dismisses a menu, text or menutext window when you are
at the bottom of that window
- Page scrolling in menus now works as follows:
pressing PgDn (or Space in NH mode) moves the focus down one page,
and moves the scroll position down one page. The effect of this
is that you always get a full new page of items (which is what
NetHack players expect), and that the focus moved down one page
(what Windows users expect.)
The same (revers) goes for scrolling up a page.
A Windows user will still be a bit surprised when the focus is on
the top item, and he presses '>': he gets a new page of things instead
of the focus moving to the bottom of the page.
However, the PgUp/PgDn keys (which he probably uses) still have the
old Windows behaviour.
nethack.allison [Wed, 20 Mar 2002 10:44:13 +0000 (10:44 +0000)]
(from Yitzhak)
This band adds handling for the "5" key in the numeric keypad. This is
called VK_CLEAR in the VK_ constants. Using this band, and with
NumLock off, doing 5 will send NetHack the letter 'g'. Doing SHIFT-5 will
send 'G'. Without this band and with NumLock off, 5 does nothing. With
NumLock on, 5 sends 5.
kmhugo [Wed, 20 Mar 2002 06:30:23 +0000 (06:30 +0000)]
Mac resource file update
Changes to the resource file used for the Macintosh port.
Specifically, remove hardcoded version string and popup dialogs.
This is formatted with BinHex so it can be stored on non-Mac
systems without losing the resource fork. Though it is text,
it is not intended to be human-readable.
nethack.allison [Tue, 19 Mar 2002 22:37:22 +0000 (22:37 +0000)]
(from <Someone>)
This implements some items on the ToDo list:
- H0005: Space does the same as PgDn in text, menu and 'menutext'
windows if NetHack mode is on.
- M0004: The cursor (caret) is hidden in text windows and menu
windows.
PgUp/PgDn/Up/Dn don't move the cursor, but scroll the
window.
cohrs [Tue, 19 Mar 2002 08:27:55 +0000 (08:27 +0000)]
Gnome player selection
- provide full 3.4-style player selection, based on tty_player_selection
- generalize selection dialog so it can be used for all 4 prompts
nethack.rankin [Tue, 19 Mar 2002 05:13:50 +0000 (05:13 +0000)]
final(?) touchstone
Put back the "better gold handling" that was inadvertently
dropped from the previous rewrite. Prevent gems rubbed on cursed
gray stones other than touchstones from being shattered. Fix
several pluralization buglets, including allowing the player to
rub a stone against itself if the quantity is more than one (just
like potion dipping is handled). Overall, streamline the rather
convoluted logic, eliminating the `goto's.
jwalz [Mon, 18 Mar 2002 15:24:31 +0000 (15:24 +0000)]
Fix most of the errors <Someone> found. The perpetrator of the "Rush commands"
will need to either straighten it out themselves or let people assume it's
the capitalized ones.
cohrs [Mon, 18 Mar 2002 07:30:48 +0000 (07:30 +0000)]
better trap searching behavior
- if a trap is hidden by clutter, cls() before delay, remove windowport
specific behavior, makes trap more obvious in all cases
nethack.allison [Mon, 18 Mar 2002 02:24:35 +0000 (02:24 +0000)]
disclosure bug
From <Someone>:
>And finally a bug-report:
>The new disclose-option didn't fully work.
>While the -ny prefixes works like explained the + prefix
>(show it don't ask) acts like -.
>A possible fix is, change the return-value of
>should_query_disclose_option for case DISCLOSE_YES_WITHOUT_PROMPT
>to TRUE and handle the case defquery=='q' in list_*-function
>as "don't ask". Or add a new boolean ask parameter to the
>list_*-functions.
nethack.allison [Sun, 17 Mar 2002 21:59:19 +0000 (21:59 +0000)]
As pointed out by <Someone>
> while testing the new wc_-Features for Gem I noticed
> in nh340b11 options.c parse_options there is a bug.
> If a optionname starts with "font" a opts+=4; is
> performed on it, but if via string_for_opt an
> error occurs badoption is reporting i.E.
> Bad Syntax: _menu use "?g" ...
> instead of font_menu.
>
> Possible fixes include shift the pointer back (bad)
> or use another pointer.
>
> <Someone>
cohrs [Sun, 17 Mar 2002 20:16:57 +0000 (20:16 +0000)]
Gnome basic functionality
- let the "#" key work as per Guidebook
- role selection didn't work if you had gender specified in your .nethackrc
similar problems would occur for other .nethackrc selections
- fix an obvious memory leak
- fix one crash bug from accessing a freed pointer (M-? dismiss M-?)
- note some invalid behavior in comments for a real Gnome developer to fix
- reformatted some code so I could follow it
cohrs [Sun, 17 Mar 2002 20:02:47 +0000 (20:02 +0000)]
X11 wide tilemap support
- support X11 tile files (with or without XPM) that are 40 tiles wide
- rearrange some X11 code to share more code between XPM & non-XPM options
- clean out some deprecated X11/winmap.c #ifdefs
- update Qt code minimally to handle such an XPM file
nethack.allison [Sun, 17 Mar 2002 17:07:22 +0000 (17:07 +0000)]
(from Yitzhak) ALT-?
This patch allows ALT-? to do #? in NetHack mode by not doing
TranslateAccelerator in NetHack mode. This relies on the short circuit
logic of || (much of NetHack code relies on it, it's just an explanatory note).
nethack.allison [Sun, 17 Mar 2002 17:03:45 +0000 (17:03 +0000)]
(from Yitzhak) ALT-H
This patch disables ALT-H in NetHack mode. Before patch: ALT-H in NetHack
mode brings down the Help menu in the menu bar. After patch: ALT-H does
nothing in NetHack mode. In both cases, in Windows mode, ALT-H brings
down the Help menu in the menu bar. I can easily write a patch to have
ALT-H in NetHack mode act the same as '?'.
Explanation:
return 0: this window proc has processed this event.
return DefWindowProc(): process using default window proc.
ALT-H is the only key for which DefWindowProc() does something special AND
reaches the else.
nethack.allison [Sun, 17 Mar 2002 16:03:29 +0000 (16:03 +0000)]
<Someone>'s trap detection complaint
To address <Someone>'s complaint, make the cluttered
trap detection tty only. Also put in some dead
code that could make it work elsewhere in future
when there is time to test.
nethack.rankin [Sun, 17 Mar 2002 08:19:21 +0000 (08:19 +0000)]
touchstone again
Recent patches broke rubbing gold coins on touchstones; for the
!GOLDOBJ configuration, the character's money would be lost and the
program leaked memory. That problem was already present for rubbing
gold on other gray stones.
This also gives a gem advantage back to archeologists: they
can comprehend touchstone results when the stone is uncursed rather
than require it to be blessed. (I gave gnome characters that benefit
too. Why gnomes and not dwarves? I don't have a reasonable answer
for that....) To go along with that, make A's initial touchstone
start uncursed rather than blessed, so that other characters finding
them in bones won't get an immediate benefit from them for the 20%
of the time that they're not cursed when saving bones.
Much of this is whitespace cleanup. I reformatted use_stone()
completely.
nethack.allison [Sat, 16 Mar 2002 14:41:36 +0000 (14:41 +0000)]
porthelp modifications
- keep boolean and valued option sections together
- be more consistent in use of terms "graphical port"
and "graphical interface" in the document (use the
latter where noticed)
- don't mention options available in other ports so
much since this document is not a general
document.
- move the numeric keypad stuff to the end. It seems
to assume number_pad on. So I stated that it does.
(Many players never play with number_pad on, and
I'm one of them. I'm not sure of the merit in having
the section in here at all, since it exists in the
Guidebook doesn't it?) How accurate is the text
that is there if you aren't in number_pad mode?