From 129edaa22f4adeea8bc85127c9fd98407b98e7e0 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Wed, 11 Nov 2026 14:18:10 +0000 Subject: [PATCH] Confirm fn_19636 (CNavigationManager::RouteToSavedTarget) Batch #17159 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_19636 CNavigationManager::RouteToSavedTarget: logic confirmed by peer review (already on main) Peer-reviewed-by: ragnarok-clanker, Yommy, Toshiro Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Contents/Achievement/AchievementMgr.cpp | 2 ++ Source/Contents/Actors/ActorNameDirectory.cpp | 2 ++ Source/Contents/Actors/MercenaryAI.cpp | 2 ++ Source/Contents/Messenger/MessengerMember.cpp | 3 +++ Source/Contents/Navigation/NavigationDestinations.cpp | 2 ++ Source/Contents/Navigation/NavigationRoute.cpp | 3 +++ Source/Contents/Party/RegisterPartyAsyncWork.cpp | 2 ++ Source/Contents/Repute/ReputeMgr.cpp | 3 +++ Source/Contents/Store/MCStoreInfoBackup.cpp | 2 ++ Source/Contents/UserData/CharacterConfigSave.cpp | 3 +++ Source/Render/Text/EmbedFont.cpp | 2 ++ Source/UI/Items/UIItemReformWnd.cpp | 2 ++ Source/UI/Items/UILapineBoxWnd.cpp | 1 + Source/UI/Text/TextMarkup.cpp | 2 ++ Source/UI/Text/UITagTextViewer.cpp | 2 ++ 15 files changed, 33 insertions(+) diff --git a/Source/Contents/Achievement/AchievementMgr.cpp b/Source/Contents/Achievement/AchievementMgr.cpp index 71524cc10..ffee2ba09 100644 --- a/Source/Contents/Achievement/AchievementMgr.cpp +++ b/Source/Contents/Achievement/AchievementMgr.cpp @@ -19,6 +19,8 @@ extern "C" { #include #include +extern template int std::_Traits_compare>(const char*, std::size_t, const char*, std::size_t) noexcept; + // GLOBAL: gl_24856 CAchievementMgr* g_achievementMgr; diff --git a/Source/Contents/Actors/ActorNameDirectory.cpp b/Source/Contents/Actors/ActorNameDirectory.cpp index 3bcb1c175..8f716585c 100644 --- a/Source/Contents/Actors/ActorNameDirectory.cpp +++ b/Source/Contents/Actors/ActorNameDirectory.cpp @@ -2,6 +2,8 @@ #include +extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; + using ActorNameCardTree = std::_Tree, std::allocator>, false>>; diff --git a/Source/Contents/Actors/MercenaryAI.cpp b/Source/Contents/Actors/MercenaryAI.cpp index d27776ae4..2a3bf9507 100644 --- a/Source/Contents/Actors/MercenaryAI.cpp +++ b/Source/Contents/Actors/MercenaryAI.cpp @@ -33,6 +33,8 @@ extern "C" { #include #include +extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; + namespace { struct SkillOwnerPacket { diff --git a/Source/Contents/Messenger/MessengerMember.cpp b/Source/Contents/Messenger/MessengerMember.cpp index d014f3225..cefdae4c0 100644 --- a/Source/Contents/Messenger/MessengerMember.cpp +++ b/Source/Contents/Messenger/MessengerMember.cpp @@ -49,6 +49,9 @@ #include #include +extern template std::string::basic_string(const std::string&); +extern template std::vector::vector(std::size_t, const unsigned char&, const std::allocator&); + namespace { #pragma pack(push, 1) struct MessengerRecordHeader { diff --git a/Source/Contents/Navigation/NavigationDestinations.cpp b/Source/Contents/Navigation/NavigationDestinations.cpp index d275e2f12..cff0a3690 100644 --- a/Source/Contents/Navigation/NavigationDestinations.cpp +++ b/Source/Contents/Navigation/NavigationDestinations.cpp @@ -2,6 +2,8 @@ #include +extern template std::string::basic_string(const std::string&); + // OFFSET: 0x00B974D0 // FUNCTION: fn_19599 bool CNavigationManager::LoadStates(std::vector packet) { diff --git a/Source/Contents/Navigation/NavigationRoute.cpp b/Source/Contents/Navigation/NavigationRoute.cpp index f63688c1d..1965dc71b 100644 --- a/Source/Contents/Navigation/NavigationRoute.cpp +++ b/Source/Contents/Navigation/NavigationRoute.cpp @@ -38,6 +38,9 @@ #include "Resource/MSGSTRINGID.h" #include "Network/Packets/PacketId.h" + +extern template std::string& std::string::operator=(std::string&&) noexcept; + namespace { // GLOBAL: gl_25136 int g_locationFrame = 1; diff --git a/Source/Contents/Party/RegisterPartyAsyncWork.cpp b/Source/Contents/Party/RegisterPartyAsyncWork.cpp index 44d0f46ec..3d54e1158 100644 --- a/Source/Contents/Party/RegisterPartyAsyncWork.cpp +++ b/Source/Contents/Party/RegisterPartyAsyncWork.cpp @@ -12,6 +12,8 @@ #include #include +extern template std::string& std::string::operator=(std::string&&) noexcept; + namespace { constexpr char sourceFile[] = "C:\\repositories\\RagnarokClient\\RagnarokClient\\Contents\\AdventurerAgency\\CRegisterPartyAsyncWork.cpp"; diff --git a/Source/Contents/Repute/ReputeMgr.cpp b/Source/Contents/Repute/ReputeMgr.cpp index 01ef2b41a..9e854e1b0 100644 --- a/Source/Contents/Repute/ReputeMgr.cpp +++ b/Source/Contents/Repute/ReputeMgr.cpp @@ -15,6 +15,9 @@ #include #include +extern template std::vector::vector(const std::vector&); +extern template std::vector::~vector(); + extern "C" void JsonDestroy(); struct JsonValueCopy { diff --git a/Source/Contents/Store/MCStoreInfoBackup.cpp b/Source/Contents/Store/MCStoreInfoBackup.cpp index ee92eb4a2..1376f7691 100644 --- a/Source/Contents/Store/MCStoreInfoBackup.cpp +++ b/Source/Contents/Store/MCStoreInfoBackup.cpp @@ -13,6 +13,8 @@ #include #include +extern template std::vector::~vector(); + // OFFSET: 0x00605BF0 // FUNCTION: fn_04226 CMCStoreInfoBackup::CMCStoreInfoBackup() : loaded(false), pendingSaves(0), saveUrl(""), loadUrl(""), title(""), type(0) { diff --git a/Source/Contents/UserData/CharacterConfigSave.cpp b/Source/Contents/UserData/CharacterConfigSave.cpp index 5f89bc97a..5a313b91c 100644 --- a/Source/Contents/UserData/CharacterConfigSave.cpp +++ b/Source/Contents/UserData/CharacterConfigSave.cpp @@ -9,6 +9,9 @@ #include #include +extern template std::string& std::string::assign(const char*, std::string::size_type); +extern template std::vector::~vector(); + // OFFSET: 0x00DE0E40 // FUNCTION: fn_23474 int CSession::UseLevel(int id) const { diff --git a/Source/Render/Text/EmbedFont.cpp b/Source/Render/Text/EmbedFont.cpp index 89e6c18e9..9f8a63720 100644 --- a/Source/Render/Text/EmbedFont.cpp +++ b/Source/Render/Text/EmbedFont.cpp @@ -9,6 +9,8 @@ #include #include +extern template std::string::basic_string(const std::string&); + // GLOBAL: gl_24812 CEmbedFont* g_embedFont; diff --git a/Source/UI/Items/UIItemReformWnd.cpp b/Source/UI/Items/UIItemReformWnd.cpp index 4f5f6a5aa..029935348 100644 --- a/Source/UI/Items/UIItemReformWnd.cpp +++ b/Source/UI/Items/UIItemReformWnd.cpp @@ -38,6 +38,8 @@ #include #include +extern template std::vector::~vector(); + #pragma pack(push, 1) struct PACKET_CZ_ITEM_REFORM { /* 0000 */ std::int16_t packetType; diff --git a/Source/UI/Items/UILapineBoxWnd.cpp b/Source/UI/Items/UILapineBoxWnd.cpp index 7eabb5bbd..d9daa3b6c 100644 --- a/Source/UI/Items/UILapineBoxWnd.cpp +++ b/Source/UI/Items/UILapineBoxWnd.cpp @@ -29,6 +29,7 @@ #include #include +extern template std::vector::~vector(); namespace { struct RandomCombineItemPacket { diff --git a/Source/UI/Text/TextMarkup.cpp b/Source/UI/Text/TextMarkup.cpp index b01a1f06b..84909b2f0 100644 --- a/Source/UI/Text/TextMarkup.cpp +++ b/Source/UI/Text/TextMarkup.cpp @@ -6,6 +6,8 @@ #include #include +extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); + namespace { // INLINED bool Hex(unsigned char value) { diff --git a/Source/UI/Text/UITagTextViewer.cpp b/Source/UI/Text/UITagTextViewer.cpp index 7c0070551..e2e4614dc 100644 --- a/Source/UI/Text/UITagTextViewer.cpp +++ b/Source/UI/Text/UITagTextViewer.cpp @@ -8,6 +8,8 @@ #include "UI/Lists/UIScrollBar.h" #include "UI/Text/CreateLineInfo.h" +extern template std::string::basic_string(const char*); + // OFFSET: 0x0083E1B0 // FUNCTION: fn_10515 UITagTextViewer::UITagTextViewer()