My fix seems to work. :dance: I've got two quests running, each with a 0.05s quest delay. The JumpFallFixInit quest is "start game enabled". The JumpFallFix quest is triggered by the JumpFallFixInit quest when the player presses the "jump" control key.
Here's the code if someone wants to try it out:
scn PPAJumpFallFixInitQuestScriptbegin gamemode IF getquestrunning PPAJumpFallFix ELSE IF iscontrolpressed 12 startquest PPAJumpFallFix ENDif ENDifend
scn PPAJumpFallFixQuestScriptfloat fZVelfloat fZPosfloat fZPosLastshort sInitref rLandingshort sLandCountbegin gamemode IF sLandCount IF sLandCount < 3 set sLandCount to sLandCount + 1 return ELSE set sLandCount to 0 set sInit to 0 rLanding.disable rLanding.markfordelete stopquest PPAJumpFallFix ENDif ELSE IF sInit set fZPos to player.getpos Z set fZVel to fZPos - fZPosLast set fZPosLast to fZPos IF (fZVel < 0 && sLandCount == 0) set rLanding to player.placeatme PPALandingMesh set sLandCount to 1 ENDif ELSE set fZPosLast to -10000000 set sInit to 1 ENDif ENDifend
The PPALandingMesh item is a static mesh that's basically just a renamed base from the baseball diamond. I was planning on tweaking the model to give it near-zero thickness and a transparent texture, but it exists for so few frames that you can't see it. If anyone can repeat this to verify it works... try jumping off of stuff...
*Edit - Limited success actually. Unless you are running forward, you will stop at the top of your jump as if the invisible baseball diamond is still there. I'll try using setpos to lower you a bit at that point to see if that helps. This script can be used as a starting place though for trying out the animation change idea (but requires FOSE).