diff --git a/CHANGELOG.md b/CHANGELOG.md index 09b9072..64a072d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 2026-07-13 + +### Aeronaves + +- O EFS naval do Fennec passou a usar o mesh integrado ao P3D e a flutuacao nativa do Arma 3, sem criar um objeto externo. +- Corrigido o afundamento imediato apos o acionamento do EFS: a causa era a ausencia da named property `buoyancy=1` no Geometry LOD do P3D do Fennec. + ## 2026-06-24 ### Aeronaves diff --git a/braf_air/Braf_Helicopters/Braf_Fennec/Braf_Fennec.p3d b/braf_air/Braf_Helicopters/Braf_Fennec/Braf_Fennec.p3d index 2b2784f..e1ad24e 100644 --- a/braf_air/Braf_Helicopters/Braf_Fennec/Braf_Fennec.p3d +++ b/braf_air/Braf_Helicopters/Braf_Fennec/Braf_Fennec.p3d @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c84a2c6e22c6b834e52b0c72bbdf9146c37fd9b6bcf54e8f6c1f9b28db7c4a48 -size 84981574 +oid sha256:634274360582dd0ff3f43cbd13eec30e7e3554badb44c9673e248b88cfcf52a4 +size 84587298 diff --git a/braf_air/Braf_Helicopters/Braf_Fennec/Fennec_Base.hpp b/braf_air/Braf_Helicopters/Braf_Fennec/Fennec_Base.hpp index fd2fa3b..cd3eb25 100644 --- a/braf_air/Braf_Helicopters/Braf_Fennec/Fennec_Base.hpp +++ b/braf_air/Braf_Helicopters/Braf_Fennec/Fennec_Base.hpp @@ -415,16 +415,28 @@ class BRAF_Fennec_Base: Helicopter_Base_H condition="this animationphase 'NVG_Hide' < 0.1 AND (player in crew this)"; statement="this animate ['NVG_Hide',1]"; }; - class Deploy_EFS + class Arm_EFS { - displayname=" Deploy EFS "; + displayname=" Arm EFS "; position="cabin"; showWindow=1; radius=10; priority=1; onlyForPlayer=0; - condition="getText (configOf this >> 'faction') == 'BRAF_NAVY' AND this animationphase 'EFS_Hide' < 0.1 AND (player in crew this)"; - statement="this execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'SAFE')"; + statement="[this, ""arm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Disarm_EFS: Arm_EFS + { + displayname=" Disarm EFS "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""disarm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Deploy_Floats: Arm_EFS + { + displayname=" Deploy Floats "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""deployfloats""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; }; }; class Armory @@ -811,7 +823,7 @@ class BRAF_Fennec_Base: Helicopter_Base_H #include "Fennec_sounds.hpp" class EventHandlers: EventHandlers { - init="if (local (_this select 0)) then {[(_this select 0), """", [], false] call bis_fnc_initVehicle;};"; + init="if (local (_this select 0)) then {[(_this select 0), """", [], false] call bis_fnc_initVehicle; [(_this select 0), ""Init""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"";};"; }; ace_cargo_space=2; class TextureSources @@ -1139,6 +1151,18 @@ class BRAF_Fennec_dynamicLoadout_base: BRAF_Fennec_Base animPeriod=0; initPhase=1; }; + class EFS_Cover_Hide + { + source="user"; + animPeriod=0; + initPhase=0; + }; + class EFS_Hide + { + source="user"; + animPeriod=0; + initPhase=0; + }; }; class Turrets: Turrets { @@ -1396,16 +1420,28 @@ class BRAF_Fennec_dynamicLoadout_base: BRAF_Fennec_Base condition="this animationphase 'NVG_Hide' < 0.1 AND (player in crew this)"; statement="this animate ['NVG_Hide',1]"; }; - class Deploy_EFS + class Arm_EFS { - displayname=" Deploy EFS "; + displayname=" Arm EFS "; position="cabin"; showWindow=1; radius=10; priority=1; onlyForPlayer=0; - condition="getText (configOf this >> 'faction') == 'BRAF_NAVY' AND this animationphase 'EFS_Hide' < 0.1 AND (player in crew this)"; - statement="this execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'SAFE')"; + statement="[this, ""arm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Disarm_EFS: Arm_EFS + { + displayname=" Disarm EFS "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""disarm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Deploy_Floats: Arm_EFS + { + displayname=" Deploy Floats "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""deployfloats""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; }; }; }; @@ -1485,7 +1521,18 @@ class BRAF_Fennec_SAR_base: BRAF_Fennec_Base source="user"; animPeriod=1; initPhase=0; - //sound="BRAF_Door"; + }; + class EFS_Cover_Hide + { + source="user"; + animPeriod=0; + initPhase=0; + }; + class EFS_Hide + { + source="user"; + animPeriod=0; + initPhase=0; }; }; class Turrets: Turrets @@ -1764,16 +1811,28 @@ class BRAF_Fennec_SAR_base: BRAF_Fennec_Base condition="this animationphase 'NVG_Hide' < 0.1 AND (player in crew this)"; statement="this animate ['NVG_Hide',1]"; }; - class Deploy_EFS + class Arm_EFS { - displayname=" Deploy EFS "; + displayname=" Arm EFS "; position="cabin"; showWindow=1; radius=10; priority=1; onlyForPlayer=0; - condition="getText (configOf this >> 'faction') == 'BRAF_NAVY' AND this animationphase 'EFS_Hide' < 0.1 AND (player in crew this)"; - statement="this execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'SAFE')"; + statement="[this, ""arm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Disarm_EFS: Arm_EFS + { + displayname=" Disarm EFS "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""disarm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Deploy_Floats: Arm_EFS + { + displayname=" Deploy Floats "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""deployfloats""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; }; class Open_Door_Right { @@ -1844,6 +1903,18 @@ class BRAF_Fennec_unarmed_base: BRAF_Fennec_Base source="user"; animPeriod=1; initPhase=1; + }; + class EFS_Cover_Hide + { + source="user"; + animPeriod=0; + initPhase=0; + }; + class EFS_Hide + { + source="user"; + animPeriod=0; + initPhase=0; }; }; class UserActions @@ -1865,16 +1936,28 @@ class BRAF_Fennec_unarmed_base: BRAF_Fennec_Base condition="this animationphase 'NVG_Hide' < 0.1 AND (player in crew this)"; statement="this animate ['NVG_Hide',1]"; }; - class Deploy_EFS + class Arm_EFS { - displayname=" Deploy EFS "; + displayname=" Arm EFS "; position="cabin"; showWindow=1; radius=10; priority=1; onlyForPlayer=0; - condition="getText (configOf this >> 'faction') == 'BRAF_NAVY' AND this animationphase 'EFS_Hide' < 0.1 AND (player in crew this)"; - statement="this execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'SAFE')"; + statement="[this, ""arm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Disarm_EFS: Arm_EFS + { + displayname=" Disarm EFS "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""disarm""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; + }; + class Deploy_Floats: Arm_EFS + { + displayname=" Deploy Floats "; + condition="getNumber (configOf this >> 'canFloat') == 1 AND this animationphase 'EFS_Cover_Hide' > 0.9 AND (player in crew this) AND ((this getVariable ['braf_efs_state','SAFE']) == 'ARMED')"; + statement="[this, ""deployfloats""] execVM ""braf\braf_sar\Braf_Scripts\EFS_Esquilo.sqf"""; }; }; }; @@ -1957,7 +2040,15 @@ class BRAF_Fennec_Unarmed_MB: BRAF_Fennec_unarmed_base _generalMacro="BRAF_Fennec_Unarmed_MB"; faction="BRAF_NAVY"; canFloat=1; - waterLeakiness=10; + waterAngularDampingCoef=0; + waterDamageEngine=0.2; + waterEffect="HeliWater"; + waterLeakiness=100; + waterLinearDampingCoefX=0; + waterLinearDampingCoefY=0; + waterPPInVehicle=1; + waterResistance=1; + waterResistanceCoef=0.5; crew="braf_characters_aviation_navy_pilot"; editorPreview="\braf\braf_insignia\editorpreview\air\BRAF_Fennec_Unarmed_MB.jpg"; scope=2; @@ -2012,6 +2103,16 @@ class BRAF_Fennec_Resort: BRAF_Fennec_cargo_base editorPreview="\braf\braf_insignia\editorpreview\brazilian_civ\Air\BRAF_Fennec_Resort.jpg"; scope=2; faction="BRAF_CIV"; + canFloat=1; + waterAngularDampingCoef=0; + waterDamageEngine=0.2; + waterEffect="HeliWater"; + waterLeakiness=100; + waterLinearDampingCoefX=0; + waterLinearDampingCoefY=0; + waterPPInVehicle=1; + waterResistance=1; + waterResistanceCoef=0.5; side=3; scopeCurator=2; scopeArsenal=2; @@ -2026,6 +2127,11 @@ class BRAF_Fennec_Resort: BRAF_Fennec_cargo_base { "Resort",1 }; + animationList[]= + { + "EFS_Cover_Hide",1, + "EFS_Hide",0 + }; }; class BRAF_Fennec_80s: BRAF_Fennec_unarmed_base { @@ -2064,7 +2170,15 @@ class BRAF_Fennec_Armed_MB: BRAF_Fennec_dynamicLoadout_base _generalMacro="BRAF_Fennec_Armed_MB"; faction="BRAF_NAVY"; canFloat=1; - waterLeakiness=10; + waterAngularDampingCoef=0; + waterDamageEngine=0.2; + waterEffect="HeliWater"; + waterLeakiness=100; + waterLinearDampingCoefX=0; + waterLinearDampingCoefY=0; + waterPPInVehicle=1; + waterResistance=1; + waterResistanceCoef=0.5; crew="braf_characters_aviation_navy_pilot"; editorPreview="\braf\braf_insignia\editorpreview\air\BRAF_Fennec_Armed_MB.jpg"; scope=2; @@ -2132,7 +2246,15 @@ class BRAF_Fennec_Cargo_MB: BRAF_Fennec_cargo_base _generalMacro="BRAF_Fennec_Cargo_MB"; faction="BRAF_NAVY"; canFloat=1; - waterLeakiness=10; + waterAngularDampingCoef=0; + waterDamageEngine=0.2; + waterEffect="HeliWater"; + waterLeakiness=100; + waterLinearDampingCoefX=0; + waterLinearDampingCoefY=0; + waterPPInVehicle=1; + waterResistance=1; + waterResistanceCoef=0.5; crew="braf_characters_aviation_navy_pilot"; editorPreview="\braf\braf_insignia\editorpreview\air\BRAF_Fennec_Cargo_MB.jpg"; scope=2; @@ -2202,7 +2324,15 @@ class BRAF_Fennec_SAR_MB: BRAF_Fennec_SAR_base crew="braf_characters_aviation_navy_pilot"; faction="BRAF_NAVY"; canFloat=1; - waterLeakiness=10; + waterAngularDampingCoef=0; + waterDamageEngine=0.2; + waterEffect="HeliWater"; + waterLeakiness=100; + waterLinearDampingCoefX=0; + waterLinearDampingCoefY=0; + waterPPInVehicle=1; + waterResistance=1; + waterResistanceCoef=0.5; scope=2; side=2; scopeCurator=2; diff --git a/braf_air/Braf_Helicopters/Braf_Fennec/model.cfg b/braf_air/Braf_Helicopters/Braf_Fennec/model.cfg index 62f9d29..510242f 100644 --- a/braf_air/Braf_Helicopters/Braf_Fennec/model.cfg +++ b/braf_air/Braf_Helicopters/Braf_Fennec/model.cfg @@ -912,4 +912,4 @@ class CfgModels }; }; }; -}; \ No newline at end of file +}; diff --git a/braf_sar/BRAF_Esquilo_EFS.p3d b/braf_sar/BRAF_Esquilo_EFS.p3d index 1620433..7496cdc 100644 --- a/braf_sar/BRAF_Esquilo_EFS.p3d +++ b/braf_sar/BRAF_Esquilo_EFS.p3d @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd3a1b29ad867f42a41b4661dbf451636b38489e8a6c2ca24e03907a1cecf9dc -size 343214 +oid sha256:c9d9989830799cdb93acc529e875657a93430149956a3fcbd24de06feaa014cc +size 340370 diff --git a/braf_sar/Braf_Scripts/Delete_EFS.sqf b/braf_sar/Braf_Scripts/Delete_EFS.sqf deleted file mode 100644 index 9475e18..0000000 --- a/braf_sar/Braf_Scripts/Delete_EFS.sqf +++ /dev/null @@ -1,10 +0,0 @@ -params ["_heli"]; - -private _efs = _heli getVariable ["efs", objNull]; -if (!isNull _efs) then { - deleteVehicle _efs; -}; - -_heli animate ["EFS_Hide", 0]; -_heli setVariable ["efs", objNull, true]; -_heli setVariable ["braf_efs_deployed", false, true]; diff --git a/braf_sar/Braf_Scripts/EFS_Esquilo.sqf b/braf_sar/Braf_Scripts/EFS_Esquilo.sqf index 60e2c25..3700697 100644 --- a/braf_sar/Braf_Scripts/EFS_Esquilo.sqf +++ b/braf_sar/Braf_Scripts/EFS_Esquilo.sqf @@ -1,72 +1,147 @@ -params ["_heli"]; +params ["_heli", ["_action", "deploy"]]; -private _currentEfs = _heli getVariable ["efs", objNull]; -if (!isNull _currentEfs) exitWith { - _heli vehicleChat "Emergency Floating System already deployed."; +if (isNull _heli) exitWith {}; + +private _canFloat = getNumber (configFile >> "CfgVehicles" >> typeOf _heli >> "canFloat") > 0; +if (!_canFloat) exitWith {}; + +private _actionLower = toLower _action; +private _legacyDeploy = (count _this) < 2; +private _state = _heli getVariable ["braf_efs_state", "SAFE"]; + +if (_actionLower == "deploy") then { + _actionLower = "deployfloats"; }; -sleep 1; -_heli vehicleChat "Deploying Emergency Floating System!"; -_heli say3D "EFS"; -_heli animate ["EFS_Cover_Hide", 1]; -_heli animate ["EFS_Hide", 1]; +private _getConfiguredLeakiness = { + params ["_vehicle"]; -private _efs = "BRAF_Esquilo_EFS" createVehicle [0, 0, 0]; -_efs setDir (getDir _heli); -_efs setPosASL (_heli modelToWorld [0, 0, 0]); -_efs attachTo [_heli, [0, 0, 0], "efs_spawn"]; + private _leakiness = getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "waterLeakiness"); + if (_leakiness < 0) then { + _leakiness = 0; + }; -_heli setVariable ["efs", _efs, true]; -_heli setVariable ["braf_efs_deployed", true, true]; - -if ((_heli getVariable ["braf_efs_engine_lock_eh", -1]) < 0) then { - private _engineLockEh = _heli addEventHandler ["Engine", { - params ["_vehicle", "_engineState"]; - - if (_engineState && {_vehicle getVariable ["braf_efs_water_landed", false]}) then { - _vehicle engineOn false; - _vehicle vehicleChat "Engine restart disabled after EFS water landing."; - }; - }]; - - _heli setVariable ["braf_efs_engine_lock_eh", _engineLockEh]; + _leakiness }; -if (!(_heli getVariable ["braf_efs_water_monitor", false])) then { - _heli setVariable ["braf_efs_water_monitor", true, true]; +private _getEfsCenterASL = { + params ["_vehicle"]; - [_heli] spawn { - params ["_heli"]; - - private _waterContact = false; - while { - !isNull _heli - && {_heli getVariable ["braf_efs_deployed", false]} - && {!(_heli getVariable ["braf_efs_water_landed", false])} - && {!_waterContact} - } do { - private _efsProbe = _heli getVariable ["efs", objNull]; - private _waterProbeASL = if (isNull _efsProbe) then {getPosASL _heli} else {getPosASL _efsProbe}; - _waterContact = (surfaceIsWater (getPosWorld _heli)) - && {(isTouchingGround _heli) || {(_waterProbeASL select 2) < 0.75}}; - - sleep 0.25; - }; - - _heli setVariable ["braf_efs_water_monitor", false, true]; - - if (isNull _heli || {!_waterContact}) exitWith {}; - - _heli setVariable ["braf_efs_water_landed", true, true]; - _heli engineOn false; - _heli vehicleChat "EFS water landing complete. Engine restart disabled."; - - while {!isNull _heli && {_heli getVariable ["braf_efs_water_landed", false]}} do { - if (isEngineOn _heli) then { - _heli engineOn false; - }; - - sleep 0.5; - }; - }; + _vehicle modelToWorldWorld (_vehicle selectionPosition ["EFS_center", "Memory"]) +}; + +private _getWaterSurfaceASL = { + params ["_vehicle"]; + + private _vehicleASL = getPosASL _vehicle; + private _vehicleASLW = getPosASLW _vehicle; + + (_vehicleASL select 2) - (_vehicleASLW select 2) +}; + +private _installEngineLock = { + params ["_vehicle"]; + + if ((_vehicle getVariable ["braf_efs_engine_lock_eh", -1]) < 0) then { + private _engineLockEh = _vehicle addEventHandler ["Engine", { + params ["_vehicle", "_engineState"]; + + if (_engineState && {_vehicle getVariable ["braf_efs_water_landed", false]}) then { + _vehicle engineOn false; + }; + }]; + + _vehicle setVariable ["braf_efs_engine_lock_eh", _engineLockEh]; + }; +}; + +private _startWaterMonitor = { + params ["_vehicle"]; + + if (_vehicle getVariable ["braf_efs_water_monitor", false]) exitWith {}; + + _vehicle setVariable ["braf_efs_water_monitor", true, true]; + + [_vehicle, _getEfsCenterASL, _getWaterSurfaceASL] spawn { + params ["_heli", "_getEfsCenterASL", "_getWaterSurfaceASL"]; + + while { + !isNull _heli + && {_heli getVariable ["braf_efs_deployed", false]} + && {(_heli getVariable ["braf_efs_state", "SAFE"]) in ["DEPLOYED", "WATER_LANDED"]} + } do { + private _currentState = _heli getVariable ["braf_efs_state", "SAFE"]; + + if (_currentState == "DEPLOYED" && {surfaceIsWater (getPosWorld _heli)}) then { + private _probeASL = [_heli] call _getEfsCenterASL; + private _waterSurfaceASL = [_heli] call _getWaterSurfaceASL; + private _probeDepth = (_probeASL select 2) - _waterSurfaceASL; + + if (_probeDepth <= 0.25) then { + _heli setVariable ["braf_efs_state", "WATER_LANDED", true]; + _heli setVariable ["braf_efs_water_landed", true, true]; + _heli engineOn false; + }; + }; + + if (_heli getVariable ["braf_efs_water_landed", false] && {isEngineOn _heli}) then { + _heli engineOn false; + }; + + sleep 0.25; + }; + + if (!isNull _heli) then { + _heli setVariable ["braf_efs_water_monitor", false, true]; + }; + }; +}; + +switch (_actionLower) do { + case "init": { + _heli setVariable ["braf_efs_state", "SAFE", true]; + _heli setVariable ["braf_efs_deployed", false, true]; + _heli setVariable ["braf_efs_water_landed", false, true]; + _heli setVariable ["braf_efs_water_monitor", false, true]; + _heli setVariable ["braf_efs_water_leakiness", [_heli] call _getConfiguredLeakiness]; + _heli animateSource ["EFS_Hide", 0, true]; + _heli setWaterFillPercentage 1; + }; + + case "arm": { + if (_state != "SAFE") exitWith {}; + + _heli setVariable ["braf_efs_state", "ARMED", true]; + _heli setVariable ["braf_efs_deployed", false, true]; + _heli setVariable ["braf_efs_water_landed", false, true]; + }; + + case "disarm": { + if (_state != "ARMED") exitWith {}; + + _heli setVariable ["braf_efs_state", "SAFE", true]; + _heli setVariable ["braf_efs_deployed", false, true]; + _heli setVariable ["braf_efs_water_landed", false, true]; + _heli setWaterFillPercentage 1; + }; + + case "deployfloats": { + if (!_legacyDeploy && {_state != "ARMED"}) exitWith {}; + + if (_state in ["DEPLOYED", "WATER_LANDED"]) exitWith {}; + + _heli setVariable ["braf_efs_state", "DEPLOYED", true]; + _heli setVariable ["braf_efs_deployed", true, true]; + _heli setVariable ["braf_efs_water_landed", false, true]; + _heli say3D "EFS"; + _heli animateSource ["EFS_Cover_Hide", 1, true]; + _heli animateSource ["EFS_Hide", 1, true]; + _heli setWaterLeakiness 0; + _heli setWaterFillPercentage 0; + + [_heli] call _installEngineLock; + [_heli] call _startWaterMonitor; + }; + + default {}; };