Commit Graph

12897 Commits

Author SHA1 Message Date
PatR
3ea4b00879 memory management
MONITOR_HEAP+heaputil pointed out some unreleased memory.  The livelog
stuff wasn't being freed.  Not surpringly the data used for collecting
and formatting build-options that just got changed from strdup() to
dupstr() wasn't being freed.  And a couple of date/version bits.
2022-02-10 12:14:27 -08:00
PatR
e02834ff87 strdup vs dupstr
mdlib.c was avoiding alloc() and dupstr() because mdlib.o gets linked
with makedefs and makedefs used to need to avoid those.  But makedefs
doesn't avoid those anymore, so mdlib.c doesn't need to either.

Replace a couple of other strdup() calls in other files too.
2022-02-10 10:25:25 -08:00
PatR
a9ba536e38 livelog/chronicle start of game
Add a log entry for the start of a new game.
2022-02-10 10:17:34 -08:00
nhmall
08da5befcb comment out some now dead code
Closes #670
2022-02-10 09:16:29 -05:00
PatR
96ba3c04d1 logging experience level changes again
The livelog message for losing a level had an off-by-1 error, showing
the level the hero ended up at rather than the level that was lost.

There was a message for regaining a previously lost level when rank
title stayed the same but no such message if the title changed (the
achievement of gaining a particular title only occurs once).

Say "regained" rather than "gained" when gaining a previously lost
level.  (Blessed potions of full healing regain levels but can also
reduce u.ulevelmax so a different way to remember peak experience
level has been added.)

Report level change due to polymorphing into new man/woman/elf/&c.
I hadn't realized that that hasn't been recording achievement for new
rank when applicable and decided to leave things that way.

Report gender change when putting on an amulet of change or becoming
a new man/&c unless hero is polymorphed at the time or experience
level is also changing.
2022-02-10 05:45:07 -08:00
Pasi Kallinen
c036c59b00 Monsters should growl even if you can't hear it
Call growl even if you are deaf, because growling also
wakes up nearby monsters. Just make growl not show the message
if you can't hear or see the monster.
2022-02-10 13:41:53 +02:00
nhmall
675fc39a06 add comment with some tile palette info 2022-02-09 23:16:48 -05:00
PatR
a1feac496e cursed list vs worn light again
Fix a couple of mistakes in commit
 e8341dc9d7
pointed out by vultur-cadens.  While in read.c, reformat some of the
new livelog stuff.
2022-02-09 16:38:26 -08:00
PatR
d761263e89 livelog tweaks
Log all level gains and loses.  For the existing logging of changes
in rank, mention the level number with the new title.  Classifying
level loss as "minor achievement" seems weird but I didn't see any
choice more appropriate.

Make '#chronicle' autocomplete.  That makes "#ch" ambiguous, but
better to have to type #cha to chat than to have to completely spell
out #chronicle.  (Changing it to #journal would make #j ambigious
but might still be an improvement.)
2022-02-09 14:25:32 -08:00
nhmall
c845a765a5 pr #675 and pr #676 2022-02-09 16:16:36 -05:00
nhmall
478daa0002 Merge branch 'argrath' into NetHack-3.7 2022-02-09 16:09:37 -05:00
PatR
a0771c770b flush_screen() sequencing
Call display_nhwindow(WIN_MAP) after curs_on_u().  Instead of calling
it a second time, it's simplest to just update status before updating
the map.

If anything is still leaving the cursor dangling at the end of status
I think it will now dangle at the last updated position on the map.
2022-02-09 13:02:19 -08:00
Pasi Kallinen
1e90f89203 Chronicle of major events, and livelog
Log game events, such as entering a new dungeon level, breaking
a conduct, or killing a unique monster, in a new "Major events"
chronicle. The entries record the turn when the event happened.
The log can be viewed with #chronicle -command, and the entries
also show up in the end-of-game dump, if that is available.

This feature is on by default, but can be disabled by
defining NO_CHRONICLE compile-time option.

This also contains "live logging", writing the events as they
happen into a single livelog-file. This is mostly useful for
public servers. The livelog is off by default, and must be
compiled in with LIVELOG, and then turned on in sysconf.

Mostly this a version of livelogging from the Hardfought server,
with some changes.
2022-02-09 22:49:25 +02:00
nhmall
a1b14b6b5c Merge branch 'fix-eat' of https://github.com/argrath/NetHack into argrath 2022-02-09 15:46:31 -05:00
nhmall
d0eceb9508 Merge branch 'fix-save' of https://github.com/argrath/NetHack into argrath 2022-02-09 15:45:01 -05:00
SHIRAKATA Kentaro
9bd8bcdcfb move null-check on tin_details()
Move null-check of obj and buf before their first use.
2022-02-10 05:16:29 +09:00
PatR
cfcfc3429f water description tweaks
Fix a comment typo and add a couple of extra comments.  The two minor
code changes don't affect behavior but might improve clarity.
2022-02-09 11:55:08 -08:00
SHIRAKATA Kentaro
128966bfe1 move null-check on savelev()
Move null-check of nhfp before its first use.
2022-02-10 01:25:13 +09:00
PatR
445573a01f enhanced water description
Redo how do_screen_description() handles water.  Mainly by using
waterbody_name() for farlook/quicklook and autodescribe to get
hallucinatory descriptions, but it replaces some old hackery with
quite a bit of new hackery.  Applies to lava and ice too.  The latter
is now "frozen <foo>" when hallucinating, where <foo> has a small
chance to be "water" but will usually be something like "tea" or
"clotted blood".
2022-02-09 04:16:27 -08:00
nhmall
d94ebf7396 tab to spaces follow-up
Also, the commit for 0e9ecb88fb
was missing the issue close directive, so do it here.

Closes #674
2022-02-09 05:52:55 -05:00
nhmall
0e9ecb88fb don't dereference NULL u.ustuck in dobuzz() 2022-02-09 05:47:08 -05:00
nhmall
2c7fa4a704 trap magic number follow-up 2022-02-08 19:29:27 -05:00
nhmall
947d80ec6f replace some trap function result magic numbers 2022-02-08 19:16:42 -05:00
nhmall
fe03b10208 fix mintrap() return value and resurrect dead code
fixes #672
2022-02-08 17:31:34 -05:00
nhmall
f1ef83b4db fixes3-7-0.txt updates for pr #669 and pr #671 2022-02-08 16:20:58 -05:00
nhmall
ca17edb99f Merge branch 'pr671' into NetHack-3.7 2022-02-08 16:10:49 -05:00
nhmall
78dc1302eb Merge branch 'fix-shk' of https://github.com/argrath/NetHack into pr671 2022-02-08 16:09:52 -05:00
SHIRAKATA Kentaro
b55954b2a1 Add null-check on repairable_damage()
Add null-check of dam before its first use.
2022-02-09 05:54:27 +09:00
PatR
ed606cae8c wishing for water terrain
Allow a wizard mode wish for "wall of water" to create WATER terrain.
Previously there was no way to do that.  Wishing for "pool" and "moat"
work but "water" for terrain isn't supported because it yields a potion.
2022-02-08 11:06:26 -08:00
nhkeni
e10dff845f remove more leading zeroes 2022-02-08 11:35:44 -05:00
nhkeni
1d72646e87 dlb.6: remove leading zero from day-of-month 2022-02-08 10:31:43 -05:00
nhmall
adede74dc2 Merge branch 'pr669' into NetHack-3.7 2022-02-08 08:21:34 -05:00
SHIRAKATA Kentaro
cf4cc3fa93 add null-check on fill_special_room()
Add null-check of croom before its first use.
2022-02-08 17:20:50 +09:00
PatR
a0100dd300 using prefixes via their extended command names
Trying to use #reqmenu/#rush/#run/#fight prefixes by their extended
command names didn't work because rhack()'s post-processing was stuck
dealing with the entry for the '#' key after using doextcmd() to run
any command.  Use a static variable (actually a global one since I put
it into struct g) to notify rhack() of the command that ultimately got
executed.
2022-02-07 16:53:56 -08:00
PatR
50d8463b71 <Mon> suddenly appears! vs ^G
For ^G, throttle the monster creation feedback.  Don't say "suddenly"
and don't exclaim the message, just say "<Mon> appears."  Also, use
Norep() so creating lots of similar monsters at once only gives a few
messages (just one unless varied by "next to you" vs "nearby" vs no
qualifier for farther away).  And for mimics created as objects or
furniture, report the sudden appearance of new object or furniture.
2022-02-07 15:55:04 -08:00
PatR
deec94e533 disallow g/G/F prefix with rush/run commands
Reject an attempt to specify a conflicting or redundant prefix with
a Ctrl+<move> or Shift+<move> (not numpad) or Alt+<move> (numpad).
'm' prefix is accepted.
2022-02-07 14:22:41 -08:00
nhmall
c2cb89cae9 vms bits to c99 2022-02-07 15:15:14 -05:00
nhmall
5ac860bdc7 there was some left-over k&r code in win/chain 2022-02-07 14:58:16 -05:00
nhmall
96c71660c6 fix two reported warnings with SERVER_ADMIN_MSG defined
Report stated a -Wformat-nonliteral at line 612,
and a -Wformat-security at line 614

I was only seeing the latter, so I added the former to the
flags in sys/unix/hints/include/compiler.370. Some compiler
versions have that warning on by default internally and others
don't. If the format string isn't a string literal, there's no
inteference with printf argument checking because that only
operates on string literals.
2022-02-07 09:16:31 -05:00
Pasi Kallinen
bbd5577063 Fix copy-paste error 2022-02-07 13:09:52 +02:00
PatR
6a8394688b move up/down tweak
Have '<' and '>' accept 'm' prefix for move without autopickup but
disallow the other movement prefix keys.
2022-02-07 02:29:01 -08:00
Pasi Kallinen
e2442c395b Make double fight prefix cancel out 2022-02-07 09:14:47 +02:00
PatR
568ba7b305 more command prefix handling
When a command doesn't allow a prefix, go back to showing the prefix
keystroke in the can't-do-that feedback rather than the command name
that it has for potential binding.  I went away from that earlier
after typing 'G' followed by 'o' and getting "the open command does
not accept 5 prefix" instead of "G prefix".

Fix the lookup routine which was responsible for that.  At least
partially fix it; actually it only ignores digits for !numpad.  If a
numpad user types G where it isn't allowed, the feedback will still
be about 5 instead of G.  The code is going from keystroke-used to
command-it-invokes back to keystroke-for-command which won't
necessarily yield the original keystroke because a command can be
bound to more than one key.
2022-02-06 18:09:23 -08:00
PatR
b3c5d68399 fix movement prefixes
My earlier change resulted in rejecting all commands entered after
a movement prefix key, rather than just ones that aren't supposed to
take any prefix.

This fixes that and also restores the ability to use 'm>' or 'm<' on
stairs to change levels without auto-pickup at the destination.
2022-02-06 17:46:31 -08:00
PatR
f233f1d18c water description
The wall of water goaded me into updating waterbody_name().  It's
mostly the same, aside from being moved from mkmaze.c to pager.c and
adding "{wall of|limitless} water" instead of plain "water" for WATER
terrain.  I'm not very happy with "limitless" for the Plane of Water
because limits imposed by air bubbles are all over the place.  "Wall
of water" might work ok for that level.

Water on Medusa's level is now described as "shallow sea" rather than
lame "water".  The two unusual pools on the Samurai home level are
described as "pond" rather than previous "water" which replaced 3.6's
ridiculous "moat".  When lava is hallucinated, it is described as
"molten <substance>" (yielding silly things like "molten yoghurt"),
rather than just "<substance>" to distinguish it from hallucinated
water.  'autodescribe' doesn't use waterbody_name() though.
2022-02-06 13:20:15 -08:00
nhmall
ac1a7ae378 updates from cron job 2022-02-06 15:14:38 -05:00
PatR
cfd753dd12 command prefix handling
Investigating github issue #664 by argrath turned up a more
significant problem.  Prefixes other than 'm' preceding commands
that don't use a prefix didn't get rejected but didn't do anything.

Fixes #664
2022-02-06 11:51:00 -08:00
Pasi Kallinen
4ee1c66f8f Make solid water behave more consistently
The "water" terrain (as used on the Plane of Water) behaved
strangely outside the plane. Make it behave a bit more consistently,
although it's still not really usable elsewhere.

The rationale here being it's a solid wall of water.

Firstly, disable levitation and flying (which was already done
when moving into the water on the Plane of Water), and moving into
it refers to it as a "wall of water" to make it clear it's a solid
block of water.
2022-02-06 20:38:22 +02:00
Pasi Kallinen
3315a5735e Add unique Rider revival messages
This comes from xNetHack by copperwater <aosdict@gmail.com>
with some changes to the code, although original change is from
SpliceHack.
2022-02-06 20:00:32 +02:00
Pasi Kallinen
82d404ec51 Death attacking a monster does drain life attack 2022-02-06 19:27:20 +02:00