diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 0e092bd..9fdfd1a 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2055,13 +2055,16 @@ BornPoint* Room::AllocBornPoint(Human* hum) } } } else { + std::vector free_point_list; for (auto& pair : born_point_hash_) { if (pair.second.player_num + pair.second.android_num < pair.second.thing_tpl->param1_int) { - born_point = &pair.second; - break; + free_point_list.push_back(&pair.second); } } + if (!free_point_list.empty()) { + born_point = free_point_list[rand() % free_point_list.size()]; + } } if (born_point) { IncBornPointHumanNum(born_point, hum);