Commit Graph

17096 Commits

Author SHA1 Message Date
Pasi Kallinen
96fc77cc70 add pauper to fixes 2024-08-30 19:20:31 +03:00
PatR
1fd943e860 trap/secret door detection enhancement
The old secret door detection just redisplayed locations with
discoveries (secret doors and traps, mostly).  Somewhere along the
line it was augmented to find hidden monsters and to deliver one or
two messages reporting how many things had been discovered.  Now it
has been augmented again, to find trapped doors and chests, and to
supply a message when the detection attempt fails to find anything.

More substantially, it highlights the relevant locations as they're
found, before the feedback message(s).

Initially I was using tmp_at() to mark all significant locations,
but that required --More-- and for player to acknowledge it when
detection was done.  That would probably be ok for wand of secret
door detection and spell of detect unseen, but it would be a hassle
for ^E.  It's been revised to use flash_glyph_at() [previously only
used when ^G creates unseen monsters, I think].

The new behavior seems to be working reasonably well.  For curses,
the 'timed_delay' option must be set.  flash_glyph_at() calls
flush_screen() between its output and nap in each cycle of multiple
flashes, but that evidently isn't sufficient for curses.  Maybe
curses init should just force on 'timed_delay'.

I've left the tmp_at() stuff in.  We might want to modify things to
use it instead of flash_glyph_at() when the accessibility flag is
set.  Its current compile-time selection won't be adequate though.
2024-08-29 14:08:23 -07:00
nhmall
0dff31a745 suppress display.c warning introduced by 4fb7dd2c
src/display.c(997): warning C4127: conditional expression is constant
2024-08-29 14:04:40 -04:00
Pasi Kallinen
e645c0b4bb Allow starting game as pauper, without any inventory
And also without spells, skills, or preidentified items.
This also implies nudist.

Breaks saves and bones.
2024-08-29 20:51:13 +03:00
PatR
1595b682cf do_clear_area() vs map column 0
do_clear_area() runs a callback over each point in a square around
a center point.  When executed near the edge of the map, it clips
the square to avoid going over that edge.  But on the left side,
it was clipping to column 0 rather than 1, so running the callback
routine on column 0 even though that isn't part of the level.  This
bug doesn't seem to have caused any problems though.
2024-08-29 07:02:40 -07:00
PatR
8085d03898 some miscellaneous formatting and comments
Clear out some miscellaneous changes that have been sitting around
for a while.
2024-08-27 13:59:57 -07:00
PatR
0ce02a7224 old comment thinko 2024-08-27 12:54:00 -07:00
PatR
482ba2dc35 fixes typo 2024-08-27 12:10:21 -07:00
PatR
9b79e0be8d fix the 'fix obscure secret corridor bug' commit
The fix to prevent finding secert corridors via secret door detection
from forgetting objects broke magic mapping.
2024-08-26 21:27:54 -07:00
PatR
a5700805c6 fix obscure secret corridor bug
magic_map_background() would overwrite remembered objects and traps.
That meant discovery of secret corridors by secret door detection
or ^E would forget embedded objects at their locations.
2024-08-26 14:37:46 -07:00
PatR
83b85d4be9 add a FIXME comment to secret door detection
^E and wand of secret door detection used to just update the map
without any other feedback, but were changed post-3.6 to issue a
message about what things are being discovered.  But the message is
misleading if [some of] the things revealed are obscured by objects
or by monsters.  Presumeably by regions too.
2024-08-25 13:11:05 -07:00
PatR
9365789b6d revise #wizbury feedback
Simplify the code added in April.
2024-08-25 12:15:17 -07:00
PatR
a298052095 fix a FIXME for 'm #vanquished'
If player uses the 'm' prefix before the #vanquished command when
the vanquished monsters list has fewer than two types so far,
select the preferred sort for #vanquished even though it won't be
applicable yet.

Also, when prompting about vanquished monsters during end of game
disclosure, where an 'a' response is given special meaning, use
"[ynq]" instead of "[ynaq]" if there is only one type of monster
vanquished.  It's skipped altogether when the list has zero types
and there's no point in picking sort order when there is just one
type.  The player can still answer with 'a' when [ynq] doesn't show
that (for tty and curses at least, probably X11); 'a' will end up
behaving as 'y' in that case.
2024-08-24 19:04:41 -07:00
PatR
0afa5bd564 Riders when sorting vanquished monsters by class
Explicitly sort and label Riders before major demons when displaying
vanquished monsters with sort-by-class.  They're lumped in with '&'
but they aren't really demons.
2024-08-23 22:01:08 -07:00
PatR
84785db5ec Guidebook's map display of monsters
Instead of
" a-z  and
" A-Z  and
" @&':;
for the lists of characters used to show monsters, followed by
" I
for special "remembered, unseen monster", change the capital letter
line
" a-z  and
" A-HJ-Z  and
" @&':;
to emphasize that 'I' is used differently from other letters.

Also, add the trailing "and"s to the LaTeX version.  I haven't seen
what the result looks like.
2024-08-20 14:02:26 -07:00
PatR
65b5f2cff1 farlook & probing feedback for monsters in regions
When looking at a monster that's inside a gas cloud, include that
fact in the output for farlook and for probing.  When the monster
being examined is sensed rather than seen, you'll sense the presense
of the cloud as well as the monster even if the cloud can't be seen.

Do likewise for self when using look-here (':').  Bonus fix: zapping
wand of probing at self while engulfed reported that you were just
held by the engulfer.

Also fix an old comment typo/thinko.
2024-08-19 13:10:28 -07:00
PatR
9d1234b87d gas cloud dissipation
If hero was in a cloud spot when it expired, the feedback would be
|The gas cloud around you dissipates.
|You see a gas cloud dissipate.
2024-08-19 11:59:00 -07:00
PatR
f8c399bf50 \#timeout for regions
Support tab separation for the region portion of #timeout output.

This works ok under Qt.  However, the output from #timeout uses a
fixed-width font so tab separation isn't necessary.

No idea how well it will work for mswin.
2024-08-19 10:06:29 -07:00
PatR
158e3b12dc comment thinko
Some_Monnam() returns "Someone" or "Something", not "Someone" or "It".

Removing the redundant '&& uchain != NULL' test shouldn't produce any
change in behavior.
2024-08-18 11:29:04 -07:00
PatR
9bc6e1bee1 speed monster vs peacefuls
Testing the shopkeeper speed change, I noticed that zapping the shk
with speed monster made her angry.  Since being hasted is beneficial
for the target, don't become angry.
2024-08-17 19:07:44 -07:00
PatR
214e508890 address issue #1267 - hasted shopkeepers
Issue reported by ars3niy:  a hasted shopkeeper always gets 2 moves
per turn and had a tendency to move away from the door and then move
right back, keeping it blocked.

I didn't view the ttyrec and didn't reproduce the situation, but I
have noticed something of the sort in the past.  This reduces shk
speed so that there will usually be 2 moves per turn but not always,
increasing the likelihood of leaving the door unblocked when nearby
hero does not owe anything.

This change results in a slowed shopkeeper having speed dropped to 11
rather than 12.  I suspect that the original 18 speed might have been
picked to guarantee slowed speed of at least 12, but if so, that was
in the days when speed 11 would have provided 11 consecutive moves
and then a turn guaranteed to not allow a move rather than the current
11 out of 12 chance to move each turn.

Fixes #1267
2024-08-17 19:02:20 -07:00
PatR
3c3a061a38 PR #1268 - split "moverock_done" out of moverock()
Pull request from argrath:  eliminate 'goto moverock_done'.

Closes #1268
2024-08-17 18:14:47 -07:00
SHIRAKATA Kentaro
01910d2998 split "moverock_done" into a separate function 2024-08-17 18:13:35 -07:00
PatR
28da7a1c84 PR #1264 - split "getcad" out of pay_for_damage()
Pull request from argrath:  eliminate 'goto getcad'.

Closes #1264
2024-08-17 18:09:09 -07:00
SHIRAKATA Kentaro
39665ba017 split "getcad" into a separate function 2024-08-17 18:07:51 -07:00
PatR
f29e2e20b1 PR #1261 - split "poof" out of potion_dip()
Pull request from argrath:  eliminate 'goto poof'.

Closes #1261
2024-08-17 18:03:42 -07:00
SHIRAKATA Kentaro
94eef3c3db split "poof" in potion_dip() into a separate function 2024-08-17 18:02:03 -07:00
PatR
23532b012b farlook of "`"
Allow farlook/quicklook to step through all engravings--corridor
ones as well as room ones--with repeated '`' when picking location
with getpos(), similar to how repeated '^' goes through all traps
no matter what display character they use.

It isn't possible to look at corridor engravings by using their
default symbol '#'.  It is possible by using 'a' for "anything of
interest" but that matches lots of other stuff.

This tries to add an NHDT tags line to sym.h.  That was followed by
'git nhadd' which did stage it for commit, but date/branch/revision
tag expansion isn't working.  I did something similar to defsym.h
about 5 weeks ago; that one worked and I don't recall having needed
to do anything special.
2024-08-17 11:19:45 -07:00
PatR
45690624e5 fix pyrolisk egg panic when eating from floor
From a change made about two and half months ago:  eating a pyrolisk
egg tried to use it up from inventory even when it was on the floor.
That would trigger an object lost panic.
2024-08-17 11:02:28 -07:00
PatR
d441d6159b zillionth+1 and +2 comment typo fixes 2024-08-16 22:18:46 -07:00
PatR
5617f32eb4 region bit
When hero was swallowed and a temporary region at swallower's spot
expired, hero was told "the gas cloud around you dissipates".  This
just suppresses the message rather than changing it into "the gas
cloud around <engulfer> dissipates".
2024-08-16 12:26:17 -07:00
PatR
4fb7dd2cd0 more monster display vs gas clouds
Various bits tried while flailing about with map display of monsters
in visible regions.  The newsym()/mon_overrides_region() part is
definitely an improvement because the logic about whether to show a
monster in a region or just the region wasn't easy to comprehend and
was even harder to extend.

I'm not sure whether the _map_location() part is necessary.
2024-08-16 11:59:38 -07:00
PatR
061f564928 monster display vs gas cloud regions
This fixes the bug where a monster displayed instead of a gas cloud
because the hero was next to it didn't revert to gas cloud when hero
moved and was no longer next to the monster.
2024-08-16 11:40:12 -07:00
PatR
c63b493904 tweak paranoid_confirm:trap vs regions
It is possible to have a known trap be at the same location as a gas
cloud region.  When paranoid_confirm:trap is set, ask for confirmation
about entering the region before confirmation about entering the trap
since the map will be showing the region rather than the trap.

Dual confirmations will be annoying but not new.  Before this change,
it would ask about entering the trap, and if the answer was yes, it
would ask about entering the region.  The situation seems to be too
rare to warrant implementing a single combined confirmation, and the
code to accomplish that would likely be messy.
2024-08-13 13:53:41 -07:00
PatR
fd57c9ca83 wizard mode #timeout command vs gas regions
Show visible regions among the other timed events.  Turn number is
relative rather than absolute.  Location is the internal bounding box
which tends to cover more area than just the gas cloud spots.

When multiple regions are present (common on Plane of Fire), they're
listed in arbitrary order.  It would be better to order them by
timeout or by location or both, but the extra effort to do that seems
unjustified.
2024-08-13 13:28:24 -07:00
PatR
0eb8896301 paranoid_confirm:Trap vs vapor+gas cloud regions
Extend paranoid_confirm:trap to also ask for confirmation when
attempting to enter a gas cloud region (scroll of stinking cloud,
breath from green dragons or iron golems, steam clouds from boiling
water, vapor left by fog cloud movement, no doubt several others).

Like with traps, can be overridden for a given move by using the
'm' prefix.  Unlike traps, doesn't try to guess whether moving into
a region will be harmless.

Doesn't affect movement into cloud terrain (Plane of Air).

Update the Guidebook to describe the revised behavior of
paranoid_confirm:trap and to mention how #terrain deals with regions.

'any_visible_region()' got mixed in with this but isn't used yet.
Affects extern.h and region.c.
2024-08-11 14:59:57 -07:00
nhkeni
37ad527512 make git ignore checksums temp file 2024-08-10 21:18:34 -04:00
PatR
3ed2110757 monsters in regions vs #terrain
While trying to track down a display problem with regions
    [when a monster is shown over a region because the hero is
    adjacent, it doesn't revert to the region's cloud glyph when
    hero moves farther away; that's not resolved yet],
I discovered a different display problem for the same thing.  If
you pick a #terrain choice that keeps traps it is supposed to show
region spots too, but that didn't work when there was a monster at
the same spot.  It removed the monster but showed background there.
2024-08-10 16:24:51 -07:00
nhkeni
3436fbc87e Merge branch 'NetHack-3.7' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.7 2024-08-10 16:26:00 -04:00
nhkeni
3f2d46823a add nhlua target (for internal use) 2024-08-10 16:25:35 -04:00
PatR
9e4237f6f7 couple of weapon.c bits
Some trivial stuff I've had sitting around for a while.
2024-08-10 12:38:56 -07:00
nhmall
2ed95119f1 update tested versions of Visual Studio 2024-08-02 2024-08-02 13:24:20 -04:00
nhmall
35dfcb6810 NetHack Daily Cron Output (1 commits) 2024-08-01 09:57:18 -04:00
PatR
e550436755 shapechanger crash fix
A recent change was setting mon->data prior to canspotmon(mon) but
that triggered a crash if the temporary mon->data was Null.  All the
testing was done with vampshifers and this affects non-vampshifers.

Push even more shapechange messaging into newcham() by not trying to
determine whether requesting a message from it will oblige.
2024-07-30 11:52:34 -07:00
PatR
e911c71320 Guidebook: more map symbols 2024-07-29 23:58:55 -07:00
nhkeni
90cfeccdfd Merge branch 'NetHack-3.7' into keni-fetchlua 2024-07-29 17:07:17 -04:00
nhmall
4353ee49d8 sed substitution went too far (wasm cross-compile)
Also, link with hacklib
2024-07-28 12:27:02 -04:00
nhkeni
93ece2c9b4 update fetch-lua-TARGET targets 2024-07-27 18:24:41 -04:00
PatR
2d68ee8f9f fix #K4210 - vampshifter fog clouds
Messaging for vampires changing into fog clouds was inconsistent
in 3.6.x but already fixed in to-be-3.7.

However, maintaining an extra set of shape change messages (one
in newcham(), the other in vamp_shift() which turns out to only be
used when a vampshifter turns into a fog cloud in order to pass
under a closed door) was a nuisance.  Redo vamp_shift() to use
newcham() feedback.  Update that feedback to be accessibility-aware
and also to use "Your <mon>" instead of "The <mon>" when appropriate.

While in there, remove a couple of trailing spaces and eliminate
use of one dynamically constructed format string that necessitated
warning manipulation.
2024-07-27 14:49:17 -07:00
nhkeni
190aeb921b fetch-lua bits
make it clearer how to change the fetch try order
avoid odd output if more than one lua .gz file exists
make it clearer if we don't have a checksum for a fetched file
2024-07-26 21:19:41 -04:00