Files
MissionTemplate/functions/ambience/fn_flakInitVehicle.sqf
2023-06-19 00:57:30 -05:00

83 lines
2.3 KiB
Plaintext

params [
["_unit", objNull, [objNull]],
["_maximumDistance", 2000, [0]],
["_minimumAltitude", 0, [0]],
["_flakRoundsEvery", 2, [0]],
["_speedDispersion", 20, [0]],
["_distanceDispersion", 30, [0]],
["_removeMissiles", true, [true]]
];
diag_log("initializing flak v16");
_primaryTurret = objNull;
if (_removeMissiles) then {
diag_log("removing missiles");
_magazines = magazinesAllTurrets _unit;
{
_magazine = _x select 0;
diag_log( format["Checking: %1", _magazine]);
_ammo = gettext( configfile >> "CfgMagazines" >> _magazine >> "ammo");
diag_log( format["ammo: %1", _ammo]);
_type = gettext(configFile >> "CfgAmmo" >> _ammo >> "simulation");
diag_log( format["ammo type: %1", _type]);
if (_type == "shotMissile") then {
_unit removeMagazinesTurret [_magazine, [0]];
diag_log(format["removing ammo: %1", _ammo]);
};
if ((_type == "shotBullet") && (_primaryTurret isEqualTo objNull)) then {
_primaryTurret = _forEachIndex;
diag_log(format["found primary turret: %1", _unit weaponsTurret [0] select _primaryTurret]);
};
} foreach _magazines;
};
_weapon = _unit weaponsTurret [0] select _primaryTurret;
_fullAmmoCount = _unit ammo _weapon;
_unit setVariable["feh_maximumDistance", _maximumDistance];
_unit setVariable["feh_minimumAltitude", _minimumAltitude];
_unit setVariable["feh_primaryTurret", _primaryTurret];
_unit setVariable["feh_fullAmmoCount", _fullAmmoCount];
_unit setVariable["feh_flakRoundsEvery", _flakRoundsEvery];
_unit setVariable["feh_speedDispersion", _speedDispersion];
_unit setVariable["feh_distanceDispersion", _distanceDispersion];
diag_log( format[
"{[_this, maximumDistance: %1, minimumAltitude: %2, primaryTurret: %3, fullAmmoCount: %4, flakRoundsEvery: %5, speedDispersion: %6, distanceDispersion: %7] call milsim_fnc_flakEH;}",
_maximumDistance,
_minimumAltitude,
_primaryTurret,
_fullAmmoCount,
_flakRoundsEvery,
_speedDispersion,
_distanceDispersion
]
);
_unit addEventHandler [
"Fired",
format[
"diag_log('firing'); [_this, %1, %2, %3, %4, %5, %6, %7] call milsim_fnc_flakEH",
_maximumDistance,
_minimumAltitude,
_primaryTurret,
_fullAmmoCount,
_flakRoundsEvery,
_speedDispersion,
_distanceDispersion
]
];