ACE3/addons/common/functions/fnc_removeSpecificMagazine.sqf

79 lines
2.1 KiB
Plaintext
Raw Normal View History

/*
2015-03-24 04:18:00 +00:00
* Author: esteldunedain
* Removes a magazine from the unit that has an specific ammo count
*
2015-09-19 17:26:45 +00:00
* Arguments:
* 0: Unit <OBJECT>
* 1: Magazine <STRING>
* 2: Ammo count <NUMBER>
*
2015-09-19 17:26:45 +00:00
* Return Value:
* None
2015-09-19 17:26:45 +00:00
*
* Public: No
*/
#include "script_component.hpp"
2015-09-19 17:26:45 +00:00
params ["_unit", "_magazineType", "_ammoCount"];
private ["_isRemoved", "_magazines", "_index"];
_isRemoved = false;
// Check uniform
2015-09-19 17:26:45 +00:00
_magazines = [magazinesAmmoCargo uniformContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter);
_index = _magazines find [_magazineType, _ammoCount];
if (_index > -1) exitWith {
{
2015-09-19 17:26:45 +00:00
_unit removeItemFromUniform (_x select 0);
false
} count _magazines;
{
if (!_isRemoved && (_x isEqualTo [_magazineType,_ammoCount])) then {
_isRemoved = true;
} else {
2015-09-19 17:26:45 +00:00
(uniformContainer _unit) addMagazineAmmoCargo [_x select 0, 1, _x select 1];
};
2015-09-19 17:26:45 +00:00
false
} count _magazines;
};
// Check vest
2015-09-19 17:26:45 +00:00
_magazines = [magazinesAmmoCargo vestContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter);
_index = _magazines find [_magazineType,_ammoCount];
if (_index > -1) exitWith {
{
2015-09-19 17:26:45 +00:00
_unit removeItemFromVest (_x select 0);
false
} count _magazines;
{
if (!_isRemoved && (_x isEqualTo [_magazineType,_ammoCount])) then {
_isRemoved = true;
} else {
2015-09-19 17:26:45 +00:00
(vestContainer _unit) addMagazineAmmoCargo [_x select 0, 1, _x select 1];
};
2015-09-19 17:26:45 +00:00
false
} count _magazines;
};
// Check backpack
2015-09-19 17:26:45 +00:00
_magazines = [magazinesAmmoCargo backpackContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter);
_index = _magazines find [_magazineType,_ammoCount];
if (_index > -1) exitWith {
{
2015-09-19 17:26:45 +00:00
_unit removeItemFromBackpack (_x select 0);
false
} count _magazines;
{
if (!_isRemoved && (_x isEqualTo [_magazineType,_ammoCount])) then {
_isRemoved = true;
} else {
2015-09-19 17:26:45 +00:00
(backpackContainer _unit) addMagazineAmmoCargo [_x select 0, 1, _x select 1];
};
2015-09-19 17:26:45 +00:00
false
} count _magazines;
};