I think there may be some confusion. The flight time is computed automatically based on the actual, fully modified range of the projectile, when the shot is fired.
Nope, just tested it. The projectile's max range is set when parsing the files, when a script calls WeaponSpecAPI#setMaxRange, then the assorted ProjectileSpecAPI#getMaxRange is and remains exactly the original WeaponSpecAPI#getMaxRange.
(And indeed, updating my script to add the same offset to WeaponSpecAPI and ProjectileSpecAPI fixes the issue that Heavy Blaster, Heavy Autocannon, Mjolnir Cannon projectiles dissipate in-range... I am a bit surprised that Light Needler and Heavy Needler projectiles did not seem to have that issue. All beams worked just by calling WeaponSpecAPI#setMaxRange too, but I guess that's more because they do not
have a projectile?)
In the code for the various kinds of targeting computer, I see that unlike Ballistic Rangefinder and my own script, they call MutableShipStatsAPI#getBallisticWeaponDamageMult and from there MutableStat#modifyPercent . ... I think I cannot do that, because as far as I can see, WeaponSpecAPI, ProjectileSpecAPI, MissileSpecAPI neither give or take MutableStats or StatMods.
... Alas.