Интересен каталог \Units.
В нем куча скриптов, описывающих юниты. В первую голову интересны вертолеты. Распаковываем, к примеру Ka50Unit.script и открываем его в редакторе.
Первый интересный класс: CKa50CollisionExplosion
Описывает повреждения, наносимые вертолету при столкновении. Хардкорщики, ставьте здесь тыщщу! ;o)
Далее, интерес представляет 30мм пушка. За нее отвечает класс CKa50Gun. Что там можно поменять? Гм...
Переменная InitBulletSpeed описывает, с какой скоростью в м/с полетит наш снаряд.
Переменная FireDeviation описывает, каково будет случайное отклонение визира пушки при стрельбе. Чем больше коэффициент, тем сильнее будет болтать пушку и снаряды будут лететь мимо. Значение в градусах отклонения.
Переменная Ammunition указывает общее кол-во выстрелов к пушке.
Переменные LockAngleHMin, LockAngleHMax, LockAngleVMin, LockAngleVMax указывают углы сопровождения пушкой цели от линии визирования вертолета: по горизонтали, по вертикали.
Переменная BlockedLockAngle указывает фактически рамку вокруг маркера цели, куда нужно поставить маркер пушки для автозалпа. Т.о. блокируем пушку, зажимаем спуск, выбираем цель и наводим маркер пушки на цель. Как только маркер пушки совмещается с маркером цели +- BlockedLockAngle (в градусах) получаем очередь.
Переменная TargetingRange указывает дистанцию, на которой пушка "захватит" цель.
Коль скоро дистанцию огневого контакта мы планируем увеличить (например, до 4 км), то необходимо в классе CKa50GunBulletControl всадить переменную float MaxDistance, присвоив ей значение 4000.0 (в метрах). В обратном случае наш снаряд будет самоликвидироваться на дистанции 2000 метров, не долетая до цели.
Соответственно, все это корректно будет работать, если в классе CKa50Unit поставить значения дальности оптики RadarRange на дистанцию свыше 4 км.