Mörsergranate: impact marker on the ground until the explosion
The landing point is noted from the grenade's cEventFX 0x96 at launch; a translucent red circle with the explosion radius (shared ImpactRadius) is drawn after the world's ground, under the objects, and ends when that grenade's impact gathers its targets. Ground -> screen projection in game/engine/worldview.h. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
32f953fc01
commit
a4d5683403
5 files changed
+283
-13
No files matched your search
@@ -46,3 +46,27 @@
|
||||
- The impact's gather call gets a radius of size × (1 + 0.1 × (level / 5)),
|
||||
with the owner's Mörsergranate level (`game::ArtLevel`). The growth 0.1 per
|
||||
step is our choice; not yet seen in the game (Borf's level is 2).
|
||||
|
||||
## Mörsergranate impact marker (asked 2026-10-25, done 2026-10-26)
|
||||
|
||||
"Show exactly where the grenade will land and its explosion radius, a red
|
||||
circle with low alpha on the ground."
|
||||
|
||||
Measured:
|
||||
- The landing point is decided at launch (`0x5145d0` case 0x43e): the
|
||||
target's position, or, closer than 200, a point 200 from the dwarf with a
|
||||
+-15 jitter. It goes to the new grenade (type 0x3fa) in cEventFX 0x96,
|
||||
constructed at `0x5169fa` (`cEventFX::Construct` 0x41e0a0, thiscall, ret
|
||||
0x44: code, owner id, target id, position area / x / y / level, ...).
|
||||
- The impact gathers its targets at exactly that point, on several frames.
|
||||
The grenade object stays about 30 s after the explosion.
|
||||
- Ground -> screen: `0x622700` (world units -> world pixels, the isometric
|
||||
plane), then (pixel - camera +0x14/+0x18) / zoom +0xb60 + screen centre
|
||||
(floating texts 0x41e546). Checked with the hero: the screen centre.
|
||||
- The world view draws the ground (`0x62d530`, ground quad list), then the
|
||||
objects.
|
||||
|
||||
Mod: the construct call notes grenade, owner, landing point and radius
|
||||
(`ImpactRadius`, shared with the hit check); after `0x62d530` a disc (alpha
|
||||
0x40) with a 2 px rim (alpha 0xa0) is drawn there, without depth test, until
|
||||
the impact of that owner's grenade at that point gathers its targets.
|
||||
Reference in new issue
Block a user