Limit physics object velocity affected by multiple sources of AddForce()

Howdy folks!

I’m developing a game with very similar player movement mechanics like in Tribes: Ascend. My current implementation is using a Pawn without CharacterMovement component, and instead relies on AddForce() to move the player around. This is to allow the player to be propelled upwards through the air when going fast up a ramp/upwards slope. I also implemented a simple function which accelerates the player if he is moving on a downwards slope (also via AddForce(), which takes the slope angle into account and adds force downwards along the player axis). This is also working great. What I’m currently struggling with is the following:

  1. I want to allow player to reach maximum INPUT velocity, that is a velocity that the player can reach on an even ground with WASD keys.
  2. But if the player is accelerating on a downwards slope, the player should be able to surpass the maximum input velocity and maintain the currelocity.

Because there are 2 different forces affecting the player velocity, I basically want to clamp input velocity, while keeping the additional downward slope velocity unclamped.

I did try clamping the velocity vector length like so:

CapsuleComponent->SetAllPhysicsLinearVelocity(GetVelocity().GetClampedToMaxSize(MaxInputVelocity));

But of course this clamps the player final velocity, completely ignoring the gained momentum on a downward sloped ground.

Any help would be greatly appreciated!