mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
4a3ad40c04
* Stamina penalty for weapon raised/ready is scaled by weapon inertia * Newline * Tabs my editor hates me * Use format * Improved item validation and caching
39 lines
1014 B
Plaintext
39 lines
1014 B
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: Pterolatypus
|
|
* Calculates total weapon inertia, accounting for attachments.
|
|
*
|
|
* Arguments:
|
|
* 0: Unit <OBJECT>
|
|
*
|
|
* Return Value:
|
|
* Total inertia <NUMBER>
|
|
*
|
|
* 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
|