Вы мне просто глаза открыли функцией IsTilePassable (не знал что такая есть) а потом сразу же закрыли, указав что она учитывает только статические объекты. Тоже давненько подумываю над перемещением монстров по карте, но все не знал как это сделать нормально. Похоже что лучше RemoveObject и CreateMonster ничего не найдешь, уж она ставит правильно. Единственное что мне в ней не нравится, то что мы должны знать заранее все параметры монстра - например какие у него были courage и mood, а если стоит задача перемещать абсолютно случайного монстра - эти параметры нам неизвестны.
upd: ах, ну да, и самый бредовый вариант который мне пока приходил - вызываем CreateMonster (можно и другие похожие функции), смотрим в какой точке он появился, удаляем, перемещаем исходного монстра в эту точку. Вуаля.