I’ve extracted the basis for how I do it, I don’t use the See events.
When I want my Bot to move or look for a target they search on each class then add to an array and randomly choose a bot at the end. With a bot selected you can then gets it location and use moveto or fire or whatever … you’d add a sleep or get them to do another action if they cannot select a target.
ForEach AllActors(class'MyClassOfBot', zp)
{
if (zp.IsAliveAndWell())
{
farAway = vsize(Pawn.Location - zp.Location);
if (farAway < SightDistance)
{
i+=1;
PList.AddItem(zp);
}
if (farAway < MelleeDistance)
{
m+=1;
MelleeList.AddItem(zp);
}
}
}
// repeat above for each class you want to find
// then at end the end randomly choose 1 from an array and get its location
// and use that location to get the Bot to move to it