mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
hearing: replaced spawn by PFH
This commit is contained in:
parent
319e772832
commit
5e4a78a1bc
@ -1,56 +1,7 @@
|
|||||||
// by commy2 and CAA-Picard
|
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
#define STRENGHTODEAFNESS 3
|
|
||||||
#define MAXDEAFNESS 1.1
|
|
||||||
|
|
||||||
GVAR(currentDeafness) = 0;
|
GVAR(currentDeafness) = 0;
|
||||||
GVAR(newStrength) = 0;
|
GVAR(newStrength) = 0;
|
||||||
|
|
||||||
// Spawn volume updating process
|
// Spawn volume updating process
|
||||||
0 spawn {
|
[FUNC(updateVolume), 0.1, [] ] call CBA_fnc_addPerFrameHandler;
|
||||||
while {true} do {
|
|
||||||
|
|
||||||
// Check if new noises increase deafness
|
|
||||||
if (GVAR(newStrength) * STRENGHTODEAFNESS > GVAR(currentDeafness)) then {
|
|
||||||
GVAR(currentDeafness) = GVAR(newStrength) * STRENGHTODEAFNESS min MAXDEAFNESS;
|
|
||||||
};
|
|
||||||
GVAR(newStrength) = 0;
|
|
||||||
|
|
||||||
// Recover rate is slower if deafness is severe
|
|
||||||
_recoverRate = 0.01;
|
|
||||||
if (GVAR(currentDeafness) > 0.7) then {
|
|
||||||
_recoverRate = 0.005;
|
|
||||||
if (GVAR(currentDeafness) > 0.9) then {
|
|
||||||
_recoverRate = 0.002;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// Deafness recovers with time
|
|
||||||
GVAR(currentDeafness) = GVAR(currentDeafness) - _recoverRate max 0;
|
|
||||||
|
|
||||||
// needed until Bohemia fixes playSound to actually use the second argument
|
|
||||||
_volume = (1 - GVAR(currentDeafness) max 0)^2 max 0.04;
|
|
||||||
|
|
||||||
// Earplugs reduce hearing 50%
|
|
||||||
if ([ACE_player] call FUNC(hasEarPlugsIn)) then {
|
|
||||||
_volume = _volume min 0.5;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Reduce volume if player is unconscious
|
|
||||||
if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
|
|
||||||
_volume = _volume min 0.4;
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!(missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false])) then {
|
|
||||||
0.1 fadeSound _volume;
|
|
||||||
0.1 fadeSpeech _volume;
|
|
||||||
ACE_player setVariable ["tf_globalVolume", _volume];
|
|
||||||
ACE_player setVariable ["acre_sys_core_globalVolume", _volume];
|
|
||||||
};
|
|
||||||
|
|
||||||
//hintSilent format ["GVAR(currentDeafness), _Volume = %1, %2", GVAR(currentDeafness), _volume];
|
|
||||||
|
|
||||||
sleep 0.1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
@ -6,4 +6,5 @@ PREP(explosionNear);
|
|||||||
PREP(firedNear);
|
PREP(firedNear);
|
||||||
PREP(hasEarPlugsIn);
|
PREP(hasEarPlugsIn);
|
||||||
PREP(putInEarPlugs);
|
PREP(putInEarPlugs);
|
||||||
PREP(removeEarPlugs);
|
PREP(removeEarPlugs);
|
||||||
|
PREP(updateVolume);
|
||||||
|
45
addons/hearing/functions/fnc_updateVolume.sqf
Normal file
45
addons/hearing/functions/fnc_updateVolume.sqf
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// by commy2 and CAA-Picard
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#define STRENGHTODEAFNESS 3
|
||||||
|
#define MAXDEAFNESS 1.1
|
||||||
|
|
||||||
|
// Check if new noises increase deafness
|
||||||
|
if (GVAR(newStrength) * STRENGHTODEAFNESS > GVAR(currentDeafness)) then {
|
||||||
|
GVAR(currentDeafness) = GVAR(newStrength) * STRENGHTODEAFNESS min MAXDEAFNESS;
|
||||||
|
};
|
||||||
|
GVAR(newStrength) = 0;
|
||||||
|
|
||||||
|
// Recover rate is slower if deafness is severe
|
||||||
|
_recoverRate = 0.01;
|
||||||
|
if (GVAR(currentDeafness) > 0.7) then {
|
||||||
|
_recoverRate = 0.005;
|
||||||
|
if (GVAR(currentDeafness) > 0.9) then {
|
||||||
|
_recoverRate = 0.002;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Deafness recovers with time
|
||||||
|
GVAR(currentDeafness) = GVAR(currentDeafness) - _recoverRate max 0;
|
||||||
|
|
||||||
|
// needed until Bohemia fixes playSound to actually use the second argument
|
||||||
|
_volume = (1 - GVAR(currentDeafness) max 0)^2 max 0.04;
|
||||||
|
|
||||||
|
// Earplugs reduce hearing 50%
|
||||||
|
if ([ACE_player] call FUNC(hasEarPlugsIn)) then {
|
||||||
|
_volume = _volume min 0.5;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Reduce volume if player is unconscious
|
||||||
|
if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
|
||||||
|
_volume = _volume min 0.4;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!(missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false])) then {
|
||||||
|
0.1 fadeSound _volume;
|
||||||
|
0.1 fadeSpeech _volume;
|
||||||
|
ACE_player setVariable ["tf_globalVolume", _volume];
|
||||||
|
ACE_player setVariable ["acre_sys_core_globalVolume", _volume];
|
||||||
|
};
|
||||||
|
|
||||||
|
//hintSilent format ["GVAR(currentDeafness), _Volume = %1, %2", GVAR(currentDeafness), _volume];
|
Loading…
Reference in New Issue
Block a user