123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- params["_shield"];
- if(_shield isEqualTo objNull) exitWith {
- diag_log format["[RD501][Shield] Specified shield is null while checking state"];
- };
- private _maxHealth = _shield getVariable ["rd501_shield_maxHealth", false];
- private _currentHealth = _shield getVariable ["rd501_shield_currentHealth", false];
- private _isLowHealth = _shield getVariable ["rd501_shield_isLowHealth", false];
- private _lowHealthPercentage = _shield getVariable ["rd501_shield_lowHealthPercentage", 20];
- private _threshold = _maxHealth * (_lowHealthPercentage/100);
- private _type = _shield getVariable ["rd501_shield_type", "REPUBLIC"];
- if(_isLowHealth) exitWith {
- if(_currentHealth >= _threshold) then {
- _shield setVariable["rd501_shield_isLowHealth", false];
-
- private _jipId = _shield getVariable ["rd501_shield_stateJipId", false];
- if(_jipId isEqualTo false) then {
- _jipId = ["rd501_shield_normalHealth",[_shield, _type]] call CBA_fnc_globalEventJIP;
- _shield setVariable ["rd501_shield_stateJipId", _jipId, true];
- [_jipId, _shield] call CBA_fnc_removeGlobalEventJIP;
- }
- else
- {
- ["rd501_shield_normalHealth",[_shield, _type], _jipId] call CBA_fnc_globalEventJIP;
- [_jipId, _shield] call CBA_fnc_removeGlobalEventJIP;
- };
- };
- };
- if!(_isLowHealth) exitWith {
- if(_currentHealth < _threshold) then {
- _shield setVariable["rd501_shield_isLowHealth", true];
- private _jipId = _shield getVariable ["rd501_shield_stateJipId", false];
- if(_jipId isEqualTo false) then {
- _jipId = ["rd501_shield_normalHealth",[_shield, _type]] call CBA_fnc_globalEventJIP;
- _shield setVariable ["rd501_shield_stateJipId", _jipId, true];
- [_jipId, _shield] call CBA_fnc_removeGlobalEventJIP;
- }
- else
- {
- ["rd501_shield_lowHealth",[_shield, _type], _jipId] call CBA_fnc_globalEventJIP;
- [_jipId, _shield] call CBA_fnc_removeGlobalEventJIP;
- };
- };
- };
|