a better approach than state machine for character controller

hi, i’m trying to create an advanced character controller for my player, i tried state machine using interface to achieve a better way to change player state
but i ran into a problem : let’s say while player jumping received a damage that killed him
in this case the player is both dead and falling
dead state limits any kind of movement, the player would remain dead in air
this case, i can just put a bool if Dead and not Grounded then apply gravity
but there is so many cases like this, and patching them like that creates the problem that i’m trying to avoid using state machine in the first place
simply i’ looking for a better way of managing more than one state at a time with limitation to what states can work together
and sorry for my bad english

You need more than one state machine or a non finite state one. For a FSM to work there must only be one state active at a time, if there are 2 things that can happen at the same time they can not be in a FSM together. You either need need a second FSM or a non finite state machine. You don’t want to avoid a state machine, you want to use a different kind.

What I did to avoid adding bools and ifs was create an informal fuzzy pattern matching state machine. I created an abstract class condition with a virtual function check that returns a bool. Then I can make anything a condition and my actions have a list of conditions and my character has a list of actions. Then I just sort the list by the most conditions and loop though the 1st match I break out of the loop and set a bool canAct, the bool is reset with an invoke call.