Commit Graph

6627 Commits

Author SHA1 Message Date
PatR
5aa1f3aa08 set_uasmon
Noticed while looking at something else, merging status highlighting
changes introduced a redundant call to polysense() in set_uasmon().
2017-10-04 18:18:21 -07:00
PatR
d9a5190f4d 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.
2017-10-04 17:51:48 -07:00
nhmall
cadd123dc8 Merge branch 'NetHack-3.6.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.0 2017-10-04 19:58:42 -04:00
nhmall
aac1d21255 reference the added file sys/msdos/vesa.h in Files 2017-10-04 19:57:31 -04:00
nhmall
c60db38725 missed file in vesa inclusion back in 2016 2017-10-04 19:55:40 -04:00
Pasi Kallinen
856034d585 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
2017-10-04 22:01:28 +03:00
nhmall
429288cac9 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)'
2017-10-04 12:21:05 -04:00
PatR
8a45da0e8d 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).
2017-10-02 18:25:09 -07:00
PatR
67aaf4ef4c 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.
2017-10-01 18:49:47 -07:00
PatR
63953bc062 !STATUS_HILITE warning fixes
Mostly declarations of static functions which don't exist (due to being
conditionally excluded).  One unused local variable.
2017-10-01 17:20:30 -07:00
PatR
835c4ae075 yet another comment typo 2017-10-01 16:51:07 -07:00
PatR
f18524bef9 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.
2017-10-01 08:16:56 -07:00
Pasi Kallinen
2804e750a0 Default status hilites for Windows 2017-10-01 17:44:41 +03:00
Bart House
78756c9bd6 Addressing bug with the use of static dieroll in uhitm.c. 2017-10-01 14:39:35 +03:00
Bart House
d51f74a507 Fix flashing issue that is seen with STATUS_HILITES in Windows port. 2017-10-01 14:32:43 +03:00
Pasi Kallinen
1027eacbca Give feedback when released from a bear trap 2017-09-28 22:38:08 +03:00
Pasi Kallinen
e2e7e6464d hitpointbar is also available on Windows GUI 2017-09-26 17:45:25 +03:00
Pasi Kallinen
f6070be9e8 Use the existing othropt options array for the menu items 2017-09-26 10:58:26 +03:00
Pasi Kallinen
69f7a78dba Hilite Status: Improved
Allow defining multiple stops per field. Add hitpointbar.
2017-09-26 10:04:25 +03:00
PatR
cac4344754 doname() bookkeeping
doname() for a corpse was using two obufs instead of just one.
2017-09-25 17:17:06 -07:00
PatR
559cddad65 another comment typo 2017-09-25 13:27:12 -07:00
PatR
26dd891038 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.
2017-09-25 13:20:30 -07:00
PatR
a69e4d4ec4 vomit countdown comment typo
A word got left out.
2017-09-25 11:15:29 -07:00
PatR
719af503e7 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.
2017-09-25 10:42:43 -07:00
Pasi Kallinen
596bc64341 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.
2017-09-23 22:47:14 +03:00
PatR
11d5c43b9c 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".
2017-09-22 15:42:29 -07:00
PatR
e589d87d18 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).
2017-09-22 15:08:42 -07:00
Pasi Kallinen
db23363d3f Fix mention_walls reporting secret doors as solid stone 2017-09-22 16:33:20 +03:00
PatR
83056d45d7 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.
2017-09-21 16:35:56 -07:00
PatR
c665d73216 '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.
2017-09-21 15:30:24 -07:00
PatR
f460047983 '#' 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.)
2017-09-20 18:52:53 -07:00
Pasi Kallinen
5aaec6a990 Lint for strncpy return value 2017-09-19 14:12:10 +03:00
Pasi Kallinen
b82b41cb5a Fix possible buffer overrun 2017-09-19 14:09:01 +03:00
Pasi Kallinen
98383f7a46 Win32GUI: Prevent ampersand-escaped mnemonics in menus 2017-09-18 15:30:52 +03:00
Pasi Kallinen
5e05cdc570 Change some regex stuff to use config errors 2017-09-17 13:43:48 +03:00
Pasi Kallinen
45401a13bb 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.
2017-09-17 13:20:28 +03:00
Pasi Kallinen
78e5c9a10a Win32GUI: Allow empty separator lines in menus 2017-09-17 12:17:46 +03:00
Pasi Kallinen
11863dd5e9 Read symbols with config file handler
Also, make config file error handler able to cope with recursion.
2017-09-17 10:15:08 +03:00
Pasi Kallinen
2db7e20116 Fix invisible gold symbol in status lines 2017-09-16 23:49:28 +03:00
Pasi Kallinen
f36d1036de Show in wizmode level teleport menu your current location 2017-09-16 18:19:25 +03:00
PatR
21802dbb4f 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.
2017-09-16 00:43:03 -07:00
Pasi Kallinen
52ed881b2c Remove overview for wizmode regenerated map
The wizmakemap command throws away the current level, so don't keep
the overview data for it around.
2017-09-15 14:45:51 +03:00
PatR
782db48fb5 '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.
2017-09-15 04:34:05 -07:00
PatR
c38dc0edc0 zap.c formatting 2017-09-15 04:33:09 -07:00
Pasi Kallinen
f8bd77ae03 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).
2017-09-14 21:07:18 +03:00
Pasi Kallinen
cfedd8659d Minor reformat, fix warnings 2017-09-14 14:40:11 +03:00
Pasi Kallinen
0753a0751e Move BoH item loss into separate function 2017-09-14 14:11:09 +03:00
PatR
8ff02c11d9 fix #H5856 - Amulet draining energy
The sequence
  You feel the amulet draining your energy away.
  You don't have enough energy to cast that spell.
didn't use any energy or cost any time so the player could try over
and over until the randomly chosen drain amount happened to be low
enough to succeed.

The old behavior was that the cost of the current cast attempt got
incresed by a random amount.  Now, if hero already lacks sufficient
energy to cast the spell, the Amulet's effect won't take place, the
second message will be given, and no energy or time will be consumed.
When there is enough energy to cast the spell, the drain effect will
occur and some energy will be used up immediately (instead of
increasing the cost of this attempt).  The energy drain might then
result in the second message, but if so, a turn will be used.

No longer increasing the energy cost of the current cast has a
side-effect on not increasing the hunger penalty for the current cast
(since that is based on the energy cost) but the energy drain message
doesn't actually imply any effect on hunger.
2017-09-14 00:57:50 -07:00
PatR
cd8f028352 sys/unix/*.c formatting and PANICTRACE fix
I started out just reformatting the function header for regularize()
but ended up doing miscellaneous other stuff, including some code
changes.  I think the CHDIR code is a bit cleaner now, but shouldn't
have any differences in behavior.

Along the way I noticed that 'nethack -dpath' or 'nethack -d path'
modifies argv[] before PANICTRACE attempted to save argv[0], so would
break having nethack invoke gdb to get a backtrace.  ('ARGV0' seems to
be unnecessary since 'hname' holds the same value, but I didn't get rid
of it....)
2017-09-13 15:33:43 -07:00
Pasi Kallinen
127f74bb24 Fix more warnings 2017-09-13 14:12:38 +03:00