The fix to prevent "crushed by a gas spore's explosion" set killer.name to an empty string after a gas spore explosion finished, but that made nested explosions end up with empty killer.name after the innermost call completed. explode() shouldn't have been hanging on to a pointer to a global value that is subject to change while it executes. Making a local copy of the current value at the time explode() is called will solve that (I hope...). Simply reverting the reset of killer.name wouldn't have been correct. The innermost explosion would still be clobbering killer.name for any outer MON_EXPLODE explosions in progress. When the only exploding monster is gas spore, that wouldn't be noticeable. But having other types of exploding monsters and a chain reaction which affected more than one type would have exposed that bug. I think this fixes both aspects of this problem but don't have a second type of exploding monster to verify the second part.
53 KiB
53 KiB