73 lines
2.1 KiB
Plaintext
73 lines
2.1 KiB
Plaintext
params ["_heli"];
|
|
|
|
private _currentEfs = _heli getVariable ["efs", objNull];
|
|
if (!isNull _currentEfs) exitWith {
|
|
_heli vehicleChat "Emergency Floating System already deployed.";
|
|
};
|
|
|
|
sleep 1;
|
|
_heli vehicleChat "Deploying Emergency Floating System!";
|
|
_heli say3D "EFS";
|
|
_heli animate ["EFS_Cover_Hide", 1];
|
|
_heli animate ["EFS_Hide", 1];
|
|
|
|
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"];
|
|
|
|
_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];
|
|
};
|
|
|
|
if (!(_heli getVariable ["braf_efs_water_monitor", false])) then {
|
|
_heli setVariable ["braf_efs_water_monitor", true, true];
|
|
|
|
[_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;
|
|
};
|
|
};
|
|
};
|