Siege engine range was hardcoded to 300. Read it from the rune natural attack instead (350 for Trebuchet, Mangonel and Ballista), matching the client's RecalcMinWeaponRange. Falls back to 300 if the rune has none. getNaturalAttack now returns the whole entry so speed and range share the lookup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>