diff --git a/addons/fieldmanual/CfgHints.hpp b/addons/fieldmanual/CfgHints.hpp index 6f5b0c8efef..f915ba71e83 100644 --- a/addons/fieldmanual/CfgHints.hpp +++ b/addons/fieldmanual/CfgHints.hpp @@ -106,6 +106,14 @@ class CfgHints { description = CSTRING(Items_EarPlugs_Description); tip = "Hearing Wiki"; }; + class ACE_EHP: ACE_FieldManual_Base { + logicalOrder = 10; + arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_EHP' call FUNC(getItemName))}; + displayName = "%14"; + displayNameShort = CSTRING(Items_EHP_ShortName); + description = CSTRING(Items_EHP_Description); + tip = "Hearing Wiki"; + }; class ACE_EntrenchingTool: ACE_FieldManual_Base { logicalOrder = 11; arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_EntrenchingTool' call FUNC(getItemName))}; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 7a9bff695a2..182c0ccb46f 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -48,60 +48,70 @@ class CfgVehicles { class Box_NATO_Support_F: NATO_Box_Base { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class B_supplyCrate_F: ReammoBox_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class Box_East_Support_F: EAST_Box_Base { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class O_supplyCrate_F: B_supplyCrate_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class Box_IND_Support_F: IND_Box_Base { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class Box_FIA_Support_F: FIA_Box_Base_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class I_supplyCrate_F: B_supplyCrate_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class IG_supplyCrate_F: ReammoBox_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class C_supplyCrate_F: ReammoBox_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; class ACE_Box_Misc: Box_NATO_Support_F { class TransportItems { MACRO_ADDITEM(ACE_EarPlugs,12); + MACRO_ADDITEM(ACE_EHP,12); }; }; diff --git a/addons/hearing/XEH_preInit.sqf b/addons/hearing/XEH_preInit.sqf index eb9636a12c2..36d2159e8c9 100644 --- a/addons/hearing/XEH_preInit.sqf +++ b/addons/hearing/XEH_preInit.sqf @@ -19,6 +19,15 @@ PREP_RECOMPILE_END; [QGVAR(updateVolume), true, _unit] call CBA_fnc_targetEvent; }; }; + + if (_extendedInfo getOrDefault ["ace_ehp", false]) then { + _unit setVariable ["ACE_hasEHP", true, true]; + + // Only force update volume if unit is a player (including remote controlled) + if (_unit call EFUNC(common,isPlayer)) then { + [QGVAR(updateVolume), true, _unit] call CBA_fnc_targetEvent; + }; + }; }] call CBA_fnc_addEventHandler; ["CBA_loadoutGet", { @@ -27,6 +36,10 @@ PREP_RECOMPILE_END; if (_unit getVariable ["ACE_hasEarPlugsIn", false]) then { _extendedInfo set ["ace_earplugs", true] }; + + if (_unit getVariable ["ACE_hasEHP", false]) then { + _extendedInfo set ["ace_ehp", true] + }; }] call CBA_fnc_addEventHandler; ADDON = true; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index ba6674b9db0..fcdef40324b 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -4,7 +4,7 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; units[] = {}; - weapons[] = {"ACE_EarPlugs"}; + weapons[] = {"ACE_EarPlugs", "ACE_EHP"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); diff --git a/addons/hearing/initKeybinds.inc.sqf b/addons/hearing/initKeybinds.inc.sqf index 51bd55f421a..b8c3d5f5dc5 100644 --- a/addons/hearing/initKeybinds.inc.sqf +++ b/addons/hearing/initKeybinds.inc.sqf @@ -16,3 +16,22 @@ false // return }] call CBA_fnc_addKeybind; // UNBOUND + +["ACE3 Equipment", QGVAR(putOrRemoveEHP), LLSTRING(PutOrRemoveEHP), { + // Conditions: specific + if !([ACE_player, objNull, ["isNotSwimming", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + + if ([ACE_player] call FUNC(canPutOnEHP)) exitWith { + [ACE_player, true] call FUNC(putOnEHP); + + true // return + }; + + if (GVAR(enableCombatDeafness) && {ACE_player getVariable ["ACE_hasEHP", false]}) exitWith { + [ACE_player, true] call FUNC(removeEHP); + + true // return + }; + + false // return +}] call CBA_fnc_addKeybind; // UNBOUND diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index a667e783fe2..8fa692be8ab 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -367,6 +367,10 @@ Electronic Hearing Protection taken off Elektronischer Gehörschutz abgesetzt + + Put on/take off Electronic Hearing Protection + Elektronischer Gehörschutz aufsetzen/absetzen + Unconscious Volume Lautstärke Bewusstlosigkeit diff --git a/docs/wiki/class-names.md b/docs/wiki/class-names.md index 0dcf014da16..7d3b425a58b 100644 --- a/docs/wiki/class-names.md +++ b/docs/wiki/class-names.md @@ -161,6 +161,7 @@ ACE_gunbag_Tan | Gunbag | Backpack | Class Name | In-Game Name | Type | ---------- | --------- | --------- ACE_EarPlugs | Earplugs | ACE_ItemCore | +ACE_EHP | Electronic Hearing Protection | ACE_ItemCore | ### HuntIR `Added in 3.1.1`