Commit Graph
16 Commits
Author SHA1 Message Date
Alex Smith 27e5f025f1 Don't use a plain %s when writing to a buffer
My compiler was understandably concerned about a potential buffer
overflow here. I don't think the string could get long enough to
cause that to happen, but it's hard to be certain. It's much safer
to limit the length of the string so that it fits in the buffer, as
done here, and if there really wasn't a problem the change will
cause no harm at all. (If there was, the string will be truncated
rather than corrupting memory. This code is in showing the
config-file version of a status highlight, something where
truncated text will probably be obvious to the user.)
2017-11-01 15:24:52 +00:00
Alex Smith e4db58bdf3 It's OK for pets to oscillate near the player
This change was coded by FIQ, who suggested it by email.

The main change here is related to monster anti-oscillation code.
When a monster believes it's stuck in an AI loop, it looks for an
alternative strategy. That applies to pets too. However, if the
pet is currently near the player, we can typically assume that it's
there because it wants to be there, and an oscillation is not
because it's stuck but because it's already in the best possible
place. This commit causes pets to be "allowed" to stay near the
player, rather than running the wrong way down a corridor because
it's the only way to do something different than what they're
currently doing.

If the pet is far from the player, we use the old behaviour unless
the pet is leashed or the player tried to call it with a whistle
or the like, in order to avoid the risk of a genuine AI loop trying
to get back to the player. (Whistling happens rarely enough that it
won't cause AI loops of its own - the player isn't going to whistle
every turn - and it makes flavour sense that a pet might interpret
it as "you're going in the wrong direction!".)
2017-11-01 14:55:40 +00:00
Alex Smith a2f886c665 Handle the case where we continue after locking a nonexistent file
The previous version of this would lead to big warnings and
impossibles. This doesn't seem like a useful case, but it's still
better to have better warning messages just in case it does
happen.
2017-09-01 18:49:43 +01:00
Alex Smith 49ddedc138 Merge branch 'NetHack-3.6.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-3.6.0 2017-09-01 17:44:31 +01:00
Alex Smith 1d4b6aae40 Fix error behaviour when perm is missing
The previous behaviour was to mention the missing file, but then to
try and fail to lock the nonexistent file 10 times, which rather
obscured the original cause of the error as it took up so much more
room on the screen.

This patch also changes the error message. Failure to lock a
nonexistent file is almost always the result of a mistake during
the install process (e.g. running from the wrong directory, or
running without an install). We should give the user a hint about
that.
2017-09-01 17:43:04 +01:00
Alex Smith 1c026727fb Remove obsolete code allowing 1-indexing the monster list
Having selectable base indexes for the monster list doesn't seem
likely to be needed in the future any more, now that the code for
the monster list is stable. Additionally, the functionality in
question has bitrotted heavily (e.g. many "loops over all
permonsts" start at a hardcoded 0, which wouldn't work with a
1-indexed monster list). As a result, removing the relevant code
in makedefs makes it clearer what can and can't be assumed about
the code, reducing the risk of bugs in the future.

Thanks to FIQ for mentioning that this could be an issue.
2017-07-15 01:34:41 +01:00
Alex Smith 52457be911 Merge branch 'ais523-movespeed' into NetHack-3.6.0 2016-12-02 17:10:37 +00:00
Alex Smith ec2beee61f Changelog for movement speed changes 2016-11-12 01:28:47 +00:00
Alex Smith 11625c0772 Make free actions easier to predict, nonfree actions more predictable
This fixes melee kiting more comprehensively (it now doesn't work
against slower monsters either), and prevents you doing things like
opening up a gap when running from an imp (you couldn't do that in
3.4.3).
2016-11-12 01:24:03 +00:00
Alex Smith f715224b9c Merge branch 'ais523-elbereth' into NetHack-3.6.0 2016-10-21 23:30:09 +01:00
Alex Smith 9c5cfc4153 Changelog for the Elbereth changes 2016-10-18 16:52:30 +01:00
Alex Smith d01c0364f1 Ugh, why does NH3's commit process have to differ from NH4's? 2016-10-17 18:29:09 +01:00
Alex Smith 348e54aa32 Change the rules for Elbereth erosion
If you attack a monster under Elbereth protection, and it wasn't
scuffed by the attack itself, then it'll be automatically removed
with an alignment penalty. It no longer fades from scaring monsters;
only from being abused to attack monsters while protected.
2016-10-17 18:26:44 +01:00
Alex Smith ee5b488514 Differentiate between monster anger from attacks and from other causes
setmangry() and wakeup() were being used for multiple purposes. Add an
extra parameter to track which. This fixes several minor bugs (e.g.
whether monsters with no eyes were angered by (useless) gaze attacks
against them previously depended on the state of a UI option, and
the Minetown guards would be annoyed if you used a cursed scroll of
tame monster on a shopkeeper). It's also a prerequisite for the
Elbereth changes I'm working on.
2016-10-17 18:19:22 +01:00
Alex Smith 5c12362a98 Fix engrave.c; I used the wrong commit command 2016-10-17 17:34:08 +01:00
Alex Smith 8d32f37588 Make the Elbereth restrictions more flavour-consistent
Elbereth now has to be on a square by itself; it's hard to justify
why text before it would prevent it working if text after it fails
to prevent it working.
2016-10-17 17:31:00 +01:00