Приказ Искать Наблюдать Помогать Прятаться STATIONARY -1 1 -1 1 ONGUARD -1 1 0 1 CLOSEPATROL 0 0 0 0 RNDPTPATROL 0 0 0 0 POINTPATROL 0 0 0 0 FARPATROL 0 0 0 0 ONCALL 0 0 1 -1 SEEKENEMY 1 -1 0 -1 Поведение Искать Наблюдать Помогать Прятаться DEFENSIVE -1 1 0 1 BRAVESOLO 1 -1 -1 -1 BRAVEAID 1 -1 1 -1 CUNNINGSOLO 0 0 -1 1 CUNNINGAID 0 0 1 1 AGGRESSIVE 1 0 0 -1 Особенность поведения определяется построчным сложением коэффициентов Искать Наблюдать Помогать Прятаться STATIONARY -1 1 -1 1 DEFENSIVE -1 1 0 1 Итог: -2 2 -1 2 Алгоритм циклически сравнивает между собой итоги в последовательности Искать, Наблюдать, Помогать, Прятаться, выполняя в первую очередь действие с наибольшим значением. Ещё на результат влияет мораль, но я не буду здесь это описывать, из-за ненужной для понимания возросшей вариативности. Если действие по каким-то причинам невыполнимо, ему назначается коэффициент игнорирования -99 В приведённом примере бот сначала попытается остаться на месте и ждать появление противника, чтобы его перехватить. Если по каким-то причинам это действие невыполнимо (не за кем наблюдать), он попробует найти новое место укрытия, если есть от кого прятаться. Если укрытие просчитать не сможет, попробует просчитать, кому нужна помощь, и попрётся помогать. И в последнюю очередь уже пойдёт искать противника в пределах действия разрешённого поводка, если ничего другое просчитать не удалось.