MoveHero is quite a tricky thing. It might not work if the destination point for the hero is on a "green" cell. For example, in Gnomania, I couldn't get the heroes to attack a garrison using this function. I did it like this: I sent them to an adjacent cell, and there's a region there, and a trigger is defined for it:
function Gar(hero)
if hero=="bla-bla" then
MakeHeroInteractWithObject("bla-bla","Garnison");
end;
end;
Does this function only work if the hero is next to the object?
If not, then you don't even need to set up a region and trigger.