ome6a1717
things to try:
If subtracting 1 from instance variable every 0.1 seconds , to make sure it does not go below 0 (not to trigger "if variable=0") try using clamp Ex: clamp(var-1, 0 ,max), or use "if variable=0"
instead of dashing depending on time (0.35 sec) try dashing depending on distance.
For speed of 1500 pix/sec and 0.35 time the distance will be 1500*0.35= 525 px.
So: before dashing, save player position x1,x2, and while dashing check the moved distance , if is above 525 make it stop and return to 525 (imagine a circle with a radius of 525 px and the player has to go back inside )
If the movement is depending on time, than is depending on dt which for 20fps and a speed of 1500 px/sec the movement error will be 75 px. 1/20*1500=75
Your project is overwhelming for me to try modifying myself.
In programming math is your best friend.
By the way, nice game.