Don't use the same sprite for rotation and platforming. Because of collision issue, when your sprite is rotated 15 degree one corner will touch the ground.
Then you set it to 0 degree it goes back in fall mode. Probably creating some wiggling.
You should then do something like setting another sprite to follow your platform sprite. I usually set the platform behavior on my collision box only and then set the eye candy graphics of the character on another sprite that doesn't handle collision.
Let's call it "PlayerSkin"
(You'll have to put your mirroring logic to the PlayerSkin instead by the way)
Global number JRotSpeed = 120 // in degree per second
Global number JAngleLimit = 15 //Limit of jump rotation angle
Player: On Jump
-> PlayerSkin: set rotSpeed to PlayerSkin.isMirrored ? JRotSpeed : -JRotSpeed
Player: On Fall
-> PlayerSkin: set rotSpeed to PlayerSkin.isMirrored ? -JRotSpeed : JRotSpeed
Player: On Landed
-> PlayerSkin: set rotSpeed to 0
-> Player: set angle to 0
Every Ticks:
-> PlayerSkin: Set Angle to Clamp(Player.angle+rotSpeed*dt,-JAngle,JAngle)
(Sorry, didn't keep your awesomely long variable names :D)
Use dt, this way your movement isn't fps dependant
if you rotate 2 degree per frame the movement won't have the same speed at 30 and 60fps
By multiplying by dt (time delta = time (in seconds) between the previous and the current frame) you'll always keep the same speed.
And also it allows you to express your values per seconds (adding 1*dt to a value each frame, this value will go up to 1 per second)
Anyway it should work