Skip to content

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#

  1. lotr2_combat_tick_projectile computes damage (terrain and tier modifiers).
  2. Target figure damage_acc += damage.
  3. 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 damage before application