lotr2_projectile — battle projectile instance#
Header: lotr2_projectile.h
Summary#
Arrows, bolts, catapult boulders, boiling oil pours, and related effects are projectile slots separate from battle figures. Up to 100 active projectiles (stride 0x4c) are advanced by lotr2_combat_tick_projectile.
- Confidence: likely (partial layout)
- Base region:
lotr2_projectile_slots - Stride: 0x4c (76 bytes)
Related: lotr2_battle_tile.md, lotr2_unit_stats.md.
Key offset table#
| Offset | Field | Symbol | Description |
|---|---|---|---|
| +0x09 | kind |
lotr2_projectile_kind |
Projectile type discriminator |
| +0x36 | tile_index |
— | Linear battle-map tile index |
| +0x3E | phase_timer |
— | Animation phase; indexes damage tables |
| +0x40 | damage |
— | Damage applied to units below |
Projectile kinds#
| Kind | Source | Damage |
|---|---|---|
| 1 | Archer | Shooter attack_damage × formation tier scale |
| 2 | Crossbowman | Same path, different animation |
| 3 | Siege engine | Siege unit ranged path |
| 4 | Catapult boulder | Table 0x004f4c70 → 19–24 (phase >> 1) |
| 5 | Boiling oil | Table 0x004f4cc8 → 25–32 (phase >> 4) |
| 7 | Catapult aim marker | lotr2_siege_fire_catapult // was thunk_FUN_0048d23a |
Damage application#
lotr2_combat_tick_projectilecomputesdamage(terrain and tier modifiers).- Target figure
damage_acc+= damage. - Same 100-point pool as melee; large hits can remove 1–4 soldiers (thresholds at 100/200/300/400).
Wall hits (tile_type == 4) increment tile damage_counter; above 15 triggers breach.
Evidence#
| Claim | Source |
|---|---|
| Stride 0x4c | lotr2_combat_clear_projectile_slot clears 0x4c bytes |
| kind at +0x09 | (&DAT_005476c9)[slot * 0x4c] comparisons throughout |
| Oil kind 5 | lotr2_siege_pour_boiling_oil sets kind 5 |
| Catapult table | lotr2_combat_tick_projectile uses 0x004f4c70 |
Open questions#
- Full 0x4c-byte layout (velocity fields at +0xca/+0xcc, etc.)
- Exact tier scaling factors on
damagebefore application