/* * Author: commy2 * * Return current state of the weapon. Attachments and magazines with ammo. * * Argument: * 0: A unit (Object) * 1: A weapon (String) * * Return value: * Weapon info, format: [attachments, muzzles, magazines, ammo] (Array) */ #include "script_component.hpp" private ["_unit", "_weapon"]; _unit = _this select 0; _weapon = _this select 1; private "_muzzles"; _muzzles = [_weapon] call FUNC(getWeaponMuzzles); private "_weaponInfo"; _weaponInfo = []; switch (_weapon) do { case (primaryWeapon _unit): { _weaponInfo pushBack primaryWeaponItems _unit; }; case (secondaryWeapon _unit): { _weaponInfo pushBack secondaryWeaponItems _unit; }; case (handgunWeapon _unit): { _weaponInfo pushBack handgunItems _unit; }; default { _weaponInfo pushBack ["","","",""]; }; }; // get loaded magazines and ammo private ["_magazines", "_ammo"]; _magazines = []; _ammo = []; { _magazines pushBack ""; _ammo pushBack 0; } forEach _muzzles; { if (_x select 2) then { private "_index"; _index = _muzzles find (_x select 4); if (_index != -1) then { _magazines set [_index, _x select 0]; _ammo set [_index, _x select 1]; }; }; } forEach magazinesAmmoFull _unit; _weaponInfo append [_muzzles, _magazines, _ammo]; _weaponInfo