#include "script_component.hpp" /* * Author: Pterolatypus * Calculates total weapon inertia, accounting for attachments. * * Arguments: * 0: Unit * * Return Value: * Total inertia * * Example: * [ACE_player] call ace_advanced_fatigue_fnc_getWeaponInertia * * Public: No */ params [["_unit", ACE_player, [objNull]]]; private _cache = GVAR(inertiaCache); private _weapon = currentWeapon _unit; private _weaponAndItems = [_weapon] + (_unit weaponAccessories _weapon); private _inertia = _cache get _weaponAndItems; if (isNil "_inertia") then { _inertia = 0; private _cfgWeapons = configFile >> "CfgWeapons"; { // if item is "" or inertia property is undefined, just ignore it private _itemInertia = getNumber (_cfgWeapons >> _x >> "inertia"); if (isNil "_itemInertia") then { continue }; _inertia = _inertia + _itemInertia; } forEach _weaponAndItems; _cache set [_weaponAndItems, _inertia]; }; GVAR(inertia) = _inertia; _inertia