If I were you... I'd make the reactions state dependant, not depending on animation cycles, it gives you too much borders.

The deterministic finite automaton principle.

Just let em check what the other one is doing, I had such a System once, it worked so well, that the to opponents were not able to hit each other.

Depending on how much time was left they used blocking or a vertical hit to slash away a horizontal strinke and the other way round:

Ok this is a screen for a bug, I created an endless loop for creating block-spark-particle-whatever-stuff, but as you can see, the left dummy holds his weapon in defence mode, the right one attacked.
The colors are already set back to normal, a defender should be green, an attacker red:


Here's another one, the red one is the attacking dummy, the blue one reacts with a vertical strike to beat away the horizonal attack slash:



No collision detection at all, just checking states, speed and attack progress.


My project Schlacht um Kyoto - Das Samurai Browsergame! (sorry, german only)