Common/CSW - Use status effect for enableWeaponDisassembly (#9413)

* uuse weaponDisassemblyEnabled

* convert to status effect

* fix edge conditions

* Update addons/common/functions/fnc_claim.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/common/XEH_postInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/common/XEH_postInit.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update XEH_postInit.sqf

* Update addons/common/functions/fnc_claimSafeServer.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update fnc_claimSafeServer.sqf

* change status effect key

* status effect key

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
This commit is contained in:
Grim 2023-11-22 21:16:42 -03:00 committed by GitHub
parent 3f6a93195a
commit 3f61a41be3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 16 additions and 27 deletions

View File

@ -28,6 +28,7 @@
["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); ["blockRadio", false, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType);
["blockSpeaking", false, ["ace_unconscious"]] call FUNC(statusEffect_addType); ["blockSpeaking", false, ["ace_unconscious"]] call FUNC(statusEffect_addType);
["disableWeaponAssembly", false, ["ace_common", "ace_common_lockVehicle", "ace_csw"]] call FUNC(statusEffect_addType);
["lockInventory", true, []] call FUNC(statusEffect_addType); ["lockInventory", true, []] call FUNC(statusEffect_addType);
[QGVAR(forceWalk), { [QGVAR(forceWalk), {
@ -121,6 +122,11 @@
_object setMass _mass; _object setMass _mass;
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
[QGVAR(disableWeaponAssembly), {
params ["_object", "_set"];
_object enableWeaponDisassembly (_set < 1);
}] call CBA_fnc_addEventHandler;
[QGVAR(lockInventory), { [QGVAR(lockInventory), {
params ["_object", "_set"]; params ["_object", "_set"];
TRACE_2("lockInventory EH",_object,_set); TRACE_2("lockInventory EH",_object,_set);
@ -161,10 +167,16 @@ if (isServer) then {
[QGVAR(lockVehicle), { [QGVAR(lockVehicle), {
_this setVariable [QGVAR(lockStatus), locked _this]; _this setVariable [QGVAR(lockStatus), locked _this];
_this lock 2; _this lock 2;
if ([] isNotEqualTo getArray (configOf _this >> "assembleInfo" >> "dissasembleTo")) then {
[_this, "disableWeaponAssembly", QGVAR(lockVehicle), true] call FUNC(statusEffect_set);
};
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
[QGVAR(unlockVehicle), { [QGVAR(unlockVehicle), {
_this lock (_this getVariable [QGVAR(lockStatus), locked _this]); _this lock (_this getVariable [QGVAR(lockStatus), locked _this]);
if ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) then {
[_this, "disableWeaponAssembly", QGVAR(lockVehicle), false] call FUNC(statusEffect_set);
};
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
[QGVAR(setDir), {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(setDir), {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler;

View File

@ -30,17 +30,10 @@ _target setVariable [QGVAR(owner), _unit, true];
// lock target object // lock target object
if (_lockTarget) then { if (_lockTarget) then {
private _canBeDisassembled = ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
if (!isNull _unit) then { if (!isNull _unit) then {
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent; [QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
if (_canBeDisassembled) then {
_target enableWeaponDisassembly false;
};
} else { } else {
[QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent; [QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent;
if (_canBeDisassembled) then {
_target enableWeaponDisassembly true;
};
}; };
}; };

View File

@ -36,17 +36,10 @@ _target setVariable [QGVAR(owner), _unit, true];
// lock target object // lock target object
if (_lockTarget) then { if (_lockTarget) then {
private _canBeDisassembled = ([] isNotEqualTo getArray (configOf _target >> "assembleInfo" >> "dissasembleTo")) && { !([false, true] select (_target getVariable [QEGVAR(csw,assemblyMode), 0])) };
if (!isNull _unit) then { if (!isNull _unit) then {
[QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent; [QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent;
if (_canBeDisassembled) then {
_target enableWeaponDisassembly false;
};
} else { } else {
[QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent; [QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent;
if (_canBeDisassembled) then {
_target enableWeaponDisassembly true;
};
}; };
}; };

View File

@ -12,12 +12,6 @@ GVAR(vehicleMagCache) = createHashMap;
// Event handlers: // Event handlers:
[QGVAR(disableVanillaAssembly), {
params ["_staticWeapon"];
TRACE_1("disableVanillaAssembly eh",_staticWeapon);
_staticWeapon enableWeaponDisassembly false;
}] call CBA_fnc_addEventHandler;
[QGVAR(addTurretMag), LINKFUNC(reload_handleAddTurretMag)] call CBA_fnc_addEventHandler; [QGVAR(addTurretMag), LINKFUNC(reload_handleAddTurretMag)] call CBA_fnc_addEventHandler;
[QGVAR(removeTurretMag), LINKFUNC(reload_handleRemoveTurretMag)] call CBA_fnc_addEventHandler; [QGVAR(removeTurretMag), LINKFUNC(reload_handleRemoveTurretMag)] call CBA_fnc_addEventHandler;
[QGVAR(returnAmmo), LINKFUNC(reload_handleReturnAmmo)] call CBA_fnc_addEventHandler; [QGVAR(returnAmmo), LINKFUNC(reload_handleReturnAmmo)] call CBA_fnc_addEventHandler;

View File

@ -40,8 +40,7 @@
_cswTripod setVariable [QGVAR(secondaryWeaponMagazine), _secondaryWeaponMagazine]; _cswTripod setVariable [QGVAR(secondaryWeaponMagazine), _secondaryWeaponMagazine];
}; };
if (!GVAR(defaultAssemblyMode)) then { if (!GVAR(defaultAssemblyMode)) then {
TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled [_cswTripod, "disableWeaponAssembly", "ace_csw", true] call EFUNC(common,statusEffect_set);
[QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent;
}; };
private _posATL = _player getRelPos [2, 0]; private _posATL = _player getRelPos [2, 0];

View File

@ -46,8 +46,7 @@
// Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default] // Assembly mode: [0=disabled, 1=enabled, 2=enabled&unload, 3=default]
_csw setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set advanced assembly mode + unload, and broadcast _csw setVariable [QGVAR(assemblyMode), 2, true]; // Explicitly set advanced assembly mode + unload, and broadcast
if (!GVAR(defaultAssemblyMode)) then { if (!GVAR(defaultAssemblyMode)) then {
TRACE_1("global disableVanillaAssembly event",_csw); // handles it being assembled when setting is disabled [_csw, "disableWeaponAssembly", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
[QGVAR(disableVanillaAssembly), [_csw]] call CBA_fnc_globalEvent;
}; };
_csw setDir _tripodDir; _csw setDir _tripodDir;
_csw setPosATL _tripodPos; _csw setPosATL _tripodPos;
@ -75,4 +74,3 @@
[TIME_PROGRESSBAR(_deployTime), [_tripod, _player, _assembledClassname, _carryWeaponClassname], _onFinish, _onFailure, localize LSTRING(AssembleCSW_progressBar), _codeCheck] call EFUNC(common,progressBar); [TIME_PROGRESSBAR(_deployTime), [_tripod, _player, _assembledClassname, _carryWeaponClassname], _onFinish, _onFailure, localize LSTRING(AssembleCSW_progressBar), _codeCheck] call EFUNC(common,progressBar);
}, _this] call CBA_fnc_execNextFrame; }, _this] call CBA_fnc_execNextFrame;

View File

@ -50,8 +50,8 @@ if (_assemblyConfig) then {
if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); }; if (!alive _staticWeapon) exitWith { TRACE_1("dead/deleted",_staticWeapon); };
private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]); private _assemblyMode = [false, true, true, GVAR(defaultAssemblyMode)] select (_staticWeapon getVariable [QGVAR(assemblyMode), 3]);
TRACE_2("assemblyConfig present",_staticWeapon,_assemblyMode); TRACE_2("assemblyConfig present",_staticWeapon,_assemblyMode);
if (_assemblyMode) then { // Disable vanilla assembly if assemblyMode eanbled if (_assemblyMode) then { // Disable vanilla assembly if assemblyMode enabled
[QGVAR(disableVanillaAssembly), [_staticWeapon]] call CBA_fnc_localEvent; [_staticWeapon, "disableWeaponAssembly", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
}; };
}, [_staticWeapon]] call CBA_fnc_execNextFrame; // need to wait a frame to allow setting object vars during assembly }, [_staticWeapon]] call CBA_fnc_execNextFrame; // need to wait a frame to allow setting object vars during assembly
}; };