One possible remedy:

Use a straight firing line if target <= max_short_firing_distance

If target > max_short_firing_distance then
use arc firing line

Has anyone seen the code for determining a firing solution from bows and crossbows? If I get some time maybe I can try finding it...