I suggest using what I call control states. Basically you have a private variable that based upon its label, controls what controls there are. Like this:
If variable 'mode' is "standing"
sub event - if "punch" is pressed, set animation to "attack", set 'mode' to "attacking", start ignoring input
sub event - if "move left" is down, set angle
What's going on here, is since the events to attack and set the angle are sub events, they only run if the parent event is true. Therefore by changing the variable, you change the control set. Since 'mode' is not "standing" anymore, pressing punch won't make the character attack again because the event doesn't run. Then make a second set of events:
If variable 'mode' is "attacking"
sub event - if animation "attacking" is over, set animation to "standing", set 'mode' to "standing", stop ignoring input
Voila! Using this technique you can make ridiculously complex control combinations easily. This way you also avoid conflicts from having to use bazillions of conditions which makes bugs really hard to track down.