I would first try to make a big fsm for managing all of the key press combinations.
You could do it where everything starts in the first state, then divides off for each of the possible keys you could press for moves (i assume four keys? punch/punch/kick/kick). After you branch to one of those other four states I would have a wait action that goes back to the first state if they take too long to press it and have the key down action to go to a different state.
But that could make everything happen ultra fast if you press them in sequence super quickly, so you might need to do the bool option and have a separate compare to see if enough of a delay has elapsed to actually go to the next state.
Overall, it seems like it might be pretty complex when you get enough moves. I would consider making a custom action that condenses the whole wait/compare process down so that its easier to build the FSM. This would require coding, but its probably worth it to avoid building a solution and then taking a really long time to revise anything.