MentЕсли использовать MoveHeroRealTime, этого достаточно для нападения, но RealTime есть RealTime, это будет прямо в любой момент происходить, во время хода игрока возможно, и убежать будет нельзя.
Обычный MoveHero возможно требует StartCombat, да. Хотя не уверен, но мне казалось, что сталкивался с таким.
Аттракторы не работают. Если поведение ваших героев не задаётся жёстко и вам надо, чтобы хотя бы иногда и неточно они нацеливались на что-то, аттрактор может прокатить, но для жёсткой цели его не надо использовать. И даже если он рабоьает нормально у картостроителя, то скорее всего всё равно найдутся игроки, у которых работать не будет.
мув можно без проблем делать только на ходе нужного игрока, конструкцией типа:
while 1 do
while not IsPlayerCurrent(нужный_игрок) do
sleep()
end
MoveHeroRealTime(...)
sleep()
end
а насчет CalcHeroMoveCost, была у меня задачка постоянно проверять расстояние между 2 героями, так вот эта функция в цикле вызывала лаги в игре, пришлось считать просто расстояние в клетках