diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index 1bf757187..5d982efe8 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -27,6 +27,7 @@ GVAR(NormalLaunchers) = [] call CBA_fnc_createNamespace; GVAR(LoadedLaunchers) = [] call CBA_fnc_createNamespace; GVAR(UsedLaunchers) = [] call CBA_fnc_createNamespace; GVAR(magazines) = []; +GVAR(BackpackLaunchers) = createHashMap; GVAR(MagazineLaunchers) = [] call CBA_fnc_createNamespace; private _cfgWeapons = configFile >> "CfgWeapons"; @@ -36,6 +37,7 @@ private _cfgMagazines = configFile >> "CfgMagazines"; private _launcher = configName _x; private _magazine = configName (_cfgMagazines >> (getArray (_cfgWeapons >> _launcher >> "magazines") select 0)); getArray _x params ["_loadedLauncher", "_usedLauncher"]; + private _fitsInBackpacks = TYPE_BACKPACK in getArray (configFile >> "CfgWeapons" >> _loadedLauncher >> "WeaponSlotsInfo" >> "allowedSlots"); GVAR(LoadedLaunchers) setVariable [_launcher, _loadedLauncher]; GVAR(UsedLaunchers) setVariable [_launcher, _usedLauncher]; @@ -48,6 +50,10 @@ private _cfgMagazines = configFile >> "CfgMagazines"; GVAR(MagazineLaunchers) setVariable [_magazine, _loadedLauncher]; }; + if (_fitsInBackpacks) then { + GVAR(BackpackLaunchers) set [_loadedLauncher, true]; + }; + // check if mass entries add up private _massLauncher = getNumber (_cfgWeapons >> _launcher >> "WeaponSlotsInfo" >> "mass"); private _massMagazine = getNumber (_cfgMagazines >> _magazine >> "mass"); diff --git a/addons/disposable/fnc_replaceMagazineCargo.sqf b/addons/disposable/fnc_replaceMagazineCargo.sqf index a01682b11..89e3da9e6 100644 --- a/addons/disposable/fnc_replaceMagazineCargo.sqf +++ b/addons/disposable/fnc_replaceMagazineCargo.sqf @@ -56,8 +56,9 @@ private _isBackpack = getNumber (configOf _box >> "isBackpack") != -1; _x params ["_magazine", "_ammo"]; if (_magazine in GVAR(magazines)) then { - if !(_isBackpack) then { - _box addWeaponCargoGlobal [GVAR(MagazineLaunchers) getVariable _magazine, 1]; + private _loadedLauncher = GVAR(MagazineLaunchers) getVariable _magazine; + if (!_isBackpack || {_loadedLauncher in GVAR(BackpackLaunchers)}) then { + _box addWeaponCargoGlobal [_loadedLauncher, 1]; }; } else { _box addMagazineAmmoCargo [_magazine, 1, _ammo]; diff --git a/addons/disposable/script_component.hpp b/addons/disposable/script_component.hpp index 1478b6a09..02a2f8fd1 100644 --- a/addons/disposable/script_component.hpp +++ b/addons/disposable/script_component.hpp @@ -19,3 +19,7 @@ #include "\a3\ui_f\hpp\defineResincl.inc" #define WEAPON_MAGAZINES(unit,weapon) (weaponsItems (unit) select {_x select 0 == (weapon)} param [0, []] select {_x isEqualType []}) + +#define TYPE_VEST 701 +#define TYPE_UNIFORM 801 +#define TYPE_BACKPACK 901