I didn't really added momentum because it's something that comes for free once you have basic newtonian dynamics. So here there is only force when you blink, friction and gravity. Then one has to tweak the numbers to get something that feels ok, for example there is different friction coefficient depending if you're on the ground, blinking or in the air :
function Fade:GetFrictionForce(input, velocity)
local frictionScalar = 8
if self:GetIsEthereal() then frictionScalar = 10
elseif not self:GetIsOnGround() then frictionScalar = 1.5 end
return -velocity * frictionScalar end
I'm not sure how this affects balance because you spend less time in ethereal mode as a fade, so maybe you get shot a bit more. It's also a bit harder to control, but I guess with training it could become overpowered.
So if anybody want to test I can start a server with it. If you have suggestion also, e.g. shift key does nothing right now.
Downloadversion with auto Mod Loader for easier installation :