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 {};
};