98 IEntity ownerEntity = owner.GetControlledEntity();
102 if (!weapon || !ownerEntity || !
m_bValid)
145 float distToTarget = 250;
147 if (targetPos !=
vector.Zero)
151 float stabilizationTime =
m_WeaponConfig.m_fBaseStabilizationTime;
156 if (distToTarget < SCR_AICombatComponent.CLOSE_RANGE_COMBAT_DISTANCE)
157 cqcFactor =
Math.Map(distToTarget, 5, SCR_AICombatComponent.CLOSE_RANGE_COMBAT_DISTANCE, 1, 0);
181 stabilizationTime +=
Math.RandomGaussFloat(0.236, 0);
182 burstSize =
base +
Math.Pow(
Math.RandomFloat(0, range) - 0.4, 2);
192 burstSize = 0.75 +
Math.Pow(
Math.RandomFloat(0, range) - 0.3, 3);
200 stabilizationTime +=
Math.RandomGaussFloat(0.236, 0);
204 burstSize -=
Math.RandomGaussFloat(0.32, 0) * cqcFactor;
206 if (stabilizationTime > 0)
207 stabilizationTime -=
Math.RandomFloat(stabilizationTime / 3, stabilizationTime) * cqcFactor * 0.85;
209 stabilizationTime = 0;
218 fireTime += (fireTime / 2.5) * fireRateFactor;
219 stabilizationTime += (stabilizationTime * 1.05) * fireRateFactor;
223 stabilizationTime +=
Math.AbsFloat(
Math.RandomGaussFloat(0.12, 0)) * fireRateFactor;
229 if (distToTarget > SCR_AICombatComponent.CLOSE_RANGE_COMBAT_DISTANCE)
232 stabTimeRandRange +=
Vector(0.5, 0, 0.7);
235 if (distToTarget > SCR_AICombatComponent.LONG_RANGE_COMBAT_DISTANCE)
236 stabTimeRandRange +=
Vector(0.7, 0, 1.5);
240 stabilizationTime *=
Math.RandomFloat(stabTimeRandRange[0], stabTimeRandRange[2]);
243 stabilizationTime =
Math.Max(stabilizationTime, 0.05);