Commit Graph

1921 Commits

Author SHA1 Message Date
PatR
54325de339 fix bz16 - book becoming cursed while being read
Attempting to read a cursed spellbook fails with a nasty effect.  But
a non-cursed book can become cursed while being read (malignant aura
after Wizard has been killed).  Assuming no interruption for other
reasons, the read would finish, the spell be learned, and then the
nasty effect would be given.  This changes things so that if the book
being read becomes cursed and the hero notices (book's bknown flag is
set), the read-in-progress will be interrupted.  Resuming will take
the attempting-to-read-a-cursed-book path.  Unfortunately, if the
hero doesn't notice, the old behavior still applies.  Maybe the new
behavior should happen even if bknown isn't set (but then player
won't be told why the interruption occurred).
2016-01-31 18:22:31 -08:00
PatR
757c51bb3c X11 menus - support pre-selected menu entries
X11 had been ignoring add_menu(..., MENU_SELECTED) to specify a
pre-selected menu entry.  This adds support for that.

Attempt to implement pre-selected entry for PICK_ONE menu sanely by
returning the pre-selected entry instead of toggling it off if the
user chooses it explicitly.   Inner workings of menus are convoluted
so I'm not sure it's 100% correct, although testing hasn't found any
problems.  (tty currently returns 0 for "nothing picked" when
explicitly picking a pre-selected entry in a PICK_ONE menu, and the
core jumps through hoops to handle it.  That can't be cleaned up until
all interfaces which support pre-selected entries achieve sanity.)

Make "random" be chosen for <return> or <enter> during role selection
and highlight it to reflect that.  (Role selection for X11 uses its
own code instead of nethack menus, so pre-selection isn't applicable.)
2016-01-30 19:39:29 -08:00
PatR
31a2b7b5ba fix glob fixes
The impossible about partly eaten glob having more nutrition than
an untouched one after another glob had been absorbed into it was
not a 3.6.0 bug, it was an interim situation when I converted glob
nutrition to be based on glob weight rather than on the creature
corpse weight.  So take that fixes36.1 entry out.

Add one about black puddings that was included in the glob patch.
2016-01-29 16:06:32 -08:00
PatR
b606aea919 more globs... much more globs
Fix a bunch of glob bugs, probably introduce one or two new ones.
2016-01-29 02:07:09 -08:00
David Cohrs
288ac4b07c avoid crash for long lines in nethackrc
read_config_file() has used a buffer of size (4 * BUFSZ) since 3.4.x
so parse_config_line() needs a buffer of the same size to avoid
buffer overrun. Allows my old .nethackrc to work again.
2016-01-28 18:40:59 -08:00
PatR
09ebe44ae9 fix #4206 - feedback for pet's weapon
The report that a tame Archon got two "<pet>'s long sword is not
affected" messages thought there was some duplication error when a
flaming sphere exploded, which was incorrect.  Since an Archon has
two weapon attacks, getting that message twice just meant that both
attacks hit.  However, the player has only 1/6 chance to suffering
passive fire damage to weapon, where monster-on-monster or monster-
on-polyd-hero was inflicting that for every successful hit, so
there was a bug here after all.  Give monsters the same 1/6 chance.
Also, add even more verbosity to that message--now that it won't be
delivered so often--to mention what didn't affect the item.

While investigating this, I noticed that hitting a steam vortex
with a flammable weapon was doing fire damage to that weapon.  Fire
damage in the steam vortex definition makes some sense in that it
allows fire resistance to give protection, but dishing out actual
fire damage makes no sense and is now prevented for passive counter-
effects.
2016-01-27 17:51:02 -08:00
PatR
90c4898c9a fix 2nd part of #H4188 - monst fleeing up on lvl 1
The code to handle monsters fleeing up the upstairs on level 1 was
expecting those stairs to be normal upstairs but they are actually
sstairs like the ones down into the mines.  So monsters fled to the
Plane of Earth instead of escaping the dungeon as intended.
2016-01-26 19:25:21 -08:00
PatR
9085dc2d7e fix #4189 - burning glob of green slime
When destroy_item() or destroy_mitem() burned up a glob of green slime,
they had the message index and damage amount reversed.  This could give
a nonsense message ("the glob of green slime freezes and shatters") or
go out of array bounds and wreak havoc.  Even if the message index had
been correct, fatal damage would have produced an incorrect cause of
death since it would have used a potion or scroll string.

Now globs will boil and explode like potions, and damage will be
proportional to the size (weight) of the glob, which seems to be the
original intent.
2016-01-26 18:32:17 -08:00
PatR
9d1a3be7d7 revert fix for #H4041 - decl for has_color()
Since the attempted fix for the warning about has_color() being
implicitly declared introduced a worse problem of conflicting
declaration in cases where it's already declared, back that change
out.
2016-01-26 17:39:41 -08:00
PatR
489445da02 fix part of #H2343 - youmonst.movement vs poly
From a July 2011 report listing multiple movement anomalies, fix one
of the easier ones.  If you polymorph from a fast from into a slow
one, pending movement points can let the slow form get in some moves
it shouldn't.

I've deliberately avoided adjusting pending movement when you change
into a faster form, which will get it's own movement boost on the
next turn.
2016-01-25 18:18:35 -08:00
PatR
5a9e00d0dd mind flayer's damage
From a followup to #H2247, April 2011...  Physical damage from a mind
flayer attack was inflicted in the AD_DRIN case for hitmu(), then
being inflicted again in the common code after the switch statement.
The new comment explaining the reason for non-standard damage is just
a guess.
2016-01-24 16:23:33 -08:00
PatR
49cbcdb137 fix #4191 - flags.verbose vs level change messages
Suppress the "you climb/fly up the stairs/ladder" message if the
'verbose' option is off (unless punishment is going to augment the
message by "with great effort").
2016-01-23 20:16:37 -08:00
PatR
a21894cc39 tipped ice box corpses
Reported directly to devteam, with patch:  tipping corpses out of an
ice box wasn't restarting their rot timers, producing corpses that
would last indefinitely.
2016-01-23 15:23:45 -08:00
PatR
0ee4611f8f tribute: Wyrd Sisters
I stumbled across why the Death Quotes hadn't been getting displayed
evenly before being recycled:  ones I've added since 3.6.0--probably
even before the release--were unintentionally missing their '%e passage'
directive, so attempted look-up for those returned the very last one
(terminated by '%e title').  The recent change to read_passage() has
made '%e passage' be optional for one-line death quote passages, so
this patch doesn't bother putting them in.
2016-01-23 00:20:15 -08:00
PatR
2bf652dd0f X11_getlin()
Two cosmetic changes for the X11 version of the getlin() routine:
1) Make the text entry box big enough to hold 60 characters before
   sliding the beginning input off the left edge, instead of just 13,
   so that user can see much more of what is being typed;
2) Make the cancel button be a little wider, and the okay button be
   the same width as the cancel button so they look a little nicer.
2016-01-21 23:13:49 -08:00
PatR
885de116e1 fix #H4204 - shapeshifter taking vampire form
When a chameleon/doppelganger/sandestin took vampire or vampire lord
shape, it stopped taking on new shapes.  Vampire shapeshifting was
being applied to all vampires rather than just to is_vampshifter().
When is_vampshifter() is false, the vampire is some other shapeshifter
or Protection_from_shape_changers is in effect, so vampire shifting
doesn't apply.

While testing, I noticed that vampires/lords only turned into bats/
wolves during initial creation.  They did turn into fog clouds in
order to pass closed doors but the other alternate forms were ignored.
That's fixed too.
2016-01-21 02:12:47 -08:00
PatR
0544b998de fix #H4028 - ':' sometimes doesn't work
User had
MSGTTYPE=norep "You see here"
and complained that once the message had been given while walking
over an object, using ':' to intentionally look at something would
end up doing nothing if its feedback was a repeat of "You see here".

Trying to classify which actions should deliberately override
no-repeat (or no-show) will be an ordeal.  This fixes the case for
the ':' command where the user obviously expects feedback.  I think
it could be done better but am settling for something quick and easy.
2016-01-19 07:13:18 -08:00
PatR
a968765a4f status conditions in Guidebook
Update the Guidebook to reflect the recently added conditions displayed
on the status lines.
2016-01-19 01:46:13 -08:00
PatR
83a4234292 whatis_coord - rename 'getpos_coord' option
Rename the option for adding coordinates to autodescribe feedback for
the '/' and ';' commands from 'getpos_coord' to 'whatis_coord', after
the '/' command that uses it instead of after the internal routine
that implements it.  The 'whatis' name was only in dat/hh as far as I
could find, so this changes it to 'what-is' and also updates dat/help
and the Guidebook to mention the name too.

Add a 'screen' choice to the option to show coordinates as row,column
rather than x,y or compass direction(s).  Revise the /m, /M, /o, /O
operations of 'what-is' to honor the whatis_coord option (mostly; a
value of 'none' gets overridden by 'map' to force coordinates).

Also, update the description of the functionality of the '/' command
in the Guidebook.  The .mn version is tested, the .tex one isn't.
2016-01-18 19:27:53 -08:00
nhmall
eee6a87b85 fixes bit 2016-01-16 06:27:05 -05:00
Pasi Kallinen
665bdebcf4 Add fixes entries 2016-01-16 12:20:25 +02:00
PatR
a32b9af88b tribute: Sourcery 2016-01-16 01:59:58 -08:00
nhmall
2a0c69700f win32gui menu color attribute fix
from Alex Kompel...
2016-01-14 23:02:09 -05:00
PatR
fa20ef382d status line update
Adding deafness to the status line spurred me on to something I've
wanted to do for a long time.  This adds 'Stone' and 'Strngl' as
new status conditions, and moves the five fatal ones: "Stone Slime
Strngl FoodPois TermIll" to the front of the status list since
information about them is more important than any of the others.
"Ill" has been renamed "TermIll"; "Df" has been renamed "Deaf";
"Lev", "Fly", and "Ride" are three additional new conditions, with
Lev and Fly being mutually exclusive.  After the fatal ones, the
order of the rest is now
<hunger> <encumbrance> Blind Deaf Stun Conf Hallu Lev Fly Ride

To handle the longer potential status line, the basic bot2() is now
smarter.  If the line is wider than the map, 'T:moves' is moved from
the middle to the end.  If the line without time is still wider than
the map, then experience (HD if polyd, Xp:M/nnnnnn is showexp is on,
or Exp:M) is moved in front of time at the end.  If the line without
experience and time is still wider than the map, dungeon level plus
gold is moved from the beginning to be in front of experience.  The
fields are just reordered, not truncated, so if the interface code
can display lines wider than the map they'll retain the extra info.
The gist is than health and associated fields (Hp, Pw, Ac) get first
priority, status conditions get second priority, then the rest.  In
the usual case where there aren't many conditions, status display is
the same as it has been in the past.

STATUS_VIA_WINDOWPORT has been updated too, and it builds for tty
and X11.  But the bot2() revision to reorder sections has not been
implemented for that.

win/win32/mswproc.c has been updated but not tested.

STATUS_VIA_WINDOWPORT without STATUS_HILITES had several compile
problems; now fixed for core and tty.  STATUS_VIA_WINDOWPORT with
STATUS_HILITES has not been tested.
2016-01-13 19:13:10 -08:00
Pasi Kallinen
1dd37b7fca Make status hilites use same color string matching as menucolors 2016-01-13 20:27:21 +02:00
Pasi Kallinen
c49490dfd4 Rename getpos_coord values to "compass" and "map" 2016-01-13 12:21:27 +02:00
nhmall
fc9cf8cf89 update fixes36.1 2016-01-13 00:12:31 -05:00
PatR
7e01237dce getobj() magic marker candidate items
When applying a magic marker, only list known blank scrolls and known
blank spellbooks as likely candidates to write on.  Accepts any scroll
or book (but non-blank ones will get rejected by the writing code).
Attempting to choose some other class of item yields "that is a silly
thing to write on", same as before.

This was requested during beta testing and I'd swear that I checked it
in a long time ago, but it wasn't here.
2016-01-12 17:50:32 -08:00
Pasi Kallinen
6dd6584e21 Add getpos_coord to fixes file 2016-01-11 21:12:52 +02:00
Pasi Kallinen
0ee5d8ce47 Add getpos_coord option
Allows showing the coordinate when picking a position on the
map with '/' and autodescribe is on.

This is another blind player request
2016-01-11 21:10:51 +02:00
Pasi Kallinen
c902b44b5b Document fixes 2016-01-10 18:54:35 +02:00
Pasi Kallinen
65d780dc3d Add compile-time option MSGHANDLER
This was a feature request from a blind player; he wanted to
play a sound whenever a pline message was given.
2016-01-10 13:08:20 +02:00
Pasi Kallinen
e7d65a44cd TTY: Add compile-time option for tile data hinting
Several people have asked if 3.6.0 supports playing with tiles on
a public server. Because there's no way for the user's end to know
what that white @ is, this adds special console escape codes for
tile hinting.

The idea was originally a patch called TelnetTiles by Justin Hiltscher,
but this expanded version comes via NAO, where it's been in use for years.

This is basically an interim hack, which should go away when/if
we support actual client-server model.
2016-01-10 10:53:15 +02:00
PatR
3a8ce3ff98 fix #H4083 - globs preID'd as "uncursed"
I think there was also a report about this during beta testing.
Killing an ooze, slime, or pudding left a glob of same which had its
bknown flag pre-set so was immediately shown as "uncursed" even to
non-priests.  Use another way to maximize glob mergability:  allow
globs to merge even when one has bknown set and the other doesn't.
2016-01-09 15:28:25 -08:00
PatR
7e3f82ed3c fix #H4187 - doppelgangers posing as Riders...
... never transform and can leave Rider corpses

Riders can't be polymorphed, and the code to prevent that was also
preventing doppelgangers in Rider form from changing shape.

Using ring of protection from shape changers effectively turned such
doppelgangers into actual Riders which would leave self-reviving
corpses.  That didn't prevent Riders from appearing on the Astral
Plane though.
2016-01-09 13:57:15 -08:00
Pasi Kallinen
1e1557ed46 Add extended command #kick
I've seen some complaints about not being able to kick with ^d
so add kick as an extended command.

Also add the missing #exploremode command to the Guidebook.
2016-01-09 13:39:47 +02:00
Pasi Kallinen
7e4e9f263a Update fixes 2016-01-09 13:16:43 +02:00
Pasi Kallinen
a2a1027be1 Fix bz62: Pets walk into poison clouds
Makes monsters who would be damaged by the poison cloud
not walk into it
2016-01-09 02:25:52 +02:00
Pasi Kallinen
befc6a65b5 TTY: Add menu_overlay option
This was a request from a blind player.  It's hard to find
the left edge of the menu when it's drawn on the map, so
clear the screen and align menus to the left edge of the screen
when this option is turned off.

Originally this was called the window edge patch.
2016-01-08 22:17:40 +02:00
Pasi Kallinen
0f5809c924 Add some new database entries 2016-01-07 22:38:33 +02:00
nhmall
8aa0d9e2cc typo spotted 2016-01-07 07:46:20 -05:00
PatR
9fae621778 fix #H4181 - strange death messages
"Petrified by <foo>, while getting stoned." -- multi_reason "while
getting stoned" explains why no last-second recovery could be made,
but doesn't explain how the petrification happened, so suppress it.

"Died of starvation, while fainted from lack of food." -- nethack
does not display this; presumeably the IRC death notices for NAO are
generated from xlogfile entries.  Change 'while fainted from lack of
food' to 'while fainted' at time of death if reason for death is
starvation.  The longer version is accurate but sounds fairly silly.

When starvation is set in motion, set it up before checking whether
the initial faint triggers falling on a wielded cockatrice corpse, so
that fainting isn't applied after recovery in case of life-saving.
2016-01-07 01:53:06 -08:00
PatR
d8591be858 fix #4138 - 'text bug' for freezing moat
Freezing a moat--unlike other types of water--substitutes the type
of water (because that isn't "moat" for Medusa's level) in the freeze
message but was doing so after changing the affected terrain to ICE,
yielding "The ice is bridged with ice."
2016-01-06 17:57:39 -08:00
PatR
22685763d1 getpos() for objects
Extend the 'm' and 'M' functionality (move cursor to nearest monster
or farthest monster, respectively, then to next nearest/next farthest
when used successively) to 'o' and 'O' for objects.

'M' was picking the wrong monster (nearest) on first use; now fixed.
Hero is now included in the monster list, and will be the last one
reached if you cycle all the way through in either direction.  (Makes
it easier to tell that you have actually been all the way through.
Unfortunately, objects don't have any seen-'em-all indicator.  Perhaps
the hero's coordinates should go on that list too?)
2016-01-06 16:47:30 -08:00
Pasi Kallinen
50359a3552 Fix possible lev_comp segfault when map was too tall 2016-01-06 19:49:38 +02:00
Pasi Kallinen
c8d0b04c74 Make the raven medusa level shortsighted
This prevents all of the ravens mobbing the player immediately.

Change via Dynahack by Tung Nguyen
2016-01-06 18:54:56 +02:00
Pasi Kallinen
caf872be05 Allow knife and stiletto as possible tin opening tools
Via Dynahack, original idea from K-mod by Karadoc.
2016-01-06 18:41:13 +02:00
Pasi Kallinen
0a25502593 Fix weight of containers in lev_comp 2016-01-06 18:25:50 +02:00
Pasi Kallinen
c2ceb88d3c Make vault guard accept names starting with number
Fix via Dynahack by Tung Nguyen
2016-01-06 17:28:45 +02:00
Pasi Kallinen
da0e660110 Poison breath leaves a trail of poison gas clouds
Original patch by L
2016-01-06 16:05:43 +02:00