Using Multibranches and a somewhat similar scoring system as Utility AI, I've created my own decision making system for the AI to be able to switch between states based on factors in the world or variables on the AI itself.
Basically, we have a bunch of functions that are outputting a score based on the action we want to take. This score is created by setting a based score, then adding to it depending on variables or distances to enemies or objects.
Then you feed the scores into an array and constantly pull the highest score and change the Enumeration value depending on the score returned. This Enumeration value then determine which actual action/function/event the AI will do.
I'm very happy with how this is set up and working and I will definitely continue to evolve the decisions/scores/actions in the future.