Guard: grenade impact particles out of the colour table
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>
This commit is contained in:
1 parent
91e7f844cc
commit
42b99526a4
2 files changed
+59
No files matched your search
@@ -76,3 +76,14 @@ a game::Art tooltip filter adds "Explosionsradius: N" after the last value
|
||||
line of each level section (current level, and the next level's in the skill
|
||||
book), in that line's colour, from the same `ImpactRadiusAt(level)` as the
|
||||
hit check and the marker.
|
||||
|
||||
## Grenade impact crash (2026-10-26)
|
||||
|
||||
Crashes at sacred.exe+0x361b54 (2026-10-26 00:12 and 22:39) in the particle
|
||||
drawer `0x7613e0`, called by `cParticleSystem_grenadeimpact::Render` (vf04
|
||||
0x7b66b0): colour = table +0x20d0 at row (+0x3d) * 256 + life (+0x2c), and a
|
||||
particle had a life of over 500000. Guard (`mods/guards.cpp`): live particles
|
||||
with life >= 256 or row >= 3 are switched off before drawing. Logged in the
|
||||
next session: 5 particles, all row 3, life 255, garbage sizes (e.g. 190555,
|
||||
4.6e-40): the explosion emits into a fourth row whose emitter parameters it
|
||||
never sets (vf10 0x7b6980 fills three rows at +0x30d0). No crash since.
|
||||
Reference in new issue
Block a user