lost objects thrown by monsters

Reported by entrez:  if a monster or explosion kills the hero with an
object that has timers or is a light source, it could trigger a panic
when end of game cleanup can't find it because it has been removed
from the map or monster's inventory and not placed back on the map
yet.  This isn't much different from something thrown by hero which
had a similar situation dealt with a long time ago.  Fix by setting
'thrownobj' for monster-launched and explosion-launched missiles.
That way done_object_cleanup() called from really_done() will place the
missile on the map where saving bones or general cleanup can find it.

It doesn't bother dealing with exploding a lit potion of oil that
kills the hero by missile damage before the potion explodes.  If that
ends up in bones, it should still be lit and might blow up before the
new character reaches it.  (Not verified.)

The code for a hero polymorphed into a unicorn and catching a thrown
gem has been moved into its own routine.  No change in behavior, just
less clutter in the thrown-object-hits-hero section of the monster
throwing routine.
This commit is contained in:
PatR
2022-02-24 18:10:52 -08:00
parent ab2bcf4dac
commit 20eccf8ead
3 changed files with 49 additions and 23 deletions
+4
View File
@@ -819,6 +819,10 @@ discovering an object on first turn with persistent inventory enabled might
or spellbook and read it as first action; it becomes discovered but
will still be shown as if undiscovered until next inventory update)
most traps now require touching the floor to trigger
if a lit potion of oil on the floor was launched by an explosion and it hit
and killed the hero via missile damage rather than its own explosion,
it could trigger an "obj_is_local" panic when end of game cleanup
tried to extinguish it as a light source
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository