Is the problem that you are using different player animation for each direction?
You can have a condition for each.
On mouse click --> spawn whip
etc
[sub event]
is anglediff(angle(player,mouse),270) less than 22.5
-> set player animation to UpWhip
is anglediff(angle(player,mouse),0) less than 22.5
-> set player animation to RightWhip
is anglediff(angle(player,mouse),90) less than 22.5
-> set player animation to downwhip
etc
this condition:
is anglediff(angle(player,mouse),0) less than 22.5
would simply be system> compare two values.. it's basically asking if the angle is within 22.5 degrees of 0.
There would be a way of condensing this to one event with a bit of maths and animations named simply as '0', '1', '2', '3'.. but this is an easier starting point.