]> granicus.if.org Git - nethack/log
nethack
7 years agoX11 player selection compile warnings
PatR [Sat, 14 Oct 2017 00:56:25 +0000 (17:56 -0700)]
X11 player selection compile warnings

This eliminates nearly 40 warnings, most by suppressing complaints of
used function arguments but a few for unused local variables.  There's
also some reformatting thrown in....

There are still 18 warnings about uses of XtSetArg(), about assigning
const to non-const.

7 years agosuppress 'unused arg' warning for !DUMPLOG
PatR [Fri, 13 Oct 2017 23:35:39 +0000 (16:35 -0700)]
suppress 'unused arg' warning for !DUMPLOG

7 years agoQt4: Don't use version string directly
Pasi Kallinen [Fri, 13 Oct 2017 22:33:56 +0000 (01:33 +0300)]
Qt4: Don't use version string directly

7 years agoFix copypaste error in Qt4 and X11 plsel dialogs
Pasi Kallinen [Fri, 13 Oct 2017 20:34:44 +0000 (23:34 +0300)]
Fix copypaste error in Qt4 and X11 plsel dialogs

7 years agoX11: add new player selection dialog
Pasi Kallinen [Fri, 13 Oct 2017 19:41:33 +0000 (22:41 +0300)]
X11: add new player selection dialog

The dialog shows the player's name, race, role, gender, and
alignment in a single window, similar to the Qt4 dialog.
Also allows randomizing the character selection.

Use the dialog by setting OPTIONS=player_selection:dialog

7 years agooptions: ascii_map vs tiled_map
PatR [Thu, 12 Oct 2017 22:21:00 +0000 (15:21 -0700)]
options: ascii_map vs tiled_map

X11 supports both ascii map and tiled map and is able to switch back
and forth during play.  'O' shows both of them as boolean options, but
toggling ascii_map did nothing since tiled_map retained whatever value
it had at the time.  For core options handling, make toggling either
ascii_map or tiled_map also set the other one to the opposite value,
so ascii on forces tiled off and vice versa.

7 years agoX11 WC_ flags
PatR [Thu, 12 Oct 2017 22:18:26 +0000 (15:18 -0700)]
X11 WC_ flags

Add a few windowing capability flags that were omitted for X11.  There
may be others which ought to be set too; I don't understand a bunch of
them.

7 years agoQt4: Remove extra empty space from player selection
Pasi Kallinen [Thu, 12 Oct 2017 10:43:46 +0000 (13:43 +0300)]
Qt4: Remove extra empty space from player selection

7 years agoQt4: Add Random button to player selection
Pasi Kallinen [Thu, 12 Oct 2017 10:37:52 +0000 (13:37 +0300)]
Qt4: Add Random button to player selection

7 years agoQt4: Gender, not Sex. TOURIST is unconditional.
Pasi Kallinen [Thu, 12 Oct 2017 09:42:32 +0000 (12:42 +0300)]
Qt4: Gender, not Sex. TOURIST is unconditional.

7 years agoQt4: Add NetHack version to player selection popup
Pasi Kallinen [Thu, 12 Oct 2017 09:33:04 +0000 (12:33 +0300)]
Qt4: Add NetHack version to player selection popup

7 years agoX11 default resources - macro expansion
PatR [Thu, 12 Oct 2017 00:29:55 +0000 (17:29 -0700)]
X11 default resources - macro expansion

The X11 interface reads file NetHack.ad (after cd'ing to the playground
directory, where 'make install' puts a copy) and feeds the contents to
X Windows for use as default resources to override the compiled in
defaults.  When use of #define was introduced into NetHack.ad (back in
September, 2016) this was severely hobbled and startup spit out a lot
complaints to stderr about invalid resource values.  This implements
rudimentary macro expansion for '#define name value' within the data
stream that's fed to X, getting back decent default values and
eliminating the invalid value complaints.

7 years agoQt4: Put yn queries in message history
Pasi Kallinen [Wed, 11 Oct 2017 06:50:18 +0000 (09:50 +0300)]
Qt4: Put yn queries in message history

When using OPTIONS=popup_dialog, or compiling with USE_POPUPS,
the yes/no -questions weren't put into the message history.

7 years agocontext menu tweaks
PatR [Tue, 10 Oct 2017 22:56:18 +0000 (15:56 -0700)]
context menu tweaks

Fix several warnings about using 'void *' for a function pointer and
a couple of unused variables.  Add a_nfunc for 'int NDECL((*func))'
alternative for union anything.  Make the enum list of union anything
types actually match the alternatives (field a_uchar was missing from
enums, enum mask32 had no corresponding a_mask32 field).

Add another command, #therecmdmenu, so that the context menu for an
adjacent spot can be tested without mouse support.  It revealed that
you could get an empty menu if nothing applicable was at target spot.

Add a few adjacent actions:  lock/unlock door if carrying suitable
implement, search door for traps, examine known trap (door/ceiling,
not door), #untrap known trap, mount saddled critter, remove saddle.
Make "kick door" be the last choice for closed door instead of first.

Add one 'here' action:  dismount.

Both #herecmdmenu and #therecmdmenu interact strangely with ^A, but
differently from each other.  I didn't make any attempt to solve this.

There's no documentation for #therecmdmenu.

7 years agoQt4: Save message history to dumplog
Pasi Kallinen [Tue, 10 Oct 2017 22:06:07 +0000 (01:06 +0300)]
Qt4: Save message history to dumplog

7 years agoQt4: Handle saving/loading message history
Pasi Kallinen [Tue, 10 Oct 2017 21:32:39 +0000 (00:32 +0300)]
Qt4: Handle saving/loading message history

7 years agoQt4: put and get message history
Pasi Kallinen [Tue, 10 Oct 2017 19:55:30 +0000 (22:55 +0300)]
Qt4: put and get message history

7 years agoQt4: Pile mark
Pasi Kallinen [Tue, 10 Oct 2017 18:47:35 +0000 (21:47 +0300)]
Qt4: Pile mark

7 years agoQt4: Fix wrong condition in search blocking
Pasi Kallinen [Tue, 10 Oct 2017 18:13:37 +0000 (21:13 +0300)]
Qt4: Fix wrong condition in search blocking

7 years agoQt4: Don't segfault with QT_COMPACT
Pasi Kallinen [Tue, 10 Oct 2017 17:18:04 +0000 (20:18 +0300)]
Qt4: Don't segfault with QT_COMPACT

7 years agoQt4: Use generic putmixed routine
Pasi Kallinen [Tue, 10 Oct 2017 16:56:51 +0000 (19:56 +0300)]
Qt4: Use generic putmixed routine

7 years agoQt4: Prevent selecting all in pick-one menus
Pasi Kallinen [Tue, 10 Oct 2017 16:28:03 +0000 (19:28 +0300)]
Qt4: Prevent selecting all in pick-one menus

7 years agoQt4: Allow clicking anywhere in menus
Pasi Kallinen [Tue, 10 Oct 2017 16:19:17 +0000 (19:19 +0300)]
Qt4: Allow clicking anywhere in menus

Instead of requiring clicking on the checkbox, allow clicking
anywhere in a selectable line to select it.

7 years agoQt4: handle menu page selector keys
Pasi Kallinen [Tue, 10 Oct 2017 15:20:29 +0000 (18:20 +0300)]
Qt4: handle menu page selector keys

Qt4 doesn't do menu paging, so handle the select page, invert page,
and unselect page like selecting, inverting or unselecting all.

7 years agoComplain if hints file does not exist
Pasi Kallinen [Tue, 10 Oct 2017 14:50:39 +0000 (17:50 +0300)]
Complain if hints file does not exist

7 years agoAdd context menu for the location next to you
Pasi Kallinen [Tue, 10 Oct 2017 13:49:07 +0000 (16:49 +0300)]
Add context menu for the location next to you

7 years agoAdd context menu for current location
Pasi Kallinen [Tue, 10 Oct 2017 12:29:46 +0000 (15:29 +0300)]
Add context menu for current location

Add a new boolean option herecmd_menu. If this is on, and using
a windowport that supports mouse, clicking on your character pops
up a menu of actions doable in that location. Basically this is
nothing new, as almost all of the same actions were done before
on the mouse click.

You can also pop up the context menu with the #herecmdmenu
extended command

7 years agohurtling into unseen monsters
PatR [Tue, 10 Oct 2017 00:34:02 +0000 (17:34 -0700)]
hurtling into unseen monsters

Expand "You bump into it." into something more comprehensive when
encountering an unseen monster while hurtling.  Tested with jumping
but other forms of hurtling should behave the same.

7 years agofix #H6203 - jumping over water doesn't
PatR [Mon, 9 Oct 2017 22:27:24 +0000 (15:27 -0700)]
fix #H6203 - jumping over water doesn't

Accidentally caused by my grappling hook fix 2 months ago, attempting
to jump over water made hero enter that water and drown (or crawl out).
hurtle_step() was originally intended to be used for recoil while
levitating, but it is used in other situations where not levitating
and behavior for the two circumstances should be different.

This doesn't fix things properly, just gets jumping working again.

7 years agoWin32GUI: Clear selection counts for perm invent
Bart House [Mon, 9 Oct 2017 19:45:22 +0000 (12:45 -0700)]
Win32GUI: Clear selection counts for perm invent

7 years agoWin32GUI: Use a back buffer for all status rendering
Bart House [Mon, 9 Oct 2017 04:13:33 +0000 (21:13 -0700)]
Win32GUI: Use a back buffer for all status rendering

This eliminates all flickering when status is updated.

7 years agoWin32GUI: Fix bug with specifying no color for status hilite.
Bart House [Mon, 9 Oct 2017 00:33:20 +0000 (17:33 -0700)]
Win32GUI: Fix bug with specifying no color for status hilite.

We were mapping NO_COLOR to white instead of the default foreground color.

7 years agoWin32GUI: Set main window background brush to black.
Bart House [Mon, 9 Oct 2017 00:32:58 +0000 (17:32 -0700)]
Win32GUI: Set main window background brush to black.

Black is a better choice given that the map background
will always be black. This also creates a better polished
experience when all window backgrounds are set to black.

7 years agofix #6144 - strength loss from severe hunger
PatR [Mon, 9 Oct 2017 01:12:08 +0000 (18:12 -0700)]
fix #6144 - strength loss from severe hunger

It was possible to arbitrarily boost strength (up to its race-specific
limit) by wearing a ring of sustain ability, becoming weak from hunger
(but not actually losing strength due to Fixed_abil), removing the ring,
eating enough to stop being Weak, then repeat as desired.  I think you
could substitute polymorph for wearing ring, and rehumanize for removing
ring and get similar results, although that would be more tedious.

My first attempt to fix this was a lot more complicated.  This one puts
the temporary strength loss in ATEMP(A_STR) where it carries over from
normal form to polymophed form and back.  Fixed_abil doesn't prevent the
loss any more, nor its recovery.

One side-effect of the change is that the possibility of dying when
becoming weak from hunger (if Str gets down to 3, further attempts to
lower it take away HP instead of Str) no longer exists.  Using ATEMP()
instead of directly manipulating ABASE() means that current strength is
less but underlying base strength does not actually drop any more.

7 years agoWin32GUI: increase scroll_margin
Pasi Kallinen [Sun, 8 Oct 2017 15:56:07 +0000 (18:56 +0300)]
Win32GUI: increase scroll_margin

Scrolling when 5 tiles from the edge is far too little,
you could get zapped from farther away.

7 years agowin32: Turn off autopickup by default
Pasi Kallinen [Sun, 8 Oct 2017 15:36:53 +0000 (18:36 +0300)]
win32: Turn off autopickup by default

Watching new players stream NetHack, the conclusion is that
everyone turns off autopickup by default... once they learn how
to do it.

7 years agostill more Master Key of Thievery
PatR [Sun, 8 Oct 2017 10:29:16 +0000 (03:29 -0700)]
still more Master Key of Thievery

Make #untrap while carrying the non-cursed (for rogues) or blessed
(for non-rogues) Key work the same as #invoke has been doing (without
regard to its bless/curse state):  when used on trapped door or chest,
that trap will always be found and disarming it will always succeed.

It should work when carried by monsters too:  if they try to open a
trapped door while carrying the Key (must be blessed since they're
not rogues) the trap will be automatically disarmed.  (Caveat:  that
hasn't been adequately tested.)

TODO (maybe...):  change the #invoke property to detect unseen/secret
door detection instead of #untrap.  The latter isn't completely
redundant; it works when the Key is cursed.  But quest artifacts
strongly resist becoming cursed so that isn't a particularly useful
distinction.

Also, trap hints when wielding the Key without gloves didn't notice
adjacent door and chest traps.  Now it does.  And the behavior is
slightly different:  known traps covered by objects or monsters are
treated like unknown traps as far as the hot/cold hints go.

7 years agoQt4: Use TIMED_DELAY and same delay as tty
Pasi Kallinen [Sun, 8 Oct 2017 08:28:28 +0000 (11:28 +0300)]
Qt4: Use TIMED_DELAY and same delay as tty

7 years agoAutomatically define LINUX, ifdef __linux__
Pasi Kallinen [Sun, 8 Oct 2017 07:44:59 +0000 (10:44 +0300)]
Automatically define LINUX, ifdef __linux__

7 years agoEnable dumplogs for X11 and Qt4
Pasi Kallinen [Sun, 8 Oct 2017 00:04:52 +0000 (03:04 +0300)]
Enable dumplogs for X11 and Qt4

7 years agoWindows GUI supports WC2_HILITE_STATUS
Bart House [Sat, 7 Oct 2017 17:53:03 +0000 (10:53 -0700)]
Windows GUI supports WC2_HILITE_STATUS

Avoids raw_print on startup

7 years agoQt4: Add menucolors
Pasi Kallinen [Sat, 7 Oct 2017 22:45:46 +0000 (01:45 +0300)]
Qt4: Add menucolors

The Qt4 windowport already supported my 3.4.3 menucolors patch, so
adding that was simple.

7 years agoWin32GUI: Fix permanent inventory window going away
Bart House [Sat, 7 Oct 2017 21:00:09 +0000 (14:00 -0700)]
Win32GUI: Fix permanent inventory window going away

Fix bug where permanent inventory window would go away after
any operation that used the inventory window to pick items. Since
we were hiding the permanent inventory window, this would also
leave a space filled with white, creating jarring visual if
using dark themed window backgrounds.

7 years agoAdd Qt4 windowport
Pasi Kallinen [Sat, 7 Oct 2017 17:26:02 +0000 (20:26 +0300)]
Add Qt4 windowport

Originally by Ray Chason for 3.4.3, based on the Qt windowport by
Warwick Allison. The look and feel is mostly the same.

Some improvements over the Qt 3 interface are:

* Panes are resizable
* Full support for IBMgraphics, and walls and corridors are drawn with
  graphical primitives for a continuous appearance no matter what the font
  says
* Lots of irritating glitches fixed
* Menus support proportional fonts correctly

Adding this because the old Qt windowport cannot be compiled on Qt4,
even with Qt3 compatibility stuff.

TODO:
 - background map glyphs
 - status hilites
 - menucolors

7 years agoUse enums for skills
Pasi Kallinen [Sat, 7 Oct 2017 14:10:46 +0000 (17:10 +0300)]
Use enums for skills

7 years agoUnmap invisible glyphs when cleaving and no monster present
Pasi Kallinen [Sat, 7 Oct 2017 13:30:17 +0000 (16:30 +0300)]
Unmap invisible glyphs when cleaving and no monster present

7 years agoFold invisible glyph unmapping into single function
Pasi Kallinen [Sat, 7 Oct 2017 13:24:49 +0000 (16:24 +0300)]
Fold invisible glyph unmapping into single function

7 years agoSet the local working directory when debugging to $BinDir.
Bart House [Sat, 7 Oct 2017 01:57:15 +0000 (18:57 -0700)]
Set the local working directory when debugging to $BinDir.

This is needed to ensure the defaults.nh is found.

7 years agomore Master Key of Thievery: lock/unlock vs traps
PatR [Sat, 7 Oct 2017 09:28:20 +0000 (02:28 -0700)]
more Master Key of Thievery: lock/unlock vs traps

Always find traps when using the rogue's quest Key to lock or unlock a
trapped door or chest provided that the Key is not cursed (for rogues)
or is blessed (for non-rogues).  When a trap is found, the player is
given the opportunity to disarm it, and doing so will always succeed.
(It isn't disarmed automatically; the player may prefer to leave traps
in place, presumably hoping to set up a dangerous bones file.  Or he
or she may be unaware of the guaranteed success and be too timid to
risk trying to disarm the trap.)

TODO:  make #untrap of a door or chest while carrying that Key always
find traps (with same bless/curse requirements as above).  And maybe
change its #invoke property from untrap to detect unseen/secret door
detection since current invoke power would become redundant.

Also, move a bunch of new artifact abilities from the fixes section to
the new features section in fixes36.1.

7 years agomaster key of thievery data.base entry
PatR [Fri, 6 Oct 2017 08:13:17 +0000 (01:13 -0700)]
master key of thievery data.base entry

Make the description of the rogue's Key be more accurate:  it disarms
trapped door and check locks rather than "any trap".

7 years agoMaster Key of Thievery warns about undetected traps
Pasi Kallinen [Thu, 5 Oct 2017 22:14:00 +0000 (01:14 +0300)]
Master Key of Thievery warns about undetected traps

If the key is wielded and touching skin (that is, you're not
wearing gloves), it will give heat-related messages like
minesweeper, counting the undetected traps around player.

7 years agountrap() formatting bits
PatR [Thu, 5 Oct 2017 09:38:25 +0000 (02:38 -0700)]
untrap() formatting bits

7 years agoSTATUS_HILITES vs multiple interface binary
PatR [Thu, 5 Oct 2017 09:01:18 +0000 (02:01 -0700)]
STATUS_HILITES vs multiple interface binary

My tty+X11 binary was letting me see and modify status highlights under
X11 even though they don't do anything.  Options parsing has to accept
them since we don't know which interface will be chosen, but interactive
option handling does know and shouldn't show inappropriate options.

initoptions_finish() should probably we validating all the wc and wc2
options, but I only added a check for trying to enable statushilites
when they're unavailable.

7 years agoset_uasmon
PatR [Thu, 5 Oct 2017 01:18:21 +0000 (18:18 -0700)]
set_uasmon

Noticed while looking at something else, merging status highlighting
changes introduced a redundant call to polysense() in set_uasmon().

7 years agooptions vs !BACKWARD_COMPAT
PatR [Thu, 5 Oct 2017 00:51:48 +0000 (17:51 -0700)]
options vs !BACKWARD_COMPAT

Give sensible feedback for obsolete options if options.c is modified
to #undef BACKWARD_COMPAT.  Affects boulder, DECgraphics, IBMgraphics,
and MACgraphics.

7 years agoMerge branch 'NetHack-3.6.0' of https://rodney.nethack.org:20040/git/NHsource into...
nhmall [Wed, 4 Oct 2017 23:58:42 +0000 (19:58 -0400)]
Merge branch 'NetHack-3.6.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.0

7 years agoreference the added file sys/msdos/vesa.h in Files
nhmall [Wed, 4 Oct 2017 23:57:31 +0000 (19:57 -0400)]
reference the added file sys/msdos/vesa.h in Files

7 years agomissed file in vesa inclusion back in 2016
nhmall [Wed, 4 Oct 2017 23:55:40 +0000 (19:55 -0400)]
missed file in vesa inclusion back in 2016

7 years agoCleaver can hit three monsters with one swing
Pasi Kallinen [Wed, 4 Oct 2017 19:01:03 +0000 (22:01 +0300)]
Cleaver can hit three monsters with one swing

When hitting a monster with the Cleaver, you swing it in an
arc, possibly hitting the monsters to the left and right of
the targeted monster.

Based on code by Fredrik Ljungdahl

7 years agofirst build in a long while, clear up a warning
nhmall [Wed, 4 Oct 2017 16:21:05 +0000 (12:21 -0400)]
first build in a long while, clear up a warning

..\src\options.c(4005) : warning C4113: 'int (__cdecl *)()' differs in parameter lists from 'int (__cdecl *)(void)'

7 years agofeature options (#version output)
PatR [Tue, 3 Oct 2017 01:25:09 +0000 (18:25 -0700)]
feature options (#version output)

I've sometimes seen
  , and basic NetHack features.
as the last line of the features section from '#version'.  I thought
it was due to the way feature phrases were split into individual words
by makedefs, but it turned out to be due to inserting pattern matching
method at run-time.  That dynamic options update had a second problem:
if the final phrase "and basic NetHack features" was split across two
lines, the run-time substitution didn't find it and the pattern matching
entry ended up being left out.  This fixes both problems, but if future
dynamic entries become more complex, the phrase-splitting/word-wrapping
being done by makedefs may need to be moved into nethack.

Also, add entries for XLOGFILE and PANICLOG to makedefs' options and
re-order a couple of existing ones alphabetically (a failry hopeless
endeavor).

7 years agomore !STATUS_HILITES - option parsing
PatR [Mon, 2 Oct 2017 01:49:47 +0000 (18:49 -0700)]
more !STATUS_HILITES - option parsing

When built without STATUS_HILITES, don't treat highlighting options as
if they were unknown.  This may need some tweaking; the feedback feels
a bit intrusive so perhaps 'statushilites' and 'hilite_status' should
just be ignored when not available.

'hitpointbar' now relies on wc2 handling instead of being conditionally
present.

7 years ago!STATUS_HILITE warning fixes
PatR [Mon, 2 Oct 2017 00:20:30 +0000 (17:20 -0700)]
!STATUS_HILITE warning fixes

Mostly declarations of static functions which don't exist (due to being
conditionally excluded).  One unused local variable.

7 years agoyet another comment typo
PatR [Sun, 1 Oct 2017 23:51:07 +0000 (16:51 -0700)]
yet another comment typo

7 years agohmon() arg fix
PatR [Sun, 1 Oct 2017 15:16:56 +0000 (08:16 -0700)]
hmon() arg fix

The call to hmon() in flooreffects() was passing a boolean where int
is expected.  The 'thrown' argument may have once been a boolean, but
it is 'int' for as far back as the repository history goes.

7 years agoDefault status hilites for Windows
Pasi Kallinen [Sun, 1 Oct 2017 14:44:41 +0000 (17:44 +0300)]
Default status hilites for Windows

7 years agoAddressing bug with the use of static dieroll in uhitm.c.
Bart House [Mon, 25 Sep 2017 06:24:36 +0000 (23:24 -0700)]
Addressing bug with the use of static dieroll in uhitm.c.

7 years agoFix flashing issue that is seen with STATUS_HILITES in Windows port.
Bart House [Sun, 1 Oct 2017 01:14:33 +0000 (18:14 -0700)]
Fix flashing issue that is seen with STATUS_HILITES in Windows port.

7 years agoGive feedback when released from a bear trap
Pasi Kallinen [Thu, 28 Sep 2017 19:38:04 +0000 (22:38 +0300)]
Give feedback when released from a bear trap

7 years agohitpointbar is also available on Windows GUI
Pasi Kallinen [Tue, 26 Sep 2017 14:45:25 +0000 (17:45 +0300)]
hitpointbar is also available on Windows GUI

7 years agoUse the existing othropt options array for the menu items
Pasi Kallinen [Tue, 26 Sep 2017 07:58:26 +0000 (10:58 +0300)]
Use the existing othropt options array for the menu items

7 years agoHilite Status: Improved
Pasi Kallinen [Tue, 26 Sep 2017 07:04:19 +0000 (10:04 +0300)]
Hilite Status: Improved

Allow defining multiple stops per field. Add hitpointbar.

7 years agodoname() bookkeeping
PatR [Tue, 26 Sep 2017 00:17:06 +0000 (17:17 -0700)]
doname() bookkeeping

doname() for a corpse was using two obufs instead of just one.

7 years agoanother comment typo
PatR [Mon, 25 Sep 2017 20:27:12 +0000 (13:27 -0700)]
another comment typo

7 years agocandelabrum weight and burn out
PatR [Mon, 25 Sep 2017 20:20:30 +0000 (13:20 -0700)]
candelabrum weight and burn out

Adjust the Candelabrum of Invocation's weight when it has candles
attached.  This has been a known issue ever since the candelabrum and
candles were introduced.

When the candelabrum burns out, update persistent inventory window to
show that it no longer has candles.

7 years agovomit countdown comment typo
PatR [Mon, 25 Sep 2017 18:15:29 +0000 (11:15 -0700)]
vomit countdown comment typo

A word got left out.

7 years agofix #H6104 - no potion handling in thitu()
PatR [Mon, 25 Sep 2017 17:42:43 +0000 (10:42 -0700)]
fix #H6104 - no potion handling in thitu()

thitu() is mostly used for arrows and darts "thrown" by traps, but
scatter() uses it on items launched by a land mine explosion.  Traps
had no need for potion handling, but scattering does.  Changing thitu()
to call potionhit() required that more information be passed to the
latter in case killer reason was needed, and thitu()'s callers needed
to be updated since it now might use up its missile (only when that's
a potion, so scatter() is only caller which actually needed to care).

Quite a bit of work--especially the testing--for something which will
never be noticed in actual play.  In hindsight, it would have been
much simpler just to make scatter destroy all potions rather than
allow the 1% chance of remaining intact (via obj_resists()), or else
leave any intact ones at the explosion spot instead of launching them.

7 years agoAdd option to make commands ask an inventory item via menu
Pasi Kallinen [Sat, 23 Sep 2017 19:47:09 +0000 (22:47 +0300)]
Add option to make commands ask an inventory item via menu

Turning the boolean option force_invmenu makes all the commands
that ask for an inventory item pop up a menu instead of asking
a text query.  This should be much more friendlier to new
players, and is very useful for window ports on systems
with touch screens and no physical keyboard, such as cell phones.

7 years agomore vomit countdown
PatR [Fri, 22 Sep 2017 22:42:29 +0000 (15:42 -0700)]
more vomit countdown

The new "You vomit!" message shouldn't happen if you're polymorphed
into a rat.

The old "You gag unconrolably!" message misspelled "uncontrollably".

7 years agovulnerable items thrown into lava
PatR [Fri, 22 Sep 2017 22:08:42 +0000 (15:08 -0700)]
vulnerable items thrown into lava

Reported directly to devteam, player threw a troll corpse into lava and
then later got messages about it reviving and burning to death.  Items
thrown, kicked, or dropped into lava were being subjected to fire damage
(so scrolls burned up, potions boiled, non-fireproofed flammable weapons
and armor eroded), but corpses and a lot of other stuff not subject to
erosion remained unaffected.  This makes things that are made out of
wood, cloth, flesh and other flammable stuff burn up (when in lava, not
when hit by fire).

7 years agoFix mention_walls reporting secret doors as solid stone
Pasi Kallinen [Fri, 22 Sep 2017 13:31:31 +0000 (16:31 +0300)]
Fix mention_walls reporting secret doors as solid stone

7 years agofix #H4919 - vomit message sequencing
PatR [Thu, 21 Sep 2017 23:35:56 +0000 (16:35 -0700)]
fix #H4919 - vomit message sequencing

The countdown for delayed vomiting gave message "you suddenly vomit!"
at T-2, allowing you to move some more, then vomit at T-0 with no
message, finally at T+2 get "you can move again", making it seem as
if the program was letting you move during a time it thought that you
couldn't move.  Also, there was nothing "sudden" about it since it was
near the end of a 15 or so turn sequence where a few other messages
are given leading up to that.

Change it to
T-2: You are about to vomit.  // different wording
T-0: You vomit!               // new message
so that "you can move again" more clearly refers to the actual event.

7 years ago'nulls[]' vs saving traps and fruit
PatR [Thu, 21 Sep 2017 22:30:24 +0000 (15:30 -0700)]
'nulls[]' vs saving traps and fruit

It was once pointed out that
  static long nulls[ sizeof (struct trap) + sizeof (struct fruit) ];
should have been
  static long nulls[ max(sizeof (struct trap), sizeof (struct fruit)) ];
which is right, but using an array of longs to represent a null trap or
null fruit doesn't handle pointers properly so replace 'nulls' with
separate structs.  This doesn't recover the previously wasted memory
(fairly trivial since these structs are small) but does guarantee that
null pointers in the relevant structs always have a valid value instead
of just all bits zero.

7 years ago'#' command fix for 'extmenu'
PatR [Thu, 21 Sep 2017 01:52:53 +0000 (18:52 -0700)]
'#' command fix for 'extmenu'

While doing some cleanup I found an old personal bug list with four
entries.  Two have already been fixed, or at least I couldn't reproduce
them with current code, one is still pending (dungeon overview feedback
is inconsistent if you find an unlit temple and haven't seen its altar
yet), plus this one:  a buffer overflow (triggering a crash for me) in
wizard mode if you turn on the 'extmenu' option and start an extended
command.  The menu can't handle long line width for 'w' with all its
wizthis and wizthat entries; strcat() goes out of bounds writing into
a local array.

(This bug predates the keybinding patch that turned all commands into
extended commands.)

7 years agoLint for strncpy return value
Pasi Kallinen [Tue, 19 Sep 2017 11:12:10 +0000 (14:12 +0300)]
Lint for strncpy return value

7 years agoFix possible buffer overrun
Pasi Kallinen [Tue, 19 Sep 2017 11:08:58 +0000 (14:08 +0300)]
Fix possible buffer overrun

7 years agoWin32GUI: Prevent ampersand-escaped mnemonics in menus
Pasi Kallinen [Mon, 18 Sep 2017 12:30:52 +0000 (15:30 +0300)]
Win32GUI: Prevent ampersand-escaped mnemonics in menus

7 years agoChange some regex stuff to use config errors
Pasi Kallinen [Sun, 17 Sep 2017 10:43:48 +0000 (13:43 +0300)]
Change some regex stuff to use config errors

7 years agoShow regex error before asking for color
Pasi Kallinen [Sun, 17 Sep 2017 10:20:25 +0000 (13:20 +0300)]
Show regex error before asking for color

When entering a new menucolor via options, show regex error
immediately afterwards, instead of asking for color and attribute
before showing the error.

Also actually show config errors even if config error handler
hasn't been initialized.

7 years agoWin32GUI: Allow empty separator lines in menus
Pasi Kallinen [Sun, 17 Sep 2017 09:17:46 +0000 (12:17 +0300)]
Win32GUI: Allow empty separator lines in menus

7 years agoRead symbols with config file handler
Pasi Kallinen [Sun, 17 Sep 2017 07:15:04 +0000 (10:15 +0300)]
Read symbols with config file handler

Also, make config file error handler able to cope with recursion.

7 years agoFix invisible gold symbol in status lines
Pasi Kallinen [Sat, 16 Sep 2017 20:49:28 +0000 (23:49 +0300)]
Fix invisible gold symbol in status lines

7 years agoShow in wizmode level teleport menu your current location
Pasi Kallinen [Sat, 16 Sep 2017 15:17:56 +0000 (18:17 +0300)]
Show in wizmode level teleport menu your current location

7 years agofix #H6042 - leash use while engulfed
PatR [Sat, 16 Sep 2017 07:43:03 +0000 (00:43 -0700)]
fix #H6042 - leash use while engulfed

Prevent using a leash while engulfed.  If someone wants to supply a
better message, go ahead.  I just tried to get the logic straight.
(The new swallowed part is easy; the previous lack of handling for
remembered unseen monsters wasn't quite so easy.)

Applying a leash was always using a move, even if player cancelled
at the prompt to pick an adjacent monster.  Now some of the early
exits don't use a move.

7 years agoRemove overview for wizmode regenerated map
Pasi Kallinen [Fri, 15 Sep 2017 11:45:51 +0000 (14:45 +0300)]
Remove overview for wizmode regenerated map

The wizmakemap command throws away the current level, so don't keep
the overview data for it around.

7 years ago'fix' #H5531 - breath damage
PatR [Fri, 15 Sep 2017 11:34:05 +0000 (04:34 -0700)]
'fix' #H5531 - breath damage

For breath damage, the 'S' in NdS is ignored.  'N' for the number of
dice is used, but for number of sides of those dice, 6 is used for
most damage types.  Add a comment to that effect to monst.c and change
a few Nd8 to Nd6 so that viewing the monster definitions matches what
they actually do.

7 years agozap.c formatting
PatR [Fri, 15 Sep 2017 11:33:09 +0000 (04:33 -0700)]
zap.c formatting

7 years agoUse symbolic names for shop repair costs
Pasi Kallinen [Thu, 14 Sep 2017 18:04:56 +0000 (21:04 +0300)]
Use symbolic names for shop repair costs

...and add costs to two places where the door you touched
blew up (picking the lock and opening the door).

7 years agoMinor reformat, fix warnings
Pasi Kallinen [Thu, 14 Sep 2017 11:40:11 +0000 (14:40 +0300)]
Minor reformat, fix warnings

7 years agoMove BoH item loss into separate function
Pasi Kallinen [Thu, 14 Sep 2017 11:11:09 +0000 (14:11 +0300)]
Move BoH item loss into separate function