#include "script_component.hpp" /* * Author: LinkIsGrim * Unloads and returns magazines from a CSW * * Arguments: * 0: CSW (default: objNull) * 1: Turret Path (default: [0], gunner turret) * 2: Return removed magazines (default: true) * * Return Value: * None * * Example: * [cursorTarget, [0]] call ace_csw_fnc_unloadMagazines * * Public: Yes */ params [["_vehicle", objNull, [objNull]], ["_turretPath", [0], [0]], ["_returnMags", true, [true]]]; if (isNull _vehicle) exitWith {}; private _magsToRemove = []; private _containerMagazineClassnames = []; private _containerMagazineCount = []; { _x params ["_xMag", "_xTurret", "_xAmmo"]; if (_xTurret isNotEqualTo _turretPath) then {continue}; private _carryMag = _xMag call FUNC(getCarryMagazine); if (_carryMag != "") then { _magsToRemove pushBackUnique [_xMag, _xTurret]; private _index = _containerMagazineClassnames find _carryMag; if (_index < 0) then { _index = _containerMagazineClassnames pushBack _carryMag; _containerMagazineCount pushBack 0; }; _containerMagazineCount set [_index, (_containerMagazineCount select _index) + _xAmmo]; }; } forEach (_vehicle magazinesAllTurrets _vehicle); { _vehicle removeMagazinesTurret _x; } forEach _magsToRemove; if (_returnMags) then { { [_vehicle, _x, _containerMagazineCount select _forEachIndex] call FUNC(reload_handleReturnAmmo); } forEach _containerMagazineClassnames; };