Script Testの5行目
if(temp!=self)&&(nd>distance_to_point(temp.x,temp.y))
のselfをself.idとすると、あちこち飛ぶようになりました。

selfはインスタンスidではないようですね。
『自分自身だけを示す特別なオブジェクトの値』と思ったほうがいいみたいです。
ちなみに、数値自体はself は -1、other は -2 が使われているようです。