From cf3c0f7d0dd715ff16cab411ce0db51b040e4c7c Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Wed, 11 Nov 2026 14:39:54 +0000 Subject: [PATCH] Decompile 5 functions in Source/Contents/Party/ChangePartyMasterAsyncWork.cpp, Source/Contents/Party/LoadMyPartyAsyncWork.cpp, ... Batch #17209 by eAthena: 0 byte-identical, 5 confirmed by peer review. - fn_03682 CChangePartyMasterAsyncWork::Complete: logic confirmed by peer review - fn_03689 CLoadMyPartyAsyncWork::Complete: logic confirmed by peer review - fn_03715 CStopRecruitingAsyncWork::Complete: logic confirmed by peer review - fn_03920 CCharacterLinkedUserDataLoadAsyncWork::Complete: logic confirmed by peer review - fn_03927 CCharacterLinkedUserDataMgr::CompleteLoad: logic confirmed by peer review Peer-reviewed-by: alisonrag, cremane, br4yan Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- .../Party/ChangePartyMasterAsyncWork.cpp | 3 +- .../Contents/Party/LoadMyPartyAsyncWork.cpp | 3 +- .../Party/StopRecruitingAsyncWork.cpp | 3 +- .../Contents/UserData/CharacterConfigLoad.cpp | 37 +++++++++++-------- .../CharacterLinkedUserDataLoadAsyncWork.cpp | 3 +- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/Source/Contents/Party/ChangePartyMasterAsyncWork.cpp b/Source/Contents/Party/ChangePartyMasterAsyncWork.cpp index 3f88bfa97..6208d473e 100644 --- a/Source/Contents/Party/ChangePartyMasterAsyncWork.cpp +++ b/Source/Contents/Party/ChangePartyMasterAsyncWork.cpp @@ -108,7 +108,8 @@ bool CChangePartyMasterAsyncWork::Execute() { // OFFSET: 0x005CE090 // FUNCTION: fn_03682 void CChangePartyMasterAsyncWork::Complete() { - g_adventurerAgencyMgr->CompleteChangeMaster(this->m_diagnostic, this->m_response); + CAdventurerAgencyMgr* manager = g_adventurerAgencyMgr; + manager->CompleteChangeMaster(this->m_diagnostic, this->m_response); } template void std::deque::push_back(CChangePartyMasterAsyncWork*&&); diff --git a/Source/Contents/Party/LoadMyPartyAsyncWork.cpp b/Source/Contents/Party/LoadMyPartyAsyncWork.cpp index 309f183bc..6fec35254 100644 --- a/Source/Contents/Party/LoadMyPartyAsyncWork.cpp +++ b/Source/Contents/Party/LoadMyPartyAsyncWork.cpp @@ -90,7 +90,8 @@ bool CLoadMyPartyAsyncWork::Execute() { // OFFSET: 0x005CF8F0 // FUNCTION: fn_03689 void CLoadMyPartyAsyncWork::Complete() { - g_adventurerAgencyMgr->CompleteMyParty(this->m_diagnostic, this->m_response); + CAdventurerAgencyMgr* manager = g_adventurerAgencyMgr; + manager->CompleteMyParty(this->m_diagnostic, this->m_response); } template void std::deque::push_back(CLoadMyPartyAsyncWork*&&); diff --git a/Source/Contents/Party/StopRecruitingAsyncWork.cpp b/Source/Contents/Party/StopRecruitingAsyncWork.cpp index a85c121ba..9d1189df1 100644 --- a/Source/Contents/Party/StopRecruitingAsyncWork.cpp +++ b/Source/Contents/Party/StopRecruitingAsyncWork.cpp @@ -91,7 +91,8 @@ bool CStopRecruitingAsyncWork::Execute() { // OFFSET: 0x005D64B0 // FUNCTION: fn_03715 void CStopRecruitingAsyncWork::Complete() { - g_adventurerAgencyMgr->CompleteStopRecruiting(this->m_diagnostic, this->m_response); + CAdventurerAgencyMgr* manager = g_adventurerAgencyMgr; + manager->CompleteStopRecruiting(this->m_diagnostic, this->m_response); } template void std::deque::push_back(CStopRecruitingAsyncWork*&&); diff --git a/Source/Contents/UserData/CharacterConfigLoad.cpp b/Source/Contents/UserData/CharacterConfigLoad.cpp index 930e35c67..b702497c5 100644 --- a/Source/Contents/UserData/CharacterConfigLoad.cpp +++ b/Source/Contents/UserData/CharacterConfigLoad.cpp @@ -20,31 +20,36 @@ void CCharacterLinkedUserDataMgr::CompleteLoad( Json::Value root; Json::Reader reader; - const std::string document(response.c_str()); - if (!reader.parse(document, root, true)) { + if (!reader.parse(std::string(response.c_str()), root, true)) { return; } - const int type = root["Type"].asInt(); + switch (root["Type"].asInt()) { + case 1: { + this->LoadUseSkillLevels(root["data"]); + this->LoadHomunculusSkillLevels(root["data"]); - if (type == 4) { + { + const Json::Value comparison = root["data"]["ItemComparison"]; + g_serviceOptions.Set(264, comparison.isNull() ? true : comparison.asBool()); + } + + { + const Json::Value sorting = root["data"]["SortPrivateTab"]; + g_sortPrivateTab = sorting.isNull() ? false : sorting.asBool(); + } + + this->LoadNormalItemSlots(root["data"]); + this->m_loaded = true; + break; + } + case 4: LoadSkillUseLevelRegistry(); g_session.SetOption(7, 1, 0); g_session.SetOption(8, 1, 0); this->m_loaded = true; - } else if (type == 1) { - this->LoadUseSkillLevels(root["data"]); - this->LoadHomunculusSkillLevels(root["data"]); - - const Json::Value comparison = root["data"]["ItemComparison"]; - g_serviceOptions.Set(264, comparison.isNull() ? true : comparison.asBool()); - - const Json::Value sorting = root["data"]["SortPrivateTab"]; - g_sortPrivateTab = sorting.isNull() ? false : sorting.asBool(); - - this->LoadNormalItemSlots(root["data"]); - this->m_loaded = true; + break; } this->m_accountId = accountId; diff --git a/Source/Contents/UserData/CharacterLinkedUserDataLoadAsyncWork.cpp b/Source/Contents/UserData/CharacterLinkedUserDataLoadAsyncWork.cpp index a5ed4f3ec..f6a4cb28e 100644 --- a/Source/Contents/UserData/CharacterLinkedUserDataLoadAsyncWork.cpp +++ b/Source/Contents/UserData/CharacterLinkedUserDataLoadAsyncWork.cpp @@ -90,7 +90,8 @@ bool CCharacterLinkedUserDataLoadAsyncWork::Execute() { // OFFSET: 0x005E51A0 // FUNCTION: fn_03920 void CCharacterLinkedUserDataLoadAsyncWork::Complete() { - g_characterLinkedUserDataMgr->CompleteLoad( + CCharacterLinkedUserDataMgr* manager = g_characterLinkedUserDataMgr; + manager->CompleteLoad( this->m_diagnostic, this->m_accountId, this->m_characterId, this->m_accountName, this->m_response ); }