Хм... Не знаю, но, делая карты для одиночной игры, всегда ставлю sleep() после создания чего-либо (монстра, каравана, и т.д.) или после постановки героя на карту. Иначе следующая функция не видит созданный объект и вызывает ошибку, причём всегда. Многие функции так себя ведут, а, может, и все.