I guess some code to lower a flying vehicle into water would work. Set the vehicle density to 0.9 or something and it'll float.
function TestBoat::onEnterLiquid(%this, %obj, %coverage, %type)
{
cancel(%obj.floatSchedule);
ServerPlay3D(WakeSound, %obj.getTransform());
}
function TestBoat::onLeaveLiquid(%this, %obj, %type)
{
%obj.floatSchedule = schedule(10,0,lowerboat,%obj);
ServerPlay3D(WakeSound, %obj.getTransform());
}
function lowerboat(%obj){
%pos = %obj.getposition();
%pos = addtoz(%pos,-0.01);
%obj.settransform(%pos);
ServerPlay3D(WakeSound, %obj.getTransform());
if(isObject(%obj))
%obj.floatSchedule = schedule(5,0,lowerboat,%obj);
}
datablock AudioProfile(WakeSound)
{
filename = "add-ons/data/sound/splash.wav";
description = AudioCloses3d;
preload = true;
};