You really opened my eyes with the IsTilePassable function (I didn't know it existed), and then immediately closed them by pointing out that it only considers static objects. I've been thinking for a while about moving monsters around the map, but I didn't know how to do it properly. It seems that RemoveObject and CreateMonster are the best options, as it places them correctly. The only thing I don't like about it is that we have to know all the monster's parameters in advance – for example, what its courage and mood were. But if the task is to move a completely random monster, these parameters are unknown to us.
upd: oh yes, and the most absurd option that I've come up with so far is: we call CreateMonster (or other similar functions), see in which point it appears, delete it, and move the original monster to that point. Voila.
Auto-translated