From bce4341fac239f78c8ee76ff4b54d4eb8d69ec33 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Fri, 30 Oct 2026 04:41:46 +0000 Subject: [PATCH] Decompile 3 functions in Source/UI/Acceptance/UIChooseSellBuyWnd.cpp, Source/UI/Dialogs/UIDisconnectedServerMsgWnd.h, ... Batch #4738 by eAthena: 0 byte-identical, 3 confirmed by peer review. - fn_12337 UIComboBoxIDWnd::SendMsg: logic confirmed by peer review - fn_12338 UIComboBoxWnd::SendMsg: logic confirmed by peer review - fn_12340 UIDisconnectedServerMsgWnd::SendMsg: logic confirmed by peer review Peer-reviewed-by: alisonrag, Snow, Qwenkler3.8 Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/UI/Acceptance/UIChooseSellBuyWnd.cpp | 30 +++++++++++++++++++ .../UI/Dialogs/UIDisconnectedServerMsgWnd.h | 1 + Source/UI/Lists/UIComboBoxWnd.h | 3 ++ 3 files changed, 34 insertions(+) diff --git a/Source/UI/Acceptance/UIChooseSellBuyWnd.cpp b/Source/UI/Acceptance/UIChooseSellBuyWnd.cpp index f95130b8..f8de8843 100644 --- a/Source/UI/Acceptance/UIChooseSellBuyWnd.cpp +++ b/Source/UI/Acceptance/UIChooseSellBuyWnd.cpp @@ -1366,6 +1366,36 @@ void UIComboBoxWnd::Resize(int width, int height) { this->m_list->Invalidate(); } +// OFFSET: 0x008F9570 +// FUNCTION: fn_12337 +int UIComboBoxIDWnd::SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) { + if (this->m_owner && message == 39) { + return this->m_owner->SendMsg(this, 39, argument1, argument2, argument3, argument4); + } + return this->m_list->SendMsg(sender, message, argument1, argument2, argument3, argument4); +} + +// OFFSET: 0x008F95B0 +// FUNCTION: fn_12338 +int UIComboBoxWnd::SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) { + if (this->m_owner && message == 39) { + return this->m_owner->SendMsg(this, 39, argument1, argument2, argument3, argument4); + } + return this->m_list->SendMsg(sender, message, argument1, argument2, argument3, argument4); +} + +// OFFSET: 0x008F97D0 +// FUNCTION: fn_12340 +int UIDisconnectedServerMsgWnd::SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) { + if (message != 6) { + return UIFrameWnd::SendMsg(sender, message, argument1, argument2, argument3, argument4); + } + if (argument1 == 184) { + g_modeMgr.GetGameMode()->SendMsg(141, 0, 0, 0, 0); + } + return 0; +} + // OFFSET: 0x008F6750 // FUNCTION: fn_12322 void UISayDialogWnd::Resize(int width, int height) { diff --git a/Source/UI/Dialogs/UIDisconnectedServerMsgWnd.h b/Source/UI/Dialogs/UIDisconnectedServerMsgWnd.h index 19359d22..3a6c1b0e 100644 --- a/Source/UI/Dialogs/UIDisconnectedServerMsgWnd.h +++ b/Source/UI/Dialogs/UIDisconnectedServerMsgWnd.h @@ -6,6 +6,7 @@ class UIDisconnectedServerMsgWnd : public UIFrameWnd { public: void Paint() override; + int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override; }; #endif diff --git a/Source/UI/Lists/UIComboBoxWnd.h b/Source/UI/Lists/UIComboBoxWnd.h index 5c9e38b3..61005844 100644 --- a/Source/UI/Lists/UIComboBoxWnd.h +++ b/Source/UI/Lists/UIComboBoxWnd.h @@ -12,6 +12,7 @@ public: void Resize(int width, int height) override; void Paint() override; + int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override; void SetOwner(UIWindow* owner); }; @@ -19,9 +20,11 @@ public: class UIComboBoxIDWnd : public UIFrameWnd { public: /* 00B4 */ UIListBox* m_list; + /* 00B8 */ UIWindow* m_owner; void Resize(int width, int height) override; void Paint() override; + int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override; }; #endif