Commit Graph
8469 Commits
Author SHA1 Message Date
nhmall f05ce051e3 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-16 20:04:03 -05:00
PatR b9f38fdd14 fix #H6285 - flooreffects and deltrap panic
Reported 14 months ago, a monster reading a scroll of earth which
dropped a boulder that killed another monster in an adjacent pit
was giving credit/blame to the hero and could also trigger a panic.
If the monster was killed, the pit would be filled and deleted via
m_detach and then when flooreffects tried to delete the same trap,
it accessed freed memory and deltrap could panic.
2019-01-16 15:08:11 -08:00
nhmall e6f550dc79 Merge branch 'NetHack-3.6.2' 2019-01-14 21:20:42 -05:00
nhmall 60129c524a Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-14 21:20:24 -05:00
PatR 521dbe8f94 potion mixing bit
Noticed when looking at whether alchemy ought to remove user-assigned
name.  Get rid of the potion being dipped into sooner so that it won't
still be present if a perm_invent update takes place.
2019-01-14 18:13:59 -08:00
nhmall b629085b42 Merge branch 'NetHack-3.6.2' 2019-01-14 21:09:45 -05:00
nhmall e741157671 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-14 21:09:27 -05:00
PatR 285606d4c6 more explicit enum values 2019-01-14 17:10:46 -08:00
PatR 97b28bd846 level arrival
The check I added to make sure that a monster was at the hero's
coordinates before deciding to move one or the other would have been
confused by a long worm's tail.  Check that they're at that spot but
not by comparing monst.<mx,my> coordinates with <ux,uy>.

Also, don't have wiz_makemap() assume that each level of the Wizard's
Tower has the same boundary coordinates.  Keep track of whether hero
is inside that tower before discarding the old level.
2019-01-14 16:35:19 -08:00
nhmall c93e9b31dc merge NetHack-3.6.2 part2 2019-01-14 18:22:02 -05:00
nhmall 98acd55fcc Merge branch 'NetHack-3.6.2' 2019-01-14 18:16:19 -05:00
nhmall c71c64144d Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-14 18:09:26 -05:00
PatR 992f141ab7 \#wizmakemap followup
Both u_on_rndspot() and losedogs() might result in having a monster
and the hero be at the same location.  Have wiz_makemap() use the
same fixup for that as goto_level().
2019-01-14 09:28:10 -08:00
PatR 64821f4ad5 more enums with explicit values
As before, it's an aid to finding things if you're looking for something
by its numeric value.
2019-01-13 17:19:39 -08:00
PatR d735d04b5b \#wizmakemap update
The need for resetting lock picking when swapping in a new level made
me wonder whether other things should be reset too, and there were a
bunch:  digging, travel destination, polearm target, being in water,
being swallowed or held, hiding.  Hero placement was ignoring arrival
region.  Also, it turned out to be pretty easy to fix the FIXME about
steed.
2019-01-13 15:24:08 -08:00
PatR 355dec4d84 blocking or unblocking levitation or flight
when level teleporting or digging.  Level teleporting while levitation
was blocked due to being inside solid rock didn't notice that it should
be unblocked until you moved from whatever type of terrain you landed
on (room, for instance) to some other type (such as corridor).  Digging
down to make a pit or hole while inside solid rock converts that spot
to floor so should also check whether to unblock levitation/flying, and
not fall if unblocking occurs.
2019-01-13 15:17:40 -08:00
Pasi Kallinen abcdb713d5 wizmakemap should reset lockpicking 2019-01-13 17:27:17 +02:00
nhmall 090aa4a96d Merge branch 'NetHack-3.6.2' 2019-01-12 21:22:03 -05:00
nhmall 7e511d50c2 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-12 21:21:42 -05:00
PatR 61409fb769 bz 406/#H4298 revisited
Redo the Ft.Ludios entry hack to suppress the lit walls on the left
and top rather than to light the upper-right corner.  Only noticeable
if carrying a lit candle.  Usually, that is.  This simpler hack could
be detected visually from the treasure room side of the walls involved
but normally won't be.
2019-01-12 17:43:52 -08:00
nhmall 034ce7e8bd Merge branch 'NetHack-3.6.2' 2019-01-12 01:09:17 -05:00
nhmall 135b7c5c04 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-12 01:08:58 -05:00
PatR dec0829ab5 workaround #H4298/bz 406 - vision glitch
The entry chamber for the Fort Ludios level would be completely lit
except for one corner wall if you arrived carrying a lit candle.  The
unlit spot turns out to be correct, it is beyond candle radius, but
spots further away than that were showing up lit.  That's due to them
bordering a lit region on the opposite side and lit regions seem to
be bigger than their specified dimensions.

I tried to make the lit walls be unlit but it wasn't working.  (Making
the lit region be smaller would probably work but might have unintended
consequences when populating the zoo room.  I didn't try that.)  This
makes the unlit corner show up if light hits the spot next to it, so
that it behaves like the other lit walls surrounding that entry area.

I haven't marked the bug report closed because I don't think this is
the proper way to fix this.
2019-01-11 19:08:02 -08:00
PatR 8b02e5b32b enum values
Give the enum lists in several header files explicit values.  Adding
or removing new entries will be more tedious, but doing that is rare
and being able to grep the headers for numeric values in addition to
names is very useful.

rm.h also has a bunch of tabs replaced with spaces.
2019-01-11 17:18:48 -08:00
nhmall 47171cbcdc Merge branch 'NetHack-3.6.2' 2019-01-10 22:46:00 -05:00
nhmall da1d62f9a1 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-10 22:45:41 -05:00
Pasi Kallinen 5e2236a3ef Fix accessing deleted fire trap
melt_ice can delete the fire trap, in the case where the trap
is on ice, and a monster carrying a boulder triggers it, then drowns.

mintrap -> minliquid -> mondead -> ... -> mdrop_obj ->
   flooreffects -> boulder_hits_pool -> delfloortrap
2019-01-10 21:48:20 +02:00
nhmall cbcb1ea7eb Merge branch 'NetHack-3.6.2' 2019-01-10 09:42:38 -05:00
nhmall 9641864861 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-10 09:26:27 -05:00
PatR b1782b813f SEDUCE=0
When SEDUCE is disabled, instead of swapping attacks in mons[] once,
do it on the fly in getmattk() whenever needed.  That allows mons[]
to become readonly, although this doesn't declare it 'const' because
doing so will require a zillion 'struct permonst *' updates to match.

This seemed trickier than it should be, but that turned out to be
because the old behavior was broken.  Setting SEDUCE=0 in sysconf or
user's own configuration file resulted in all succubus and incubus
attacks being described as monster smiles engagingly or seductively
rather than hitting (while dishing out physical damage).  I didn't
try rebuilding 3.4.3 to see whether this was already broken before
being migrated to SYSCF.
2019-01-10 03:10:35 -08:00
PatR 79d40658c7 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.
2019-01-09 18:18:11 -08:00
PatR a637e91f37 miscellaneous formatting
Some minor stuff that's been sitting around for a while.
2019-01-09 18:15:43 -08:00
PatR bb86fa2bb7 hero infravision
Take a first step towards making the mons[] array be readonly.
The only other place that updates it is when changing succubus and
incubus AD_SSEX attacks to AD_SEDU ones and that can be handled
via existing getmattk(), but so far has proven to be trickier than
anticipated.
2019-01-09 18:10:55 -08:00
nhmall d4a469a7a6 Merge branch 'NetHack-3.6.2' 2019-01-09 09:22:46 -05:00
nhmall 580a6ab9c1 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-09 09:22:29 -05:00
nhw_cron 6e108962cb This is cron-daily v1-Jan-1-2019. guidebook updated: doc/Guidebook.txt 2019-01-09 08:44:14 -05:00
nhmall 58f2218c4e Merge branch 'NetHack-3.6.2' 2019-01-09 07:24:18 -05:00
nhmall 624aee7749 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-09 06:21:59 -05:00
PatR dd13b10cf2 make zeroany, zeromonst, zeroobj 'const'
They're never modified.  Minor complication:  &zeroobj is used as
a special not-Null-but-not-an-object value in multiple places and
needs to have 'const' removed with a cast in that situation.
2019-01-09 01:13:01 -08:00
nhmall 7eee5f3a1d Merge branch 'NetHack-3.6.2' 2019-01-08 18:30:31 -05:00
nhmall dba8ce7c07 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-08 18:30:04 -05:00
PatR d4e3f9d9d3 travel targetting via keyboard
Some phrase substitution in getpos() or its helpers produced
``Pick a target interesting thing in view for travel''
for 'm _', which sounds pretty awkward.  Change that to be
``Pick an interesting thing in view for travel destination''
leaving "target" implied.

For plain '_', typing '!' yielded
``Using a menu to show possible targets.''
but then nothing happened.  Change that to be
``Using a menu to show possible targets for 'm|M', 'o|O', 'd|D',
and 'x|X'.''
to explain when a menu will actually appear.
2019-01-08 14:42:54 -08:00
PatR dedd0dd30a 'm ^T' documentation 2019-01-08 13:56:59 -08:00
nhmall 6408023786 Merge branch 'NetHack-3.6.2' 2019-01-07 18:13:45 -05:00
nhmall 4f11a122c9 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-07 18:13:22 -05:00
PatR d1deafab05 stale vptrs for obj->{nexthere,ocontainer,ocarry}
'struct obj' contains a union of mutually exclusive pointers, but
removing an obj from a list wasn't clearing whichever one had been
in use.  If something is removed from a monster's inventory, clear
the object's pointer back to that monster; if something is removed
from a container, clear the object's pointer back to that container;
and whenever something is removed from the floor, clear the pointer
to the object which followed it at that floor location.
2019-01-06 20:59:20 -08:00
nhmall 269c9a2696 Merge branch 'NetHack-3.6.2' 2019-01-06 10:56:06 -05:00
nhmall 2e80de0646 Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2 2019-01-06 10:55:37 -05:00
PatR a1fd4622f2 get_cost_of_shop_item() crash
More shop price determination fallout.  After the most recent change
to get_cost_of_shop_item(), using ':' inside an engulfer carrying at
least one item while inside a shop would try to follow the item's
obj->ocontainer back-link and crash when that led to the engulfing
monster rather than to a container.
2019-01-06 02:36:41 -08:00
nhmall ba67274dbf Merge branch 'NetHack-3.6.2' 2019-01-05 10:28:34 -05:00