diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index 749fc9f2..c267a444 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -503,6 +503,12 @@ void Incubator::ShowHand() glm::vec3 point = glm::vec3(room->GetGasData().new_area_meta->GetLastArea()->x1(), 6.0f, room->GetGasData().new_area_meta->GetLastArea()->y1()); + { + glm::vec3* safe_point = mt::SafeAreaSafePoint::RandPoint(room->GetGasData().new_area_meta->type()); + if (safe_point) { + point = *safe_point; + } + } Global::Instance()->verify_set_pos = 1; hum->GetMutablePos().FromGlmVec3(point); Global::Instance()->verify_set_pos = 0; diff --git a/server/gameserver/mt/SafeAreaSafePoint.cc b/server/gameserver/mt/SafeAreaSafePoint.cc index b8673043..da80a3be 100644 --- a/server/gameserver/mt/SafeAreaSafePoint.cc +++ b/server/gameserver/mt/SafeAreaSafePoint.cc @@ -23,7 +23,7 @@ namespace mt { } - glm::vec3* SafeAreaSafePoint::RandPoint(int type) const + glm::vec3* SafeAreaSafePoint::RandPoint(int type) { auto itr = _type_safe_points_hash.find(type); return itr != _type_safe_points_hash.end() && !itr->second.empty() ? diff --git a/server/gameserver/mt/SafeAreaSafePoint.h b/server/gameserver/mt/SafeAreaSafePoint.h index 5babc6b8..516b7f1a 100644 --- a/server/gameserver/mt/SafeAreaSafePoint.h +++ b/server/gameserver/mt/SafeAreaSafePoint.h @@ -13,7 +13,7 @@ namespace mt void Init1(); static void StaticPostInit(); - glm::vec3* RandPoint(int type) const; + static glm::vec3* RandPoint(int type); private: static std::map> _type_safe_points_hash;