Index: binaries/data/mods/public/simulation/components/Attack.js =================================================================== --- binaries/data/mods/public/simulation/components/Attack.js +++ binaries/data/mods/public/simulation/components/Attack.js @@ -153,6 +153,9 @@ "" + "" + "" + + ""+ + "" + + "" + "" + "" + "" + @@ -473,7 +476,12 @@ let targetVelocity = Vector3D.sub(targetPosition, previousTargetPosition).div(turnLength); let timeToTarget = this.PredictTimeToTarget(selfPosition, horizSpeed, targetPosition, targetVelocity); - let predictedPosition = (timeToTarget !== false) ? Vector3D.mult(targetVelocity, timeToTarget).add(targetPosition) : targetPosition; + + let ballistics = targetVelocity.length() * 0.05 * + ApplyValueModificationsToEntity("Attack/" + type + "/Ballistics", +(this.template[type].Projectile.BallisticsFactor || 0), this.entity); + let ballisticsCorrectedTTT = timeToTarget + ballistics * +randomNormal2D()[0]; + + let predictedPosition = (timeToTarget !== false) ? Vector3D.mult(targetVelocity, ballisticsCorrectedTTT).add(targetPosition) : targetPosition; // Add inaccuracy based on spread. let distanceModifiedSpread = ApplyValueModificationsToEntity("Attack/Ranged/Spread", +this.template[type].Projectile.Spread, this.entity) *