]> granicus.if.org Git - nethack/commit
characteristics loss
authorPatR <rankin@nethack.org>
Thu, 10 Jan 2019 02:18:11 +0000 (18:18 -0800)
committerPatR <rankin@nethack.org>
Thu, 10 Jan 2019 02:18:11 +0000 (18:18 -0800)
commit79d40658c7a00e27d9a8ce29bf9fee4ebd8f2c14
treeb07c737da638ac08da9104d8e6ea4fc53ce033ed
parenta637e91f376c6e37160ba24b987e545953759d2a
characteristics loss

A hero run by the fuzzer that has characteristics plummet to 3 and
then sometimes hang around there instead of being recovered by restore
ability is happening because loss that tries to reduce the base value
below 3 lowers the max (peak) value instead, and once that also gets
down to 3, restore ability is no longer able to do anything with it.
This changes an attempt to reduce a characteristic by N points below 3
to reduce it by rn2(N + 1) instead.  That's N/2 on average and a 50%
chance to be 0 when N is 1, so the peak value reached doesn't plummet
to 3 quite to quickly.  It can still drop to that though.

There is a pull request dealing with simplifying attribute handling
and part of it affects the code being changed here, but the bit of
simplification included in this patch doesn't use it.
src/attrib.c