mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Captives - Disallow ACRE/TFAR radio usage on surrender/handcuff (#8388)
* Block radio on captive/surrendered/unconscious via status effect * missing semicolon * Don't broadcast setVar if radio addon doesn't exist Co-authored-by: PabstMirror <pabstmirror@gmail.com>
This commit is contained in:
@ -42,6 +42,7 @@ if ((_unit getVariable [QGVAR(isHandcuffed), false]) isEqualTo _state) exitWith
|
|||||||
if (_state) then {
|
if (_state) then {
|
||||||
_unit setVariable [QGVAR(isHandcuffed), true, true];
|
_unit setVariable [QGVAR(isHandcuffed), true, true];
|
||||||
[_unit, "setCaptive", QGVAR(Handcuffed), true] call EFUNC(common,statusEffect_set);
|
[_unit, "setCaptive", QGVAR(Handcuffed), true] call EFUNC(common,statusEffect_set);
|
||||||
|
[_unit, "blockRadio", QGVAR(Handcuffed), true] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_unit getVariable [QGVAR(isSurrendering), false]) then { //If surrendering, stop
|
if (_unit getVariable [QGVAR(isSurrendering), false]) then { //If surrendering, stop
|
||||||
[_unit, false] call FUNC(setSurrendered);
|
[_unit, false] call FUNC(setSurrendered);
|
||||||
@ -82,6 +83,7 @@ if (_state) then {
|
|||||||
} else {
|
} else {
|
||||||
_unit setVariable [QGVAR(isHandcuffed), false, true];
|
_unit setVariable [QGVAR(isHandcuffed), false, true];
|
||||||
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
|
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
|
||||||
|
[_unit, "blockRadio", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
//remove AnimChanged EH
|
//remove AnimChanged EH
|
||||||
private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
|
private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
|
||||||
|
@ -45,6 +45,7 @@ if (_state) then {
|
|||||||
_unit setVariable [QGVAR(isSurrendering), true, true];
|
_unit setVariable [QGVAR(isSurrendering), true, true];
|
||||||
|
|
||||||
[_unit, "setCaptive", QGVAR(Surrendered), true] call EFUNC(common,statusEffect_set);
|
[_unit, "setCaptive", QGVAR(Surrendered), true] call EFUNC(common,statusEffect_set);
|
||||||
|
[_unit, "blockRadio", QGVAR(Surrendered), true] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_unit == ACE_player) then {
|
if (_unit == ACE_player) then {
|
||||||
["captive", [false, false, false, false, false, false, false, false, false, true]] call EFUNC(common,showHud);
|
["captive", [false, false, false, false, false, false, false, false, false, true]] call EFUNC(common,showHud);
|
||||||
@ -71,6 +72,7 @@ if (_state) then {
|
|||||||
} else {
|
} else {
|
||||||
_unit setVariable [QGVAR(isSurrendering), false, true];
|
_unit setVariable [QGVAR(isSurrendering), false, true];
|
||||||
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
|
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
|
||||||
|
[_unit, "blockRadio", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
//remove AnimChanged EH
|
//remove AnimChanged EH
|
||||||
private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
|
private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
|
["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType);
|
||||||
["blockThrow", false, ["ACE_Attach", "ACE_concertina_wire", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_rearm", "ACE_refuel", "ACE_Sandbag", "ACE_Trenches", "ACE_tripod"]] call FUNC(statusEffect_addType);
|
["blockThrow", false, ["ACE_Attach", "ACE_concertina_wire", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_rearm", "ACE_refuel", "ACE_Sandbag", "ACE_Trenches", "ACE_tripod"]] call FUNC(statusEffect_addType);
|
||||||
["setHidden", true, ["ace_unconscious"]] call FUNC(statusEffect_addType);
|
["setHidden", true, ["ace_unconscious"]] call FUNC(statusEffect_addType);
|
||||||
|
["blockRadio", false, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType);
|
||||||
|
|
||||||
[QGVAR(forceWalk), {
|
[QGVAR(forceWalk), {
|
||||||
params ["_object", "_set"];
|
params ["_object", "_set"];
|
||||||
@ -71,6 +72,20 @@
|
|||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
|
[QGVAR(blockRadio), {
|
||||||
|
params ["_object", "_set"];
|
||||||
|
TRACE_2("blockRadio EH",_object,_set);
|
||||||
|
if (_object isEqualTo ACE_Player && {_set > 0}) then {
|
||||||
|
call FUNC(endRadioTransmission);
|
||||||
|
};
|
||||||
|
if (isClass (configFile >> "CfgPatches" >> "task_force_radio")) then {
|
||||||
|
_object setVariable ["tf_unable_to_use_radio", _set > 0, true];
|
||||||
|
};
|
||||||
|
if (isClass (configFile >> "CfgPatches" >> "acre_main")) then {
|
||||||
|
_object setVariable ["acre_sys_core_isDisabled", _set > 0, true];
|
||||||
|
};
|
||||||
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
[QGVAR(blockDamage), { //Name reversed from `allowDamage` because we want NOR logic
|
[QGVAR(blockDamage), { //Name reversed from `allowDamage` because we want NOR logic
|
||||||
params ["_object", "_set"];
|
params ["_object", "_set"];
|
||||||
if ((_object isKindOf "CAManBase") && {(["ace_medical"] call FUNC(isModLoaded))}) then {
|
if ((_object isKindOf "CAManBase") && {(["ace_medical"] call FUNC(isModLoaded))}) then {
|
||||||
|
@ -33,11 +33,9 @@ if (_setVolume) then {
|
|||||||
// TFAR
|
// TFAR
|
||||||
_unit setVariable ["tf_voiceVolume", NORMAL_LEVEL, true];
|
_unit setVariable ["tf_voiceVolume", NORMAL_LEVEL, true];
|
||||||
_unit setVariable ["tf_globalVolume", NORMAL_LEVEL];
|
_unit setVariable ["tf_globalVolume", NORMAL_LEVEL];
|
||||||
_unit setVariable ["tf_unable_to_use_radio", false];
|
|
||||||
|
|
||||||
// ACRE2
|
// ACRE2
|
||||||
if (!isNil "acre_api_fnc_setGlobalVolume") then { [NORMAL_LEVEL^0.33] call acre_api_fnc_setGlobalVolume; };
|
if (!isNil "acre_api_fnc_setGlobalVolume") then { [NORMAL_LEVEL^0.33] call acre_api_fnc_setGlobalVolume; };
|
||||||
_unit setVariable ["acre_sys_core_isDisabled", false, true];
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Vanilla Game
|
// Vanilla Game
|
||||||
@ -46,9 +44,7 @@ if (_setVolume) then {
|
|||||||
// TFAR
|
// TFAR
|
||||||
_unit setVariable ["tf_voiceVolume", NO_SOUND, true];
|
_unit setVariable ["tf_voiceVolume", NO_SOUND, true];
|
||||||
_unit setVariable ["tf_globalVolume", MUTED_LEVEL];
|
_unit setVariable ["tf_globalVolume", MUTED_LEVEL];
|
||||||
_unit setVariable ["tf_unable_to_use_radio", true];
|
|
||||||
|
|
||||||
// ACRE2
|
// ACRE2
|
||||||
if (!isNil "acre_api_fnc_setGlobalVolume") then { [MUTED_LEVEL^0.33] call acre_api_fnc_setGlobalVolume; };
|
if (!isNil "acre_api_fnc_setGlobalVolume") then { [MUTED_LEVEL^0.33] call acre_api_fnc_setGlobalVolume; };
|
||||||
_unit setVariable ["acre_sys_core_isDisabled", true, true];
|
|
||||||
};
|
};
|
||||||
|
@ -31,6 +31,9 @@ _unit setVariable [VAR_UNCON, _active, true];
|
|||||||
// Stop AI firing at unconscious units in most situations (global effect)
|
// Stop AI firing at unconscious units in most situations (global effect)
|
||||||
[_unit, "setHidden", "ace_unconscious", _active] call EFUNC(common,statusEffect_set);
|
[_unit, "setHidden", "ace_unconscious", _active] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
|
// Block radio on unconsciousness for compatibility with captive module
|
||||||
|
[_unit, "blockRadio", "ace_unconscious", _active] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_active) then {
|
if (_active) then {
|
||||||
// Don't bother setting this if not used
|
// Don't bother setting this if not used
|
||||||
if (EGVAR(medical,spontaneousWakeUpChance) > 0) then {
|
if (EGVAR(medical,spontaneousWakeUpChance) > 0) then {
|
||||||
|
Reference in New Issue
Block a user