Рекомендую следовать такой логике:
FOR Friend.Units=EACH Units
;...Тут управляем всеми юнитами: своими и чужими...
;Боевой ИИ (вызывается не постоянно, а изредка,
;или даже вообще- только по необходимости. Тут показан простой пример.)
IF Friend\AIDelay<MILLISECS() THEN
Friend\AIDelay=MILLISECS()+MaxAIDelay
;Проверяем всех юнитов, вычленяя из списка врагов (или друзей и прочих нужных)
For Enemy.Units=EACH Units
IF Enemy\Nation<>Friend\Nation THEN
;...Тут проверяем, видит ли наш юнит врага, и задаём ему
;корректные задачи в соответствии с результатом...
ENDIF
NEXT
END IF
NEXT
P.S. Набирал в окне браузера, возможны опечатки.