мне вот интересно откуда там ошибка могла вылезти.
Я не понимаю из скрипта, куда Вы этих гидр призываете... Скрипт, выходит, сам определяет ближайшее свободное пространство возле главной гидры? Как-то я не уверен, что в 100% случаев это будет происходить корректно.
Ну а так вроде нормально выглядит...