Commit Graph

126 Commits

Author SHA1 Message Date
nhmall
7019a7da77 fix H4101: can hear pets while deaf
This is a fix for H4101, bz192.

add non-audio (felt) outcome to yelp()

This also add #wizintrinsic command because testing this was a pain
without a simple, straightforward way to go deaf that didn't time-out
before the situation being tested recurred.
2015-12-18 12:50:25 -05:00
Pasi Kallinen
24aea231d4 Add fixes entries 2015-12-18 18:49:50 +02:00
PatR
20b2120f3f fix bz 103+#H4095 - high scores ", while helpless"
If a character dies with 'multi' at a non-zero value, the reason for
helplessness is appended to the cause of death.  But that was taking
place in writeentry(), which is used for every score entry while
rewriting 'record' when a new high score is added.  So whenever a new
score with helplessness was added, all existing entries got corrupted
by having the newest game's reason for helplessness tacked on.

Append the helplessness reason while formatting the cause of death
instead of when writing out score and logfile entries.  xlogfile is
handled a little differently in case the cause of death plus reason
for helplessness is too long so truncated for record and logfile.
Full reason is still put into xlogfile.
2015-12-17 19:50:06 -08:00
nhmall
3e597b6882 Fix bug C343-20 wrong level shown at death
Changes to be committed:
	modified:   doc/fixes36.1
	modified:   src/ball.c

I looked up the original bug report that led to bug page C343-20
"When dying immediately on entering a level, the map may show you dying on the previous level."

It was received public report U891:
> When one is being punished and goes down a staircase and dies because the
> ball and chain fell on their head, one gets the message about their death
> while the old level is still being displayed. I wasn't sure whether this
> was a bug or not because on one hand it wouldn't make much sense to
> generate a new level if the character is going to die anyway. However,
> that being said it does make a difference if the character is about to go
> down into a level where one cannot leave bones files, ie medusa or the
> first level of the mines (if i remember correctly). So, if your character
> dies from this does the bones file get left on the level you were on
> (which is still displayed at the time of death) or the level you died as
> soon as you got to (but was never displayed)? Thanks!

Pat had remarked in response: "So this is just a display issue; game play works as intended
(for the program; I imagine you weren't planning to get killed."

A debug trace in wizard mode 3.6.1 beta shows that the relevant code path is this:
NetHack.exe!done(int how) Line 908
NetHack.exe!losehp(int n, const char * knam, char k_format) Line 2678
NetHack.exe!drag_down(...) Line 823
NetHack.exe!goto_level(d_level * newlevel, char at_stairs, char falling, char portal) Line 1316
NetHack.exe!next_level(char at_stairs) Line 1157
NetHack.exe!dodown(...) Line 954
NetHack.exe!rhack(char * cmd) Line 3416
NetHack.exe!moveloop(char resuming) Line 464
NetHack.exe!main(int argc, char * * argv) Line 104

This patch clears the display for the situation in drag_down(),
so the old level is not shown.
2015-12-17 20:27:42 -05:00
PatR
8f2a408ef3 fix #H4065 - unnecessary role select confirmation
If player specified all four facets of role:  role, race, gender, and
alignment, via command line or option settings, the tty interface still
asked the player to confirm whether the character's role/&c was ok?
Skip that confirmation when all four things have already been chosen.
2015-12-17 06:37:08 -08:00
PatR
d68bb738d2 fix #H4095 - naming discoveries list
The menu for picking an item to name when using the "on discoveries list"
choice for #name or C when that list spanned multiple pages was exiting
for <space> instead of advancing to next page.  Space was being assigned
as the selection letter for class header lines, which made no sense.
2015-12-16 18:16:39 -08:00
PatR
af6887796f scrolls written while blind; scrolls of mail
Make a fix suggested during beta testing:  you can read scrolls while
blind if you know the label, and you can write a scroll with a magic
marker while blind, but the result was flagged as description unknown
so you couldn't read the newly written scroll until regaining sight
or obtaining object identification.  So change writing a previously
discovered scroll while blind to set dknown since a successful write
always yields the type of scroll requested.  Getting lucky while
attempting to write an undiscovered scroll--which has to be done by
scroll's type name (for instance "food detection") rather than by its
label ("YUM YUM")--still leaves the description flagged as unknown
since hero hasn't seen the what sort of label the new scroll has.

Along the way I got side-tracked by the possibilty of writing a scroll
of mail.  It's allowed and yielded the same result as finding such a
scroll in bones, or wishing for one:  when read, it was junk mail from
Larn.  Make one written via marker give different feedback since it
comes from creation of a stamped scroll without any stamps available.

Also, suppress an "argument not used" warning for readmail().
2015-12-16 02:23:32 -08:00
PatR
8f96d4b9ef fix bz157, #H4075 - 'realtime' had strange units
A couple of reports asked what weird unit of measure was used for the
'realtime' value in xlogfile.  It was just seconds, but was accumulating
incorrectly whenever game-state got saved for the checkpoint option.
Now it really is seconds, or rather whatever unit you get for the delta
of two time_t values; usually seconds but not guaranteed to be that.
2015-12-15 17:59:42 -08:00
PatR
3ec592e3f1 fix bz60 and bz61 - meta char feedback
60: getpos() doesn't report the offending keystroke accurately when
rejecting M-something as a movement keystroke while moving the cursor;
61: typing M-N as a command keystroke produces
 |Unknown command 'M-
 |                 '.
where the '.' on the second line clobbers the top line of the map.

I can't reproduce the first one without extending the altmeta hack
[a run-time option to treat two char sequence ESC c as M-c] to getpos()
and nh_poskey(), which I've done for testing but am not including here.

I can't reproduce the second as it's described, but M-^J produces
 |Unknown command 'M-
 |'.--More--
and this fixes that, with a general fix that applies to any meta char.

The diffs include some cleanup/groundwork for maybe extending altmeta.
2015-12-15 03:22:39 -08:00
PatR
c843f56897 fix #H4078 - dull spellbook vs sleep resistance
Reading a dull spellbook could make a sleep resistant hero fall asleep.
2015-12-14 13:27:31 -08:00
PatR
f5b5a428c1 fix #40171 - tribute typo for The Colour of Magic
Passage 1 of the Colour of Magic:  'bazaars' was misspelled 'bazarrs'.
There were a couple of other things that didn't match the paperback copy
I recently recovered from loan:  'radiation' should be 'radiations', and
'dark' was omitted from 'a tall dark figure'.

Unlike the later Harper editions, the early Signet ones retain British
spelling (at least for 'colour').  I failed to find the second passsage
via flipping through the pages, so wasn't able to proof-check that one.
2015-12-13 19:45:20 -08:00
nhmall
6f6f74e8d2 slightly change quickmimic() sense wording
Changes to be committed:
	modified:   doc/fixes36.1
	modified:   src/dogmove.c

A bug reporter wrote:
> comments:
> "You sense a little dog appear where Poes was!"
>
> seems strange to me, perhaps it should be "appearing", or the hero shouldn't
> notice at all if it's out of sight.
>
> Not sure it was out of sight, anyway, because I saw the d from the shop
> doorway.
>

Change the wording to:
"You sense that a little dog has appeared where Poes was!"
2015-12-13 21:45:08 -05:00
PatR
50065303e1 commit 8a13a4d2044264cf7427ba6a035021949788b5f1
Author: PatR <rankin@nethack.org>
Date:   Sun Dec 13 06:06:58 2015 -0800

    fix #H4066 - bug eating ring of protection

    Intrinsic protection of 0 (usually from having a gremlin steal divine
    protection, but also possible by eating a +0 ring of protection) does
    not contribute to "magic cancellation", the defense attribute that
    makes some special attacks fail.  That's intended.  Negative intrinsic
    protection (not possible from having divine protection, but turns out
    to be possible from eating negatively enchanted/charged rings of
    protection), did contribute.  That wasn't intended, so stop it.
    (Positive intrinsic protection gives a magic cancellation of 1 if worn
    armor doesn't provide any MC.)
2015-12-13 06:15:54 -08:00
PatR
4ad39ba282 fix part of #H4062 - high priest name refusal
High priests used a different message to refuse accepting a user-supplied
    name than regular temple priests because they're flagged as unique.  The
    effect was cosmetic; it didn't reopen the hole that let you recognize
    which high priest was which via the 'C' command on the Astral Plane.

    [I never received the mail for #H4062 but saw it in bugzilla.]
2015-12-12 20:56:46 -08:00
PatR
807afa22b3 fix #H4047 - dipping inconsistency
Dip the scroll labeled LEP GEX VEN ZEA into the fountain?
Your scroll called light fades.

The first prompt deliberately avoided 'called', 'named', and other
attributes to keep it short, but the discrepancy here is blatant, so
increase the verbosity in order to have the reminder that's included
in the prompt be the same as object name in the followup message.

Bonus fix, noticed while testing it:  water_damage() was reporting
the "{blank,unlabeled} scroll fades" even though blank scrolls are
already as faded as they can get.  Likewise for blank spellbook.
2015-12-12 19:41:35 -08:00
PatR
637f4a4bd6 fix bz55 - wrong plural for slice of cake
Entered in bugzilla prior to release:  "slice of birthday cake" became
"slouse of birthday cake" when made plural.  "slice of pizza" used to
work, but adding an entry for "louse" <-> "lice" to one of the special
handling lists for singular/plural broke "slice" since only a trailing
substring match is performed for entries in that particular list.
2015-12-12 18:59:21 -08:00
PatR
ead5b0f210 fix #H4061 - uncursed scroll of enchant armor
In 3.4.3, reading an uncursed scroll of enchant armor while wearing
a piece of cursed armor performed an uncurse as well as raising
enchantment.  A fairly big patch to redo how pending shop bills were
affected by altering the items on the bill accidentally took away
the uncurse part when modifying the scroll code to use the bless()/
uncurse()/curse() functions instead of manipulating the armor's
blessed and cursed flags directly.
2015-12-12 18:08:11 -08:00
PatR
2219a6a667 naming artifacts vs illiteracy
Requested by a beta tester back in June:  naming Sting or Orcrist
violates illiterate conduct.  I left it at that; any object naming
could be construed as being literate, but I don't think breaking
conduct for doing such would be a good idea.
2015-12-12 01:55:44 -08:00
PatR
757e6f9c4d vampire genocide could produce unkillable critter
Vampires who were currently shape-shifted into a fog cloud, bat, or wolf
became an unkillable fog could, bat, or wolf if the player genocided
vampires.  When such a creature was killed, the attempt to transform it
back into a vampire failed, but the monster continued to be resurrected
anyway.
2015-12-12 00:34:16 -08:00
Jean-Christophe Collet
9558f2d9d8 Fix #H4014: still crashing on MacOS 10.11 2015-12-11 17:02:28 +01:00
PatR
3db5f106df fix #H4039 - symset:default
Options parsing didn't support "default" (shown by the 'O' command)
or "Default symbols" (menu entry for choosing a symbol set via the
'O' command.  Symbol handling is somewhat confusing, but this seems to
do the trick.  They can't be truncated, but they're case-insensitive,
and "Default" and "symbols" can be separated by dash or underscore as
well as space, or run-together with no separator.
2015-12-11 02:36:56 -08:00
nhmall
375a2c28f1 fixes updates for win32gui
Changes to be committed:
	modified:   doc/fixes36.0
	modified:   doc/fixes36.1
	modified:   win/win32/mhsplash.c
	modified:   win/win32/mswproc.c
2015-12-10 07:51:33 -05:00
PatR
cee9426694 fix #H4038 - distant name vs Eyes of the Overworld
distant_name() temporarily blinded the hero before calling xname() or
doname() in order to prevent the object being formatted from having
its dknown flag set.  The Eyes of the Overworld override blindness, so
that bit got set for heros wearing them regardless of intention.  This
switches to a file-scope global instead of blindness as the way that
distant_name() tells xname() not to set dknown.

This bug has been present ever since the Eyes were added (3.3.0?).
2015-12-10 01:34:09 -08:00
PatR
c14336fee2 fruit enlightenment
Move the 'if (wizard) { /* give feedback for named fruit */ }' code
in ^X/enlightenment into an #if DEBUG block, and expand the if (wizard)
predicate with '&& explicitdebug("fruit")' to require that 'fruit' be in
DEBUGFILES.  So, build with DEBUG enabled and run via
 |% DEBUGFILES='fruit' nethack
to get it back....

This isn't actually a bug fix and it isn't necessary for 3.6.1, but I
got tired of seeing ^X and end-of-game disclosure of attributes end with
three lines about fruit when I'm not doing anything with named fruit.
2015-12-10 00:36:01 -08:00
Pasi Kallinen
f4a6ccf3f0 Update sysconf MAXPLAYERS docs a bit 2015-12-10 10:14:24 +02:00
PatR
de4e4bb601 doc/fixes36.1 - get it started... 2015-12-10 00:06:52 -08:00