We'll probably face at some point the need of a state machine. I see two options
Finite state machines - Which we can implement ourselves or use a third party library
Behavior tree - I suggest this library: https://github.com/BehaviorTree/BehaviorTree.CPP. This is mostly used in robotics and in video games (for NPC behavior for example), which is a "replacement" of FSM due to its modularity and asynchronous architecture.
We'll probably face at some point the need of a state machine. I see two options