http://rlgclub.ru/forum/viewtopic.php?f=7&t=1276#p38321

Все мобы хранятся в списке.
Герой является мобом.
У каждого моба есть параметр Лояльность.
У героя он равен "Герой", у остальных может быть "враг", "нейтрал", "торговец" и т. д.
Цикл у меня идет не по мобам, а по времени. У каждого моба есть параметр скорость, у каждого действия своя стоимость. Цикл организован следующим образом:

1. Начало цикла
2. Пробегаем список мобов и получаем список мобов с энергией больше или равной нулю
3. Если список пуст переходим к пункту 8
4. Из полученного списка выбираем моба с максимальной энергией.
5. Передаем ход этому мобу. ИИ срабатывает в зависимости от параметра лояльность. Если лояльность "Герой" - передается управление игроку. Если "враг" - идет к герою, если его видит или атакует, если в пределах атаки. Если не видит, то просто рандомный ход. Если потерял из зоны видимости - идет на последнюю клетку, на которой видел героя.
6. После совершения хода уменьшаем параметр энергия на стоимость совершенного действия
7. Если список мобов с энкой больше равной нулю не пуст, то переходим к пункту 4
8. Всем мобам добавляем энергию в количестве, равном их параметру скорость.
9. Переходим к пункту 2