Здравствуйте
Пара вопросов по скрипту вашему: на поле боя не может быть существа с именем "Priest", равно как и Osillian (если это переменная, в которой хранится верное имя, тогда норм, а если вы забыли кавычки, то читайте дальше)
Все существа имеют составное скриптовое имя вида "координаты+айди+число", и это имя сохраняется в первый аргумент хука. В вашем случае — переменную unit. А "Priest" и "Osillian" на поле боя нет
Напишите хук хода защищающегося героя, внутри сделайте проверку:
for n, creature in GetDefenderCreatures() do
local id = GetCreatureType(creature)
if id == CREATURE_ARCHER then
local targets = GetAttackerCreatures()
chosen_target = targets[random(length(targets)+1]
-- действия со стрелком creature и целью chosen_target
end
end
Функцию random нужно написать заново, так как стандартная не работает. Рандомайзер можно взять из Эха Пустоты от RedHeavenHero, если он не против, или написать самому.