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.
|
||||
@@ -42,15 +42,6 @@ Known so far: the periodic-hit aura (effect kind 0x12) uses
|
||||
mapped yet. Other arts' ranges are not mapped. Fits the data-driven arts
|
||||
item above (range as a property of an art, one place to compute it).
|
||||
|
||||
Mörsergranate impact indicator (asked 2026-10-25, while reworking the dwarf's
|
||||
Kanonenschuss / Mörsergranate): show exactly where the grenade will land and
|
||||
its explosion radius, a red circle with low alpha on the ground. The landing
|
||||
point seems to be decided at launch (cCreature combat move code `0x5145d0`,
|
||||
case 0x43e: the target point, changed by a random offset when closer than
|
||||
200; passed as the position of the grenade's cEventFX 0x96), so the circle
|
||||
could be drawn from the launch until the explosion; to be confirmed with the
|
||||
diagnostic log. To be built after the radius-per-level change.
|
||||
|
||||
## Rename life leech to "omnivamp"
|
||||
|
||||
Asked 2026-10-15: life leech (property 0x349, "Lebensentzug") becomes
|
||||
|
||||
Reference in new issue
Block a user