Mörsergranate's explosion crashed twice reading the colour of a particle
with a huge life (sacred.exe+0x361b54). Particles with life >= 256 or the
unset fourth row are switched off before drawing; logged cases were all
row 3 with garbage sizes.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
sacred_re.dll/.exe/.ini/.log/_crash files are now sacredK.*; inventory saves
with the old "sacred_re.inventory" format id still load.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- autoattack: when the target dies, the nearest enemy within close range
(contact distance + a step) takes over; after an art the hero auto-attacks
if the art was melee (walked up / cast close by), or ranged with a ranged
weapon, or ranged with an enemy already in melee range; measured action
codes and weapon classes in game/engine/orders.h
- chainlightning: jumps reach Blitzschlag's cast range (20 ray segments of
30, the art code's hit check) via the shared NearestHostile search
- guards: burning bone render hook had the wrong signature (device plus a
4x4 matrix by value, ret 0x44) and corrupted the stack when fire arrows hit
- crash reports follow the ebp chain before the raw stack scan
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- re/crash: unhandled exceptions write sacred_re_crash.txt (module+offset,
registers, return addresses on the stack) and a minidump; the game's own
filter is chained behind ours
- guards: cParticleSystem_burningBone::Render (0x774e10) skips drawing when
given a null device (crash at sacred.exe+0x374e39 after Esc while walking)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>