diff --git a/addons/safemode/XEH_PREP.hpp b/addons/safemode/XEH_PREP.hpp index ab2a755a663..2f23aa02c9e 100644 --- a/addons/safemode/XEH_PREP.hpp +++ b/addons/safemode/XEH_PREP.hpp @@ -3,3 +3,4 @@ PREP(lockSafety); PREP(playChangeFiremodeSound); PREP(setSafeModeVisual); PREP(unlockSafety); +PREP(setWeaponSafety); diff --git a/addons/safemode/functions/fnc_setWeaponSafety.sqf b/addons/safemode/functions/fnc_setWeaponSafety.sqf new file mode 100644 index 00000000000..4ad0174b202 --- /dev/null +++ b/addons/safemode/functions/fnc_setWeaponSafety.sqf @@ -0,0 +1,36 @@ +#include "script_component.hpp" +/* + * Author: Brostrom.A + * Safe or unsafe the given weapon based on weapon state; locked or unlocked. + * + * Arguments: + * 0: Unit + * 1: Weapon + * 2: State + * + * Return Value: + * None + * + * Example: + * [ACE_player, currentWeapon ACE_player, true] call ace_safemode_fnc_setWeaponSafety + * + * Public: Yes + */ + +params [ + ["_unit", objNull, [objNull]], + ["_weapon", "", [""]], + ["_state", true, [true]] +]; + +if (_weapon == "") exitWith {}; + +private _safedWeapons = _unit getVariable [QGVAR(safedWeapons), []]; + +_weapon = configName (configFile >> "CfgWeapons" >> _weapon); + +private _muzzle = currentMuzzle _unit; + +if !(_state isEqualTo (_weapon in _safedWeapons)) then { + [_unit, _weapon, _muzzle] call FUNC(lockSafety); +};