How do I create realistic AI that use cover and are aware of the player??

I’ve been working on a project for a few weeks now and I have created some basic AI using blackboard and behavior trees. Currently the AI will walk up and get in range of you then start shooting but I’m trying to create a more realistic approach to the AI combat.

I want to make the AI be able to:

  1. Detect if they are in danger or if other AI are in danger. Then proceed to find cover if they are in danger.
  2. They need to find and shoot from cover when they are in danger.
  3. Enemies need to not stick on top of each other and have their own path.
  4. AI needs to determine if a point of cover is taken already or if an AI pawn is already heading towards it

Looking for where to start on researching on this. Have looked through a lot of video tutorials as well as forums. Looking to do something similar to this:

Very cool video. It appears a lot of this is using the EQS system. I am guessing the cluster of enemies are used as one of the queried context and returns a score based off of distance, visibilty, and maybe dot in relationship to the group. The AI seeks cover that is available. When the cover point is set, the BT can run a check to see if any actor is using the cover area and if so find another area from the eqs. Once behind cover another eqs can run and find enemies with x distance. if they are close set a pawn to attack and then attack pawn. Check if pawn is still alive/valid. keep attacking. If enemy retreats, do you chase or go back to hiding behind cover. The system will grow and grow. Just start simple and build. Check out the UE4 Game ready AI training on their your tube channel.