Your code is well thought out for what you are trying to do but the result will look choppy because you are directly changing the value of the speed. Usually you want to avoid that by changin the accelaration, for smoother movement.
If for some reason you can't do that then you must change the speed gradually and not just set it to an arbirtary value because it will look very unnatural.
In godot the tool we use to change any property gradually over a certain period in time is the node Tween.
Step 1) add a child node Tween
Step 2) change the stop_jump function to something like this
func stop_jump():
if vel.y < -100:
get_node("Tween").interpolate_property(self,'vel:y',vel.y, -100, 0.35,Tween.TRANS_SINE,Tween.EASE_OUT)
get_node("Tween").start()
getnode("Tween").interpolateproperty( self, #where the property you want to manipulate is
'vel:y', #the name of the property
vel.y, #the initial value
-100, #the value you will end on
0.35, # how much time it will take
Tween.TRANSSINE,Tween.EASEOUT) # changes the way the the property is animated
to learn more you can see these:
https://docs.godotengine.org/en/stable/classes/class_tween.html
https://www.youtube.com/watch?v=ofDcC3aux8Q