I’m not the developer of project but I think I can help with some of these problems.
The simplest way is to use the get all actors of class node and use the get path length node to see if they are closer to your actor than the previous (always storing the closest one and disregarding if it is further away). Note does not account for line of sight. but if the length is closer, you can then do a ray trace to see if they are visible.
you can use move to actor within a radius if you are attacking. Fleeing you can use move to location or position an actor and move to it. The problem with just moving the character away is that it might move off the nav mesh which essentially moves it out of bounds. as long as your point is on the nav mesh, it should move to it. If it is unreachable, chances are, your character is cornered and should fight for their life.
a random float with a delay node does the trick for reaction time. if it’s when they first notice the enemy, then the they should not be in sync when firing either as each characters AI would have a different float generated.
You could use a sphere overlap actors on your AI bots to act as a trigger. Filter the comando’s class so only they trigger it.
when I play an anim montage, it returns a float. that is the length of the animation playing. Storing that value, I check delta time + time since animation started. If it is greater than the animation length then it is alright to play again. Otherwise, add delta time to time since animation started. and repeat next tick. You can also add a multiplier (mine is 0.8) on the returned float so it gets 80% of the way through the animation before it can start another one. helps blend the animations a bit better.
I’m having trouble with one myself. It seems to get stuck in the attack state for me. see my previous post.
The rest is kind of out of my domain since it’s not my project. Let me know if you need clarification on any of .