MoveHero -- хитрая вообще такая вещь. Он может не работать, если точка предназначения у героя находится на "зелёной" клетке. Пример: в Гномании не получилось заставить с помощью этой функции напасть героями на гарнизон. Делал так: посылал на соседнюю клетку, а там стоит регион, и для него прописан триггер:
function Gar(hero)
if hero=="bla-bla" then
MakeHeroInteractWithObject("bla-bla","Garnison");
end;
end;