Commit Graph

13609 Commits

Author SHA1 Message Date
nhmall
828de37450 suppress warnings during vs 3rd party x64 builds
These warning are in 3rd party library builds (one
in Lua relating to padding due to alignment), and
a few in pdcurses. We won't be addressing the code
in  those.
2022-06-09 20:02:19 -04:00
nhmall
95a39d0b71 granular verbose message suppression mechanics updated
update the macro definition

[re-do full commit message due to errors in last one]

Switch to using a macro invocation Verbos(n, s) in place of the
flags.verbose checks.

Provide the mechanics for individual suppression of any of the
existing messages that were considered verbose.

Mechanics only - this code update does not provide any means of
setting the suppression bits.

flags.verbose = 0
is still a master suppression of all the verbose messages.

flags.verbose = 1
turns on the verbose messages only for those whose suppression
bit is 0 (not set).
2022-06-09 15:16:28 -04:00
nhmall
be76727265 granular verbose message suppression mechanics
Switch to using a macro invocation Verbos(n, s) in place of the
flags.verbose checks.

Provide the mechanics for individual suppression of any of the
existing messages that were considered verbose.

Mechanics only - this code update does not provide any means of
setting the suppression bits.

iflags.verbose = 0
is still a master suppression of all the verbose messages.

iflags.verbose = 1
turns on the verbose messages only for those whose suppression
bit is 0 (not set).
2022-06-09 13:53:20 -04:00
nhmall
fe235b7292 correct an assignment value in restore.c 2022-06-09 08:16:58 -04:00
PatR
c8ceb2b860 add reset_justpicked() comment 2022-06-09 00:37:14 -07:00
PatR
3d35e54414 utf8 warning fix
Avoid gcc/clang warning about mixing || with && without parentheses.
The code already worked as intended despite the warning.
2022-06-09 00:28:44 -07:00
nhmall
62131b96ba remove extraneous file 2022-06-09 00:46:49 -04:00
nhmall
ed5f03301e Merge branch 'argrath-20220609' into NetHack-3.7 2022-06-09 00:45:59 -04:00
nhmall
0ba9278b69 a couple of argrath pull requests
Closes #777 https://github.com/NetHack/NetHack/pull/777
Closes #793 https://github.com/NetHack/NetHack/pull/793
2022-06-09 00:43:35 -04:00
nhmall
131247e674 Merge branch 'fix-symbols' of https://github.com/argrath/NetHack into argrath-20220609 2022-06-09 00:41:34 -04:00
nhmall
c797b2c052 Merge branch 'fix-cmd-3' of https://github.com/argrath/NetHack into argrath-20220609 2022-06-09 00:39:13 -04:00
nhmall
7e143b3e3e Merge branch 'pr794' into NetHack-3.7 2022-06-09 00:36:57 -04:00
nhmall
3b0fbb6601 fixes entry: vampire shapeshifting in a door #794
Closes #794
2022-06-09 00:35:00 -04:00
nhmall
a476f560f6 Merge branch 'vampire-door' of https://github.com/entrez/NetHack into pr794 2022-06-09 00:33:13 -04:00
nhmall
b11007968b fixes entry for pr #783
Resolves #783
2022-06-08 23:45:02 -04:00
nhmall
e2e3c1f8de Re: [NetHack/NetHack] Prompts can overwrite copyright notice on the
starting screen (Issue #783)

On 2022-06-01 12:22 p.m., NetSysFire wrote:
> Steps to reproduce:
>
>1. Get any prompt and answer it. In my case it was a horribly old
>   save I forgot about or when I wiztested something and forgot
>   about that save, too.
>2. See that the copyright information got overwritten by the prompt:
>
>There is already a game in progress under your name. Destroy old game? [yn] (n)
>         By Stichting Mathematisch Centrum and M. Stephenson.
>         Version 3.7.0-59 Unix Work-in-progress, built May 31 2022 12:28:31.
>         See license for details.
>
>
> Shall I pick character's race, role, gender and alignment for you? [ynaq]
>
> Expected behavior:
>
> Redraw after a prompt was answered, so the prompt vanishes and the
> entirety of the starting screen will be shown.
>
> NetHack, Copyright 1985-2022
>          By Stichting Mathematisch Centrum and M. Stephenson.
>          Version 3.7.0-59 Unix Work-in-progress, built May 31 2022 12:28:31.
>          See license for details.
>
>
> Shall I pick character's race, role, gender and alignment for you? [ynaq]
>
> Proposed severity: low. Not gamebreaking, it is cosmetic only and does
> not have any other consequences.
>

The Copyright notice is placed by tty internal routines writing onto
the BASE_WINDOW fairly early in the startup sequence.

The prompt to "Destroy old game? [yn] (n)" is using the in-game
routine to write to the message window at the top of the screen and
prompt there, just like in-game prompts and messages.

If the player answered 'y' to that, the prompt for
"Shall I pick character's race, role, gender and alignment..."
appeared immediately after. That one, however, is written using
the BASE_WINDOW routines in tty, like the copyright notice.

This change does the following:

It moves the copyright lines down a little bit leaving room for the
"Destroy.." prompts.

It places the "Shall I pick characters's..." prompt further down the
screen by default, leaving some room for about 3 raw_print startup
messages after the copyright notice, just in case there are any.
The "Shall I pick character's..." prompt will still appear immediately
if there is a prompt such as "Destroy old game?..."

There were a couple of other issues around raw_print startup messages
too. Those are delivered using a raw_print mechanism to ensure they
are written even if the window-port is not fully operational. However,
they were only on the screen for the blink of an eye. This call
sequence in restore.c made them disappear almost immediately:
     docrt() -> cls()

Put in a mechanism to detect the presence of raw_print messages
from the early startup, and if there were some, wait for a
keypress before obliterating the unread notifications.
2022-06-08 23:41:45 -04:00
Michael Meyer
bc2427167a Fix: vampire shapeshifting in a door
Someone mentioned in #nethack today that a vampire had turned into a fog
cloud, moved under a door, then turned back into a vampire while still
sharing a space with a closed door.  There already existed some code
intended to prevent this in cases where the vampire is killed in one
form and revives in another, but voluntary transformations (from
decide_to_shapeshift) weren't included.  The existing code in mondead
and vamp_stone also apparently missed a minor edge case: because the
code between the definition of in_door and its use included an expels
call, it would be outdated/incorrect in cases where expels() placed the
fog cloud onto a closed door.
2022-06-08 20:23:24 -04:00
PatR
faf3d6f08a death from touching silver ring or wand
From a reddit thread:  NAO's list of causes of death shows
|killed by handling a(n) ring of shock resistance
|killed by handling a(n) wand of fire
along with various other rings and wands and the poster wondered how
that could have killed characters.  Someone quickly figured out that
the heroes involved had lycanthropy and the items listed happened
to be silver in those games.

Avoid that sort of confusion in future by specifying "handling a
silver ring" or "handling a silver wand" instead of the specific
type of item when inflicting silver damage.  It still uses specific
item for other classes of objects where silver isn't shuffled among
potential items at start of game.
2022-06-08 12:50:49 -07:00
PatR
f710a3175f magic portal traversal feedback
Replace the old message "you feel dizzy for a moment, but the sensation
passes" when going through a magic portal.  The sensation doesn't just
pass anymore; you arrived stunned these days.  Suggested by entrez.
2022-06-08 10:46:51 -07:00
SHIRAKATA Kentaro
d23f26077b remove unnecessary null-check on parsesymbols()
`strval` here is always non-null,
because the null-check is done in earlier code.
2022-06-08 05:28:32 +09:00
PatR
d1d0f1103c artifact name formatting bit
All the quest artifacts are named "The <something> of <someone>".
Change xname() to force "the" instead of "The" when that occurs in
the middle of "a skeleton key named The Master Key of Thievery" or
"a pair of lenses named The Eyes of the Overworld".

This change isn't applied to user-assigned names; they're used as-is.
2022-06-06 16:15:07 -07:00
PatR
59c73cf0ae monpolycontrol bit
I tried to polymorph a shopkeeper into a long worm (which isn't
allowed) and EDIT_GETLIN preserved "long worm" for default input
on the first retry.  I just pressed <return> without modifying the
preloaded input, so a cycle of repitition occurred until eventually
it returned Null.  But then the outer caller also retried, starting
it all over (at least without preserving the old failed input this
time).

Change it so that if the same unacceptible input is given twice in
a row, or empty input even once, preload the buffer for the next
retry with "random".  Player can still edit that but if <return> is
used then an acceptable random choice gets made.

Only applies to the "what type of monster?" for polymorph target
when monpolycontrol is On since that's where two levels of retrying
happens.
2022-06-05 14:39:48 -07:00
PatR
1791dda512 atttempting to close a blocked door
Simplify the message handling for trying to close a door when there's
a monster in the doorway.
2022-06-05 14:37:00 -07:00
nhmall
d98d76a88e fix a potential leak of monst struct in montraits
Resolves #789
2022-06-04 09:33:36 -04:00
nhmall
fc0bb9631a synchronize some recent changes between linux.370 and macOS.370 2022-06-03 21:26:21 -04:00
PatR
b4a415848d curses locale.h fix 2022-06-03 13:12:27 -07:00
PatR
4c47b7f622 'make depend' update 2022-06-03 13:02:40 -07:00
PatR
f5642d8bc4 fixes entry for PR #784 - reset just-picked-up
Pull request from entrez:  the just-picked-up flag on recently
picked up items was being reset when you stepped on other items
without picking anything else up.

Closes #784
2022-06-03 12:48:38 -07:00
Michael Meyer
fd3f50ebba Reset justpicked only when picking up items
With reset_justpicked called unconditionally near the top of pickup, it
was impossible to pick up some items, walk over to a chest, and use 'P'
to deposit the items with autopickup on: pickup is called with every
move, and autopickup allowed execution to reach the reset_justpicked
call whenever the hero stepped on a square with an item in it.  As a
result, stepping onto a square with a container would clear all the
justpicked flags in inventory (pressing ',' and then declining to pick
anything up would have a similar effect).

Instead, call reset_justpicked only when the hero (or autopickup) has
actually selected an item to pick up.  This makes the code a bit more
complicated than before -- I don't think there's a way to do it with
just one reset_justpicked call any more, due to the structure of pickup
and the need to call reset_justpicked before actually putting any items
into inventory -- but it means that justpicked info will be much less
ephemeral and more useful when managing stashes, etc.
2022-06-03 12:48:38 -07:00
nhmall
ff00c14893 wished-for doors in wizmode always vertical
Closes #788
2022-06-03 15:30:18 -04:00
nhmall
0039d332e7 Merge branch 'fix-doorwish-horizontal' of https://github.com/entrez/NetHack into pr788 2022-06-03 15:29:02 -04:00
Michael Meyer
092e8c37fd Fix: wished-for doors in wizmode always vertical
Wishing for a door is intended to retain the existing 'horizontal' value
of the surrounding wall or door (see comment in the wizterrainwish
'door' case).  However, the field was being reset by mistake, causing
all door wishes to create vertical doors.  Preserve it as intended.
2022-06-03 15:17:03 -04:00
PatR
4a7481dab6 github PR #787 - segfault for wizterrain wish
Pull request from entrez:  the change to show the result of a wish in
its gamelog/livelog event resulted in a segfault if that result was
&zeroobj.  It occurs for wizard mode wishes producing terrain changes
instead of objects.

Closes #787
2022-06-03 12:10:55 -07:00
Michael Meyer
fd55dfba1f Fix: segfault on wizmode terrain wish
The new livelogging of wish results caused a segfault when attempting to
handle the results of a wizard mode terrain wish, since a successful
terrain wish returns a nonzero obj which nonetheless is just a dummy
object.  Move the existing check for that further up to skip all the
livelogging stuff entirely, since such wishes will never happen in a
real game and exist purely for debugging purposes.
2022-06-03 14:53:57 -04:00
nhmall
dca1cd7526 alter wording in last commit fixes entry 2022-06-02 19:24:52 -04:00
nhmall
6fbc8ccf0f spelling in last fixes message 2022-06-02 19:22:18 -04:00
nhmall
516df172d0 fix message when monster's two-handed weapon welds
K3610 reported to devteam:
When you see a monster wield a cursed two-handed weapon,
the weapon "welds itself to the foo's hand" instead of its "hands."

Observed on hill orcs wielding a cursed two-handed sword.
2022-06-02 19:20:21 -04:00
PatR
afbb7e2827 fix #K3603 - multiple stacks of gold in container
When taking stuff out of a container, specifying a subset count for
an item and getting the pickup_burden prompt, answering 'q' undid the
subset split but answering 'n' did not.  If the item in question was
a stack of gold, the container would end up with two stacks.  That
action could be repeated as long as any of the stacks was big enough
to trigger pickup_burden confirmation so an arbitrary number of gold
stacks could be produced.  (Eventually they would be too small for a
subset to cause an increase in encumbrance, or possibly all reduced
to just one gold piece, then no more stacks could be created.)

Situation occurred for all menustyles; traditional and via-menu needed
separate fixes.  It didn't occur for pickup off the floor.

Report was for 3.6.6 but the bug was still present in dev version.
2022-06-02 14:44:30 -07:00
nhmall
57cfd7e7ed another ncursesw follow-up 2022-06-02 17:14:42 -04:00
nhmall
168ee4c9a8 yet another follow-up for linux.370 ncursesw 2022-06-02 16:31:30 -04:00
PatR
cc2332946e fix #K3608 - glob quantity
Wishing for "N <size> globs [of pudding type]" produces 1 glob
starting at <size> and then multiples weight by N (so possibly
increasing <size>).  When not it wizard mode, N can be replaced by
a random amount to prevent the total weight from being huge.  When
N was less than 6, it was possible for that random amount to be
larger than what the player asked for.

Change the way the random amount is calculated so that it won't
ever be larger than what player specified.  Also for wizard mode
prompt whether to make the substitution so that the player can
choose to abide by the limit or to obtain a huge glob for whatever
testing is being conducted.
2022-06-02 13:02:45 -07:00
nhmall
7b1528707b another follow-up for ncursesw and CURSES_UNICODE
Don't define CURSES_UNICODE without ncursesw being available
2022-06-02 15:26:48 -04:00
nhmall
ae1f5b8d2a follow-up on linux.370 ncursesw 2022-06-02 15:10:15 -04:00
nhmall
62014be6f8 use ncursesw on linux for curses support of enhanced1 2022-06-02 14:43:46 -04:00
PatR
e764026a1f more wish logging - show the result
Extend the log event for a wish to include what was produced.  It
would be better to show the item as fully ID'd but then #chronicle
gives away information.

The backslash+newline pairs were inserted for this log message.  In
the game and in dumplog those two lines are each one wide line.  The
turn numbers shown are actually arbitrary since ^W takes no time.

|Logged events:
| Turn
|    1: wizard the chaotic male orcish Wizard entered the dungeon
|    2: made his first wish - "protection", got "a tattered cape"
|    3: made his first artifact wish - "blessed +2 rustproof magicbane",\
 got "an athame named Magicbane"
|    4: wished for "master key of thievery", got "a key named The Master\
 Key of Thievery"
2022-06-02 07:51:54 -07:00
PatR
c413233a4f pull request #768 - log declined wish or genocide
Pull request from vultur-cadens:  if a wish is declined by asking
for "nothing" or "none" or "nil", log that for gamelog/livelog as a
declined wish.  Likewise when specifying monster species or class to
genocide as "none" or "nothing" or ESC, log it as declined genocide.

Closes #768
2022-06-02 06:58:19 -07:00
vultur-cadens
53f782dcd6 Livelog declined wishes and (non-cursed) genocides 2022-06-02 06:57:53 -07:00
nhmall
8848a81990 restrict stunning effect to is_xport trap types
The issue first arose in commit 6a65b412.
Reported to devteam via email by entrez.
2022-06-02 09:41:47 -04:00
PatR
5977fa4481 another lua warning bit
I forgot to do this with yesterday's post garbage collection fix
update.  Record lua warnings in paniclog during normal play too, not
just when in wizard mode.
2022-06-01 13:45:57 -07:00
nhkeni
6c2b02aa8c clarify fixes entry 2022-06-01 14:02:13 -04:00