I would go for another solution.
My suggestion is to create a new actor (let’s call it combo) with two members:
moves: an array for the combo moves, storing ints associated with each button
index: integer telling which is the next button in the combo (default to 0, so it points to the first item in the array)
for each character you would define an array of combo class and instantiate all of them into a combo reference array at character construction. (this is useful if you define a bunch of combo derived actors which can be inserted in this array)
each time a button is pressed you check for each element in the combo reference array. if it matches the move in the combo pointed by it’s index, you increase index (if index equals the number of moves in the combo, do the combo and set index to 0). if the move doesn’t match with the next move in the combo just set index to 0.
this may sound a bit confusing. feel free to contact me for further help on this topic