params["_object", "_endSound", "_endDuration", "_distance"]; if(!hasInterface) exitWith { diag_log "[RD501][Fired Deployable][End Sound Local] No Interface to play sounds from"; }; if(isNil "_object" || !alive _object) exitWith { diag_log "[RD501][Fired Deployable][End Sound Local] No target object to play remote sound"; }; private _currentLoopSource = _object getVariable ["rd501_fired_deployable_loopSoundSource", objNull]; if(!(isNil "_currentLoopSource") && !(_currentLoopSource isEqualTo objNull)) then { diag_log "[RD501][Fired Deployable][End Sound Local] Current Loop Source Exists, Deleting"; deleteVehicle _currentLoopSource; _object setVariable ["rd501_fired_deployable_loopSoundSource", objNull, false]; }; private _currentSource = "#dynamicsound" createVehicleLocal ASLToAGL getPosWorld _object; _currentSource attachTo [_object, [0, 0, 0]]; [_currentSource, player] say3D [_endSound, _distance, 1, false]; [ { params["_currentSource"]; detach _currentSource; deleteVehicle _currentSource; }, [_currentSource], (_endDuration + 1) ] call CBA_fnc_waitAndExecute;