You should definitely take a look on behavior trees. In most cases they are much cleaner solution than state machines, and there are tons of documentation, resources and assets available. They are also built-in solution in many game engines, such as UE4.
https://docs.unrealengine.com/en-US/Engine/ArtificialIntelligence/BehaviorTrees/...