So that means cover would work as follows:
Set several "cover-places" in the level.
A cover point traces the nearest entities of both parties, party A and party B.
If an cover-place cannot trace any entity of party B, but can trace an entity of party A, then the cover-place turn into an potential cover-place for the specific entity of party A (the nearest one) in relation to the nearest unseen entity of party B , vise versa.
Now an entity (if it now wants to move to the nearest cover-place) depending on it's party, will move to the nearest potential cover-place.
process looped.
Is that correct?
If yes, I will try to create that and share what ever I throw together.
It will probably be ugly and silently scream "kill me!...", but it should work