mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Hearing - Code cleanup (#10041)
* Hearing cleanup * Update fnc_updateHearingProtection.sqf * Fixes + tweaks * Update initSettings.inc.sqf * Update fnc_removeEarplugs.sqf
This commit is contained in:
parent
be61424fed
commit
e535988479
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
class Extended_PreStart_EventHandlers {
|
class Extended_PreStart_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
|
init = QUOTE(call COMPILE_SCRIPT(XEH_preStart));
|
||||||
|
@ -5,7 +5,7 @@ class CfgVehicles {
|
|||||||
class ACE_Equipment {
|
class ACE_Equipment {
|
||||||
class ACE_PutInEarplugs {
|
class ACE_PutInEarplugs {
|
||||||
displayName = CSTRING(EarPlugs_On);
|
displayName = CSTRING(EarPlugs_On);
|
||||||
condition = QUOTE(GVAR(EnableCombatDeafness) && {!([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player}});
|
condition = QUOTE(GVAR(enableCombatDeafness) && {!(_player call FUNC(hasEarPlugsIn)) && {[ARR_2(_player,'ACE_EarPlugs')] call EFUNC(common,hasItem)}});
|
||||||
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
||||||
statement = QUOTE([ARR_2(_player,true)] call FUNC(putInEarPlugs));
|
statement = QUOTE([ARR_2(_player,true)] call FUNC(putInEarPlugs));
|
||||||
showDisabled = 0;
|
showDisabled = 0;
|
||||||
@ -13,7 +13,7 @@ class CfgVehicles {
|
|||||||
};
|
};
|
||||||
class ACE_RemoveEarplugs {
|
class ACE_RemoveEarplugs {
|
||||||
displayName = CSTRING(EarPlugs_Off);
|
displayName = CSTRING(EarPlugs_Off);
|
||||||
condition = QUOTE(GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)});
|
condition = QUOTE(GVAR(enableCombatDeafness) && {_player call FUNC(hasEarPlugsIn)});
|
||||||
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"};
|
||||||
statement = QUOTE([ARR_2(_player,true)] call FUNC(removeEarPlugs));
|
statement = QUOTE([ARR_2(_player,true)] call FUNC(removeEarPlugs));
|
||||||
showDisabled = 0;
|
showDisabled = 0;
|
||||||
|
@ -80,7 +80,7 @@ class CfgWeapons {
|
|||||||
|
|
||||||
class H_HelmetO_ocamo: H_HelmetB {
|
class H_HelmetO_ocamo: H_HelmetB {
|
||||||
HEARING_PROTECTION_PELTOR;
|
HEARING_PROTECTION_PELTOR;
|
||||||
}; // Defender and Assasin Helmet inherit.
|
}; // Defender and Assassin Helmet inherit.
|
||||||
|
|
||||||
class H_HelmetO_ViperSP_hex_f: H_HelmetB {
|
class H_HelmetO_ViperSP_hex_f: H_HelmetB {
|
||||||
HEARING_PROTECTION_PELTOR;
|
HEARING_PROTECTION_PELTOR;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
PREP(addEarPlugs);
|
PREP(addEarPlugs);
|
||||||
PREP(earRinging);
|
PREP(earRinging);
|
||||||
PREP(explosionNear);
|
PREP(explosionNear);
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
["CBA_settingsInitialized", {
|
["CBA_settingsInitialized", {
|
||||||
TRACE_1("settingInit - server",GVAR(EnableCombatDeafness));
|
TRACE_1("settingInit - server",GVAR(enableCombatDeafness));
|
||||||
|
|
||||||
// Only install event handler if combat deafness is enabled
|
// Only install event handler if combat deafness is enabled
|
||||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
if (!GVAR(enableCombatDeafness)) exitWith {};
|
||||||
|
|
||||||
["CAManBase", "Init", LINKFUNC(addEarPlugs), true, [], true] call CBA_fnc_addClassEventHandler;
|
["CAManBase", "Init", LINKFUNC(addEarPlugs), true, [], true] call CBA_fnc_addClassEventHandler;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
@ -26,18 +27,20 @@ GVAR(volumeAttenuation) = 1;
|
|||||||
GVAR(lastPlayerVehicle) = objNull;
|
GVAR(lastPlayerVehicle) = objNull;
|
||||||
|
|
||||||
["CBA_settingsInitialized", {
|
["CBA_settingsInitialized", {
|
||||||
TRACE_1("settingInit",GVAR(EnableCombatDeafness));
|
TRACE_1("settingInit",GVAR(enableCombatDeafness));
|
||||||
|
|
||||||
// Only run PFEH and install event handlers if combat deafness is enabled
|
// Only run PFEH and install event handlers if combat deafness is enabled
|
||||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
if (!GVAR(enableCombatDeafness)) exitWith {};
|
||||||
|
|
||||||
// Spawn volume updating process
|
// Spawn volume updating process
|
||||||
[LINKFUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler;
|
[LINKFUNC(updateVolume), 1, false] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
[QGVAR(updateVolume), LINKFUNC(updateVolume)] call CBA_fnc_addEventHandler;
|
[QGVAR(updateVolume), LINKFUNC(updateVolume)] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
// Update veh attunation when player veh changes
|
// Update veh attunation when player veh changes
|
||||||
["vehicle", {
|
["vehicle", {
|
||||||
params ["_player", "_vehicle"];
|
params ["_player", "_vehicle"];
|
||||||
|
|
||||||
TRACE_2("vehicle change",_player,_vehicle);
|
TRACE_2("vehicle change",_player,_vehicle);
|
||||||
_this call FUNC(updatePlayerVehAttenuation);
|
_this call FUNC(updatePlayerVehAttenuation);
|
||||||
|
|
||||||
@ -48,6 +51,7 @@ GVAR(lastPlayerVehicle) = objNull;
|
|||||||
GVAR(lastPlayerVehicle) = objNull;
|
GVAR(lastPlayerVehicle) = objNull;
|
||||||
TRACE_2("removed veh eh",_firedEH,GVAR(lastPlayerVehicle));
|
TRACE_2("removed veh eh",_firedEH,GVAR(lastPlayerVehicle));
|
||||||
};
|
};
|
||||||
|
|
||||||
if ((!isNull _vehicle) && {_player != _vehicle}) then {
|
if ((!isNull _vehicle) && {_player != _vehicle}) then {
|
||||||
private _firedEH = _vehicle addEventHandler ["FiredNear", {call FUNC(firedNear)}];
|
private _firedEH = _vehicle addEventHandler ["FiredNear", {call FUNC(firedNear)}];
|
||||||
_vehicle setVariable [QGVAR(firedEH), _firedEH];
|
_vehicle setVariable [QGVAR(firedEH), _firedEH];
|
||||||
@ -55,8 +59,8 @@ GVAR(lastPlayerVehicle) = objNull;
|
|||||||
TRACE_2("added veh eh",_firedEH,GVAR(lastPlayerVehicle));
|
TRACE_2("added veh eh",_firedEH,GVAR(lastPlayerVehicle));
|
||||||
};
|
};
|
||||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
["turret", LINKFUNC(updatePlayerVehAttenuation), false] call CBA_fnc_addPlayerEventHandler;
|
|
||||||
|
|
||||||
|
["turret", LINKFUNC(updatePlayerVehAttenuation), false] call CBA_fnc_addPlayerEventHandler;
|
||||||
|
|
||||||
// Reset deafness on respawn (or remote control player switch)
|
// Reset deafness on respawn (or remote control player switch)
|
||||||
["unit", {
|
["unit", {
|
||||||
@ -67,9 +71,11 @@ GVAR(lastPlayerVehicle) = objNull;
|
|||||||
private _firedEH = _oldPlayer getVariable [QGVAR(firedEH), -1];
|
private _firedEH = _oldPlayer getVariable [QGVAR(firedEH), -1];
|
||||||
_oldPlayer removeEventHandler ["FiredNear", _firedEH];
|
_oldPlayer removeEventHandler ["FiredNear", _firedEH];
|
||||||
_oldPlayer setVariable [QGVAR(firedEH), nil];
|
_oldPlayer setVariable [QGVAR(firedEH), nil];
|
||||||
|
|
||||||
private _explosionEH = _oldPlayer getVariable [QGVAR(explosionEH), -1];
|
private _explosionEH = _oldPlayer getVariable [QGVAR(explosionEH), -1];
|
||||||
_oldPlayer removeEventHandler ["Explosion", _explosionEH];
|
_oldPlayer removeEventHandler ["Explosion", _explosionEH];
|
||||||
_oldPlayer setVariable [QGVAR(explosionEH), nil];
|
_oldPlayer setVariable [QGVAR(explosionEH), nil];
|
||||||
|
|
||||||
TRACE_3("removed unit eh",_oldPlayer,_firedEH,_explosionEH);
|
TRACE_3("removed unit eh",_oldPlayer,_firedEH,_explosionEH);
|
||||||
};
|
};
|
||||||
// Don't add a new EH if the unit respawned
|
// Don't add a new EH if the unit respawned
|
||||||
@ -77,17 +83,21 @@ GVAR(lastPlayerVehicle) = objNull;
|
|||||||
if ((getNumber (configOf _player >> "isPlayableLogic")) == 1) exitWith {
|
if ((getNumber (configOf _player >> "isPlayableLogic")) == 1) exitWith {
|
||||||
TRACE_1("skipping playable logic",typeOf _player); // VirtualMan_F (placeable logic zeus / spectator)
|
TRACE_1("skipping playable logic",typeOf _player); // VirtualMan_F (placeable logic zeus / spectator)
|
||||||
};
|
};
|
||||||
|
|
||||||
private _firedEH = _player addEventHandler ["FiredNear", {call FUNC(firedNear)}];
|
private _firedEH = _player addEventHandler ["FiredNear", {call FUNC(firedNear)}];
|
||||||
_player setVariable [QGVAR(firedEH), _firedEH];
|
_player setVariable [QGVAR(firedEH), _firedEH];
|
||||||
|
|
||||||
private _explosionEH = _player addEventHandler ["Explosion", {call FUNC(explosionNear)}];
|
private _explosionEH = _player addEventHandler ["Explosion", {call FUNC(explosionNear)}];
|
||||||
_player setVariable [QGVAR(explosionEH), _explosionEH];
|
_player setVariable [QGVAR(explosionEH), _explosionEH];
|
||||||
|
|
||||||
TRACE_3("added unit eh",_player,_firedEH,_explosionEH);
|
TRACE_3("added unit eh",_player,_firedEH,_explosionEH);
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(deafnessDV) = 0;
|
GVAR(deafnessDV) = 0;
|
||||||
GVAR(deafnessPrior) = 0;
|
GVAR(deafnessPrior) = 0;
|
||||||
GVAR(time3) = 0;
|
GVAR(time3) = 0;
|
||||||
[] call FUNC(updateHearingProtection);
|
|
||||||
|
call FUNC(updateHearingProtection);
|
||||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||||
|
|
||||||
// Update protection on possible helmet change
|
// Update protection on possible helmet change
|
||||||
|
@ -10,18 +10,20 @@ PREP_RECOMPILE_END;
|
|||||||
|
|
||||||
["CBA_loadoutSet", {
|
["CBA_loadoutSet", {
|
||||||
params ["_unit", "_loadout", "_extendedInfo"];
|
params ["_unit", "_loadout", "_extendedInfo"];
|
||||||
|
|
||||||
if (_extendedInfo getOrDefault ["ace_earplugs", false]) then {
|
if (_extendedInfo getOrDefault ["ace_earplugs", false]) then {
|
||||||
_unit setVariable ["ACE_hasEarPlugsIn", true, true];
|
_unit setVariable ["ACE_hasEarPlugsIn", true, true];
|
||||||
|
|
||||||
// Only force update volume if unit is a player (including remote controlled)
|
// Only force update volume if unit is a player (including remote controlled)
|
||||||
if (_unit call EFUNC(common,isPlayer)) then {
|
if (_unit call EFUNC(common,isPlayer)) then {
|
||||||
[QGVAR(updateVolume), [[true]], _unit] call CBA_fnc_targetEvent;
|
[QGVAR(updateVolume), true, _unit] call CBA_fnc_targetEvent;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
["CBA_loadoutGet", {
|
["CBA_loadoutGet", {
|
||||||
params ["_unit", "_loadout", "_extendedInfo"];
|
params ["_unit", "_loadout", "_extendedInfo"];
|
||||||
|
|
||||||
if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
||||||
_extendedInfo set ["ace_earplugs", true]
|
_extendedInfo set ["ace_earplugs", true]
|
||||||
};
|
};
|
||||||
|
@ -1,24 +1,25 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: KoffeinFlummi, commy2, Rocko, Rommel, Ruthberg
|
* Author: KoffeinFlummi, commy2, Rocko, Rommel, Ruthberg
|
||||||
* Handle new sound souce near ace_player and apply hearing damage
|
* Handle new sound souce near ace_player and apply hearing damage.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: strength of ear ringing <NUMBER>
|
* 0: Strength of ear ringing <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [_strength] call ace_hearing_fnc_earRinging
|
* 10 call ace_hearing_fnc_earRinging
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_strength"];
|
params ["_strength"];
|
||||||
|
|
||||||
if (_strength < 0.05) exitWith {};
|
if (_strength < 0.05) exitWith {};
|
||||||
if (!isNull curatorCamera) exitWith {};
|
if (!isNull curatorCamera) exitWith {};
|
||||||
if ((!GVAR(enabledForZeusUnits)) && {player != ACE_player}) exitWith {};
|
if (!GVAR(enabledForZeusUnits) && {player != ACE_player}) exitWith {};
|
||||||
|
|
||||||
TRACE_2("adding",_strength * GVAR(damageCoefficent),GVAR(deafnessDV));
|
TRACE_2("adding",_strength * GVAR(damageCoefficent),GVAR(deafnessDV));
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
* Handles deafness due to explosions going off near the player.
|
* Handles deafness due to explosions going off near the player.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: vehicle - Object the event handler is assigned to (player) <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: damage - Damage inflicted to the object <NUMBER>
|
* 1: Damage inflicted to the unit <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
@ -22,5 +22,5 @@ TRACE_2("explosion near player",_unit,_damage);
|
|||||||
|
|
||||||
private _strength = (0 max _damage) * 30;
|
private _strength = (0 max _damage) * 30;
|
||||||
|
|
||||||
// Call inmediately, as it will get pick up later anyway by the update thread
|
// Call immediately, as it will get picked up later by the update thread anyway
|
||||||
[_strength] call FUNC(earRinging);
|
_strength call FUNC(earRinging);
|
||||||
|
@ -59,5 +59,5 @@ private _strength = _vehAttenuation * (_loudness - (_loudness / 50 * _distance))
|
|||||||
|
|
||||||
TRACE_1("result",_strength);
|
TRACE_1("result",_strength);
|
||||||
|
|
||||||
// Call inmediately, as it will get pick up later anyway by the update thread
|
// Call immediately, as it will get picked up later by the update thread anyway
|
||||||
[_strength] call FUNC(earRinging);
|
_strength call FUNC(earRinging);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Reset earplugs on respawn, and then re-add if appropriate
|
* Reset earplugs on respawn, and then re-add if appropriate.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
@ -10,29 +10,29 @@
|
|||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player] call ACE_hearing_fnc_handleRespawn;
|
* player call ace_hearing_fnc_handleRespawn;
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Do not add or remove earplugs if gear should be preserved
|
||||||
|
if (missionNamespace getVariable [QEGVAR(respawn,savePreDeathGear), false]) exitWith {};
|
||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
TRACE_2("params",_unit,typeOf _unit);
|
TRACE_2("params",_unit,typeOf _unit);
|
||||||
|
|
||||||
if (!local _unit) exitWith {}; //XEH should only be called on local units
|
if (!local _unit) exitWith {}; // XEH should only be called on local units
|
||||||
|
|
||||||
//Do not add or remove earplugs if gear should be preserved
|
|
||||||
if (missionNamespace getVariable [QEGVAR(respawn,SavePreDeathGear), false]) exitWith {};
|
|
||||||
|
|
||||||
private _respawn = [0] call BIS_fnc_missionRespawnType;
|
private _respawn = [0] call BIS_fnc_missionRespawnType;
|
||||||
|
|
||||||
//if respawn is not Group or side:
|
// If respawn is not group or side:
|
||||||
if (_respawn <= 3) then {
|
if (_respawn <= 3) then {
|
||||||
//Remove earplugs if they have them:
|
// Remove earplugs if they have them:
|
||||||
if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
||||||
TRACE_1("had EarPlugs in - removing",_unit);
|
TRACE_1("had EarPlugs in - removing",_unit);
|
||||||
_unit setVariable ["ACE_hasEarPlugsin", false, true];
|
_unit setVariable ["ACE_hasEarPlugsin", false, true];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//Re-add if they need them:
|
// Re-add if they need them
|
||||||
[_unit] call FUNC(addEarPlugs);
|
_unit call FUNC(addEarPlugs);
|
||||||
|
@ -4,16 +4,17 @@
|
|||||||
* Check if the unit has earplugs put in.
|
* Check if the unit has earplugs put in.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit (player) <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Have Earplugs in <BOOL>
|
* Has Earplugs in <BOOL>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [ace_player] call ace_hearing_fnc_hasEarPlugsIn
|
* player call ace_hearing_fnc_hasEarPlugsIn
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
_unit getVariable ["ACE_hasEarPlugsin", false]
|
_unit getVariable ["ACE_hasEarPlugsin", false]
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player] call ACE_hearing_fnc_moduleHearing
|
* player call ace_hearing_fnc_moduleHearing
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -23,6 +23,8 @@ params ["_logic"];
|
|||||||
if ((_logic getVariable "DisableEarRinging") != -1) then {
|
if ((_logic getVariable "DisableEarRinging") != -1) then {
|
||||||
[_logic, QGVAR(DisableEarRinging), "DisableEarRinging"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(DisableEarRinging), "DisableEarRinging"] call EFUNC(common,readSettingFromModule);
|
||||||
};
|
};
|
||||||
|
|
||||||
[_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule);
|
||||||
[_logic, QGVAR(autoAddEarplugsToUnits), "autoAddEarplugsToUnits"] call EFUNC(common,readSettingFromModule);
|
[_logic, QGVAR(autoAddEarplugsToUnits), "autoAddEarplugsToUnits"] call EFUNC(common,readSettingFromModule);
|
||||||
|
|
||||||
INFO("Hearing Module Initialized.");
|
INFO("Hearing Module Initialized.");
|
||||||
|
@ -1,38 +1,35 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Hope Johnson and commy2
|
* Author: Hope Johnson, commy2
|
||||||
* Puts in earplugs.
|
* Puts in earplugs.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit (player) <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: Display hint <BOOL> (default: false)
|
* 1: Display hint <BOOL> (default: false)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [ace_player, false] call ace_hearing_fnc_putInEarplugs
|
* [player, false] call ace_hearing_fnc_putInEarplugs
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_player", ["_displayHint", false, [false]]];
|
if (!GVAR(enableCombatDeafness)) exitWith {};
|
||||||
|
|
||||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
params ["_unit", ["_displayHint", false]];
|
||||||
|
|
||||||
// Plugs in inventory, putting them in
|
// Plugs in inventory, putting them in
|
||||||
_player removeItem "ACE_EarPlugs";
|
_unit removeItem "ACE_EarPlugs";
|
||||||
|
|
||||||
_player setVariable ["ACE_hasEarPlugsIn", true, true];
|
_unit setVariable ["ACE_hasEarPlugsIn", true, true];
|
||||||
|
|
||||||
if (_displayHint) then {
|
if (_displayHint) then {
|
||||||
[localize LSTRING(EarPlugs_Are_On)] call EFUNC(common,displayTextStructured);
|
[LLSTRING(EarPlugs_Are_On)] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Force an immediate fast volume update:
|
// Force an immediate volume update
|
||||||
[[true]] call FUNC(updateVolume);
|
true call FUNC(updateVolume);
|
||||||
|
|
||||||
// No Earplugs in inventory, telling user
|
call FUNC(updateHearingProtection);
|
||||||
//[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured);
|
|
||||||
|
|
||||||
[] call FUNC(updateHearingProtection);
|
|
||||||
|
@ -1,39 +1,40 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: Hope Johnson and commy2
|
* Author: Hope Johnson, commy2
|
||||||
* Takes out earplugs.
|
* Takes out earplugs.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit (player) <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
* 1: Display hint <BOOL> (default false)
|
* 1: Display hint <BOOL> (default: false)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [ace_player, false] call ace_hearing_fnc_removeEarplugs
|
* [player, false] call ace_hearing_fnc_removeEarplugs
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_player", ["_displayHint", false, [false]]];
|
if (!GVAR(enableCombatDeafness)) exitWith {};
|
||||||
|
|
||||||
if (!GVAR(EnableCombatDeafness)) exitWith {};
|
params ["_unit", ["_displayHint", false]];
|
||||||
|
|
||||||
if !([_player, "ACE_EarPlugs"] call CBA_fnc_canAddItem) exitWith { // inventory full
|
// Inventory full
|
||||||
|
if !([_unit, "ACE_EarPlugs"] call CBA_fnc_canAddItem) exitWith {
|
||||||
[LELSTRING(common,Inventory_Full)] call EFUNC(common,displayTextStructured);
|
[LELSTRING(common,Inventory_Full)] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Plugs already in and removing them.
|
// Plugs already in and removing them.
|
||||||
_player addItem "ACE_EarPlugs";
|
_unit addItem "ACE_EarPlugs";
|
||||||
|
|
||||||
_player setVariable ["ACE_hasEarPlugsIn", false, true];
|
_unit setVariable ["ACE_hasEarPlugsIn", false, true];
|
||||||
|
|
||||||
if (_displayHint) then {
|
if (_displayHint) then {
|
||||||
[localize LSTRING(EarPlugs_Are_Off)] call EFUNC(common,displayTextStructured);
|
[LLSTRING(EarPlugs_Are_Off)] call EFUNC(common,displayTextStructured);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Force an immediate fast volume update:
|
// Force an immediate volume update
|
||||||
[[true]] call FUNC(updateVolume);
|
true call FUNC(updateVolume);
|
||||||
|
|
||||||
[] call FUNC(updateHearingProtection);
|
call FUNC(updateHearingProtection);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Updates the hearing protection and volume attenuation for player on earbuds/helmet change
|
* Updates the hearing protection and volume attenuation for player on earbuds/helmet change.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* None
|
* None
|
||||||
@ -10,12 +10,12 @@
|
|||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [] call ace_hearing_fnc_updateHearingProtection
|
* call ace_hearing_fnc_updateHearingProtection
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
TRACE_1("params",_this);
|
LOG("updateHearingProtection");
|
||||||
|
|
||||||
if (isNull ACE_player) exitWith {
|
if (isNull ACE_player) exitWith {
|
||||||
GVAR(damageCoefficent) = 0;
|
GVAR(damageCoefficent) = 0;
|
||||||
@ -23,22 +23,32 @@ if (isNull ACE_player) exitWith {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Handle Earplugs
|
// Handle Earplugs
|
||||||
private _hasEarPlugsIn = [ACE_player] call FUNC(hasEarPlugsIn);
|
private _hasEarPlugsIn = ACE_player call FUNC(hasEarPlugsIn);
|
||||||
GVAR(damageCoefficent) = [1, 0.25] select _hasEarPlugsIn;
|
GVAR(damageCoefficent) = [1, 0.25] select _hasEarPlugsIn;
|
||||||
GVAR(volumeAttenuation) = [1, GVAR(EarplugsVolume)] select _hasEarPlugsIn;
|
GVAR(volumeAttenuation) = [1, GVAR(earplugsVolume)] select _hasEarPlugsIn;
|
||||||
|
|
||||||
// Handle Headgear
|
// Handle Headgear
|
||||||
if (headgear ACE_player != "") then {
|
private _headgear = headgear ACE_player;
|
||||||
private _protection = getNumber (configFile >> "CfgWeapons" >> headgear ACE_player >> QGVAR(protection)) min 1;
|
|
||||||
|
if (_headgear != "") then {
|
||||||
|
private _heargearConfig = configFile >> "CfgWeapons" >> _headgear;
|
||||||
|
|
||||||
|
private _protection = getNumber (_heargearConfig >> QGVAR(protection)) min 1;
|
||||||
GVAR(damageCoefficent) = GVAR(damageCoefficent) * (1 - _protection);
|
GVAR(damageCoefficent) = GVAR(damageCoefficent) * (1 - _protection);
|
||||||
private _attenuation = getNumber (configFile >> "CfgWeapons" >> headgear ACE_player >> QGVAR(lowerVolume)) min 1;
|
|
||||||
|
private _attenuation = getNumber (_heargearConfig >> QGVAR(lowerVolume)) min 1;
|
||||||
GVAR(volumeAttenuation) = GVAR(volumeAttenuation) * (1 - _attenuation);
|
GVAR(volumeAttenuation) = GVAR(volumeAttenuation) * (1 - _attenuation);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Handle Goggles
|
// Handle Goggles
|
||||||
if (goggles ACE_player != "") then {
|
private _goggles = goggles ACE_player;
|
||||||
private _protection = getNumber (configFile >> "CfgGlasses" >> goggles ACE_player >> QGVAR(protection)) min 1;
|
|
||||||
|
if (_goggles != "") then {
|
||||||
|
private _gogglesConfig = configFile >> "CfgGlasses" >> _goggles;
|
||||||
|
|
||||||
|
private _protection = getNumber (_gogglesConfig >> QGVAR(protection)) min 1;
|
||||||
GVAR(damageCoefficent) = GVAR(damageCoefficent) * (1 - _protection);
|
GVAR(damageCoefficent) = GVAR(damageCoefficent) * (1 - _protection);
|
||||||
private _attenuation = getNumber (configFile >> "CfgGlasses" >> goggles ACE_player >> QGVAR(lowerVolume)) min 1;
|
|
||||||
|
private _attenuation = getNumber (_gogglesConfig >> QGVAR(lowerVolume)) min 1;
|
||||||
GVAR(volumeAttenuation) = GVAR(volumeAttenuation) * (1 - _attenuation);
|
GVAR(volumeAttenuation) = GVAR(volumeAttenuation) * (1 - _attenuation);
|
||||||
};
|
};
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Ammount that unit can hear outside <NUMBER>
|
* Amount that unit can hear outside <NUMBER>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [] call ace_hearing_fnc_updatePlayerVehAttenuation
|
* call ace_hearing_fnc_updatePlayerVehAttenuation
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -20,12 +20,14 @@ private _vehicle = vehicle ACE_player;
|
|||||||
if (isNull _vehicle) exitWith {};
|
if (isNull _vehicle) exitWith {};
|
||||||
|
|
||||||
private _newAttenuation = 1;
|
private _newAttenuation = 1;
|
||||||
|
|
||||||
if (ACE_player != _vehicle) then {
|
if (ACE_player != _vehicle) then {
|
||||||
private _turretPath = [ACE_player] call EFUNC(common,getTurretIndex);
|
private _vehicleConfig = configOf _vehicle;
|
||||||
private _effectType = getText (configOf _vehicle >> "attenuationEffectType");
|
private _turretPath = _vehicle unitTurret ACE_player;
|
||||||
|
private _effectType = getText (_vehicleConfig >> "attenuationEffectType");
|
||||||
|
|
||||||
if (_turretPath isNotEqualTo []) then {
|
if (_turretPath isNotEqualTo []) then {
|
||||||
private _turretConfig = [(configOf _vehicle), _turretPath] call EFUNC(common,getTurretConfigPath);
|
private _turretConfig = [_vehicleConfig, _turretPath] call EFUNC(common,getTurretConfigPath);
|
||||||
|
|
||||||
if ((getNumber (_turretConfig >> "disableSoundAttenuation")) == 1) then {
|
if ((getNumber (_turretConfig >> "disableSoundAttenuation")) == 1) then {
|
||||||
_effectType = "";
|
_effectType = "";
|
||||||
@ -40,7 +42,7 @@ if (ACE_player != _vehicle) then {
|
|||||||
case (_effectType == ""): {1};
|
case (_effectType == ""): {1};
|
||||||
case (_effectType == "CarAttenuation");
|
case (_effectType == "CarAttenuation");
|
||||||
case (_effectType == "RHS_CarAttenuation"): { // Increase protection for armored cars
|
case (_effectType == "RHS_CarAttenuation"): { // Increase protection for armored cars
|
||||||
private _armor = getNumber (configOf _vehicle >> "HitPoints" >> "HitBody" >> "armor");
|
private _armor = getNumber (_vehicleConfig >> "HitPoints" >> "HitBody" >> "armor");
|
||||||
linearConversion [2, 8, _armor, 0.5, 0.3, true];};
|
linearConversion [2, 8, _armor, 0.5, 0.3, true];};
|
||||||
case (_effectType == "OpenCarAttenuation"): {1};
|
case (_effectType == "OpenCarAttenuation"): {1};
|
||||||
case (_effectType == "TankAttenuation"): {0.1};
|
case (_effectType == "TankAttenuation"): {0.1};
|
||||||
|
@ -1,55 +1,60 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: commy2 and esteldunedain and Ruthberg
|
* Author: commy2, esteldunedain, Ruthberg
|
||||||
* Updates and applies the current deafness. Called every 1 sec from a PFEH.
|
* Updates and applies the current deafness. Called every 1 sec from a PFEH.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Args <ARRAY>
|
* 0: Update volume only (skip ringing/recovery) <BOOL> (default: false)
|
||||||
* - 0: Just update volume (skip ringing/recovery) <BOOL> (default: false)
|
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [] call ace_hearing_fnc_updateVolume
|
* call ace_hearing_fnc_updateVolume
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!alive ACE_player) exitWith {
|
if (!alive ACE_player) exitWith {
|
||||||
if (missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {};
|
if (missionNamespace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {};
|
||||||
|
|
||||||
TRACE_1("dead - removing hearing effects",ACE_player);
|
TRACE_1("dead - removing hearing effects",ACE_player);
|
||||||
|
|
||||||
[QUOTE(ADDON), 1, true] call EFUNC(common,setHearingCapability);
|
[QUOTE(ADDON), 1, true] call EFUNC(common,setHearingCapability);
|
||||||
};
|
};
|
||||||
|
|
||||||
(_this select 0) params [["_justUpdateVolume", false]];
|
params [["_updateVolumeOnly", false]];
|
||||||
|
|
||||||
GVAR(deafnessDV) = (GVAR(deafnessDV) min 20) max 0;
|
GVAR(deafnessDV) = (GVAR(deafnessDV) min 20) max 0;
|
||||||
GVAR(volume) = (1 - (GVAR(deafnessDV) / 20)) max 0.05;
|
GVAR(volume) = (1 - (GVAR(deafnessDV) / 20)) max 0.05;
|
||||||
|
|
||||||
TRACE_3("",GVAR(volume),GVAR(deafnessDV),GVAR(deafnessDV) - GVAR(deafnessPrior));
|
TRACE_3("",GVAR(volume),GVAR(deafnessDV),GVAR(deafnessDV) - GVAR(deafnessPrior));
|
||||||
|
|
||||||
if (!_justUpdateVolume) then {
|
if (!_updateVolumeOnly) then {
|
||||||
// Ring if we got a big increase in the last second or enough accumulated damage
|
// Ring if we got a big increase in the last second or enough accumulated damage
|
||||||
if (GVAR(deafnessDV) - GVAR(deafnessPrior) > 1 ||
|
if (GVAR(deafnessDV) - GVAR(deafnessPrior) > 1 ||
|
||||||
GVAR(deafnessDV) > 10) then {
|
GVAR(deafnessDV) > 10) then {
|
||||||
|
|
||||||
if (CBA_missionTime - GVAR(time3) < 3) exitWith {};
|
if (CBA_missionTime - GVAR(time3) < 3) exitWith {};
|
||||||
|
|
||||||
GVAR(time3) = CBA_missionTime;
|
GVAR(time3) = CBA_missionTime;
|
||||||
|
|
||||||
if (!isGameFocused) exitWith {};
|
if (!isGameFocused) exitWith {};
|
||||||
|
|
||||||
if (GVAR(deafnessDV) > 19.75) then {
|
if (GVAR(deafnessDV) > 19.75) then {
|
||||||
playSound (["ACE_Combat_Deafness_Heavy", "ACE_Combat_Deafness_Heavy_NoRing"] select GVAR(DisableEarRinging));
|
playSound (["ACE_Combat_Deafness_Heavy", "ACE_Combat_Deafness_Heavy_NoRing"] select GVAR(disableEarRinging));
|
||||||
} else {
|
} else {
|
||||||
playSound (["ACE_Combat_Deafness_Medium", "ACE_Combat_Deafness_Medium_NoRing"] select GVAR(DisableEarRinging));
|
playSound (["ACE_Combat_Deafness_Medium", "ACE_Combat_Deafness_Medium_NoRing"] select GVAR(disableEarRinging));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(deafnessPrior) = GVAR(deafnessDV);
|
GVAR(deafnessPrior) = GVAR(deafnessDV);
|
||||||
|
|
||||||
// Hearing takes longer to return to normal after it hits rock bottom
|
// Hearing takes longer to return to normal after it hits rock bottom
|
||||||
GVAR(deafnessDV) = (GVAR(deafnessDV) - (0.5 * (GVAR(volume) max 0.1))) max 0;
|
GVAR(deafnessDV) = (GVAR(deafnessDV) - (0.5 * (GVAR(volume) max 0.1))) max 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {};
|
if (missionNamespace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {};
|
||||||
|
|
||||||
private _volume = GVAR(volume);
|
private _volume = GVAR(volume);
|
||||||
|
|
||||||
@ -57,8 +62,8 @@ private _volume = GVAR(volume);
|
|||||||
_volume = _volume min GVAR(volumeAttenuation);
|
_volume = _volume min GVAR(volumeAttenuation);
|
||||||
|
|
||||||
// Reduce volume if player is unconscious
|
// Reduce volume if player is unconscious
|
||||||
if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
|
if (lifeState ACE_player == "INCAPACITATED") then {
|
||||||
_volume = _volume min GVAR(UnconsciousnessVolume);
|
_volume = _volume min GVAR(unconsciousnessVolume);
|
||||||
};
|
};
|
||||||
|
|
||||||
[QUOTE(ADDON), _volume, true] call EFUNC(common,setHearingCapability);
|
[QUOTE(ADDON), _volume, true] call EFUNC(common,setHearingCapability);
|
||||||
|
@ -2,14 +2,17 @@
|
|||||||
// Conditions: specific
|
// Conditions: specific
|
||||||
if !([ACE_player, objNull, ["isNotSwimming", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
if !([ACE_player, objNull, ["isNotSwimming", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||||
|
|
||||||
if (GVAR(EnableCombatDeafness) && {!([ACE_player] call FUNC(hasEarPlugsIn))} && {[ACE_player, "ACE_EarPlugs"] call EFUNC(common,hasItem)}) exitWith {
|
if (GVAR(enableCombatDeafness) && {!(ACE_player call FUNC(hasEarPlugsIn))} && {[ACE_player, "ACE_EarPlugs"] call EFUNC(common,hasItem)}) exitWith {
|
||||||
[ACE_player, true] call FUNC(putInEarPlugs);
|
[ACE_player, true] call FUNC(putInEarPlugs);
|
||||||
true
|
|
||||||
};
|
true // return
|
||||||
if (GVAR(EnableCombatDeafness) && {[ACE_player] call FUNC(hasEarPlugsIn)}) exitWith {
|
|
||||||
[ACE_player, true] call FUNC(removeEarPlugs);
|
|
||||||
true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
false
|
if (GVAR(enableCombatDeafness) && {ACE_player call FUNC(hasEarPlugsIn)}) exitWith {
|
||||||
|
[ACE_player, true] call FUNC(removeEarPlugs);
|
||||||
|
|
||||||
|
true // return
|
||||||
|
};
|
||||||
|
|
||||||
|
false // return
|
||||||
}] call CBA_fnc_addKeybind; // UNBOUND
|
}] call CBA_fnc_addKeybind; // UNBOUND
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)];
|
private _category = format ["ACE %1", LLSTRING(Module_DisplayName)];
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(enableCombatDeafness), "CHECKBOX",
|
QGVAR(enableCombatDeafness),
|
||||||
|
"CHECKBOX",
|
||||||
[LSTRING(EnableCombatDeafness_DisplayName), LSTRING(EnableCombatDeafness_Description)],
|
[LSTRING(EnableCombatDeafness_DisplayName), LSTRING(EnableCombatDeafness_Description)],
|
||||||
_category,
|
_category,
|
||||||
true,
|
true,
|
||||||
@ -11,7 +12,8 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)];
|
|||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(earplugsVolume), "SLIDER",
|
QGVAR(earplugsVolume),
|
||||||
|
"SLIDER",
|
||||||
[LSTRING(earplugsVolume_DisplayName), LSTRING(earplugsVolume_Description)],
|
[LSTRING(earplugsVolume_DisplayName), LSTRING(earplugsVolume_Description)],
|
||||||
_category,
|
_category,
|
||||||
[0, 1, 0.5, 1],
|
[0, 1, 0.5, 1],
|
||||||
@ -19,7 +21,8 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)];
|
|||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(unconsciousnessVolume), "SLIDER",
|
QGVAR(unconsciousnessVolume),
|
||||||
|
"SLIDER",
|
||||||
[LSTRING(unconsciousnessVolume_DisplayName), LSTRING(unconsciousnessVolume_Description)],
|
[LSTRING(unconsciousnessVolume_DisplayName), LSTRING(unconsciousnessVolume_Description)],
|
||||||
_category,
|
_category,
|
||||||
[0, 1, 0.4, 1],
|
[0, 1, 0.4, 1],
|
||||||
@ -27,15 +30,16 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)];
|
|||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(disableEarRinging), "CHECKBOX",
|
QGVAR(disableEarRinging),
|
||||||
|
"CHECKBOX",
|
||||||
[LSTRING(DisableEarRinging_DisplayName), LSTRING(DisableEarRinging_Description)],
|
[LSTRING(DisableEarRinging_DisplayName), LSTRING(DisableEarRinging_Description)],
|
||||||
_category,
|
_category,
|
||||||
false,
|
false
|
||||||
0
|
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(enabledForZeusUnits), "CHECKBOX",
|
QGVAR(enabledForZeusUnits),
|
||||||
|
"CHECKBOX",
|
||||||
[LSTRING(enabledForZeusUnits_DisplayName), LSTRING(enabledForZeusUnits_Description)],
|
[LSTRING(enabledForZeusUnits_DisplayName), LSTRING(enabledForZeusUnits_Description)],
|
||||||
_category,
|
_category,
|
||||||
true,
|
true,
|
||||||
@ -43,7 +47,8 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)];
|
|||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
QGVAR(autoAddEarplugsToUnits), "LIST",
|
QGVAR(autoAddEarplugsToUnits),
|
||||||
|
"LIST",
|
||||||
[LSTRING(autoAddEarplugsToUnits_DisplayName), LSTRING(autoAddEarplugsToUnits_Description)],
|
[LSTRING(autoAddEarplugsToUnits_DisplayName), LSTRING(autoAddEarplugsToUnits_Description)],
|
||||||
_category,
|
_category,
|
||||||
[[0, 1, 2], [ELSTRING(common,Disabled), LSTRING(heavyWeaponUnits), ELSTRING(common,Enabled)], 1],
|
[[0, 1, 2], [ELSTRING(common,Disabled), LSTRING(heavyWeaponUnits), ELSTRING(common,Enabled)], 1],
|
||||||
|
Loading…
Reference in New Issue
Block a user