I'm not at home so i can only share theory :D
1. You can check to see if your character is in the air or ground. Add that to your condition. Or more specifically
On Attack Button
-> onGround - do events
-> inAir - do events
however an alternative which reduces condition checks. Assume player starts on ground :D
Group Ground
Jump button -> Jump, enable Group Air, disable Group Ground
attack button -> do ground attack
Group Air
onlanding -> enable Group Ground, disable Group Air
attack button -> do air attack
2. more manual control of the setVelocity and or speed. As practice just set speed for each action. this way interupts will change the speed back to normal. I'm not sure if your looking for Velocity or Speed.
3. you need more conditions.
conditions:
attackbutton
and NOT(animationFrame > attackFrame First) & (animationFrame < attackFrame last)
action-> do attack