Decompile 18 functions in Source/UI/Dialogs/UIPasswordWnd.h, Source/UI/Edit/UIEditCtrl.cpp, ...

Batch #8662 by eAthena: 0 byte-identical, 18 confirmed by peer review.

- fn_13215 UIItemDropCntWnd::UIItemDropCntWnd: logic confirmed by peer review
- fn_13216 UIItemPurchaseWnd::UIItemPurchaseWnd: logic confirmed by peer review
- fn_13217 UIItemSellWnd2::UIItemSellWnd2: logic confirmed by peer review
- fn_13218 UIItemSellWnd::UIItemSellWnd: logic confirmed by peer review
- fn_13219 UIItemShopWnd2::UIItemShopWnd2: logic confirmed by peer review
- fn_13220 UIItemShopWnd::UIItemShopWnd: logic confirmed by peer review
- fn_13221 UIItemStoreFindWnd::UIItemStoreFindWnd: logic confirmed by peer review
- fn_13222 UIItemStoreSubWnd::UIItemStoreSubWnd: logic confirmed by peer review
- fn_13223 UIItemStoreWnd::UIItemStoreWnd: logic confirmed by peer review
- fn_13224 UIItemWnd::UIItemWnd: logic confirmed by peer review
- fn_13225 UIMerchantItemMyShopWnd::UIMerchantItemMyShopWnd: logic confirmed by peer review
- fn_13227 UIMerchantItemPurchaseWnd::UIMerchantItemPurchaseWnd: logic confirmed by peer review
- fn_13228 UIMerchantItemShopWnd::UIMerchantItemShopWnd: logic confirmed by peer review
- fn_13229 UIMerchantItemWnd::UIMerchantItemWnd: logic confirmed by peer review
- fn_13230 UIMerchantMirrorItemWnd::UIMerchantMirrorItemWnd: logic confirmed by peer review
- fn_13232 UINoticeMessageBox_LockSellItem::UINoticeMessageBox_LockSellItem: logic confirmed by peer review
- fn_13238 UIItemStoreWnd::~UIItemStoreWnd: logic confirmed by peer review
- fn_13239 UIItemWnd::~UIItemWnd: logic confirmed by peer review

Peer-reviewed-by: youko, dori
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
ragnarok-clanker 2026-10-31 20:07:56 +00:00
commit f7ec26cb5e
20 changed files with 243 additions and 14 deletions

View file

@ -11,6 +11,8 @@ struct UIEditContext;
class UIItemDropCntWnd : public UIFrameWnd {
public:
UIItemDropCntWnd(UIWindowContext& windows, UIFrameContext& frames);
/* 00B4 */ UIEditCtrl* m_edit;
/* 00B8 */ std::uint32_t unknown_00B8;

View file

@ -119,6 +119,7 @@ struct ClientItemLists {
void RemoveItem1760(const ITEM_INFO& item);
void AddItem1730(const ITEM_INFO& item);
void ReduceItem1718(const ITEM_INFO& item);
void ClearItems1760();
};
struct SessionItemLists {
@ -5082,6 +5083,141 @@ UIItemBaseWnd::UIItemBaseWnd(UIWindowContext& windowContext, UIFrameContext& fra
this->scroll = 0;
}
// OFFSET: 0x0096E750
// FUNCTION: fn_13215
UIItemDropCntWnd::UIItemDropCntWnd(UIWindowContext& windows, UIFrameContext& frames) : UIFrameWnd(windows, frames, 0) {
}
// OFFSET: 0x0096E7B0
// FUNCTION: fn_13216
UIItemPurchaseWnd::UIItemPurchaseWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->hovered = -1;
this->unknown_00B8 = 1;
this->unknown_00FC = 0;
this->saved = nullptr;
}
// OFFSET: 0x0096E830
// FUNCTION: fn_13217
UIItemSellWnd2::UIItemSellWnd2(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->hovered = -1;
this->unknown_00B8 = 1;
this->saved = nullptr;
this->unknown_00FC = 0;
}
// OFFSET: 0x0096E8B0
// FUNCTION: fn_13218
UIItemSellWnd::UIItemSellWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->hovered = -1;
this->unknown_00B8 = 1;
this->saved = nullptr;
}
// OFFSET: 0x0096E930
// FUNCTION: fn_13219
UIItemShopWnd2::UIItemShopWnd2(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->hovered = -1;
this->showQuantity = 0;
this->unknown_00F8 = 0;
this->unknown_00B8 = 1;
this->saved = nullptr;
this->unknown_0104 = 29;
this->unknown_0108 = 0;
}
// OFFSET: 0x0096E9D0
// FUNCTION: fn_13220
UIItemShopWnd::UIItemShopWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->hovered = -1;
this->showQuantity = 0;
this->unknown_00F8 = 0;
this->unknown_00B8 = 1;
this->saved = nullptr;
this->unknown_0104 = 29;
this->unknown_0108 = 0;
this->unknown_010C = 0;
}
// OFFSET: 0x0096EA80
// FUNCTION: fn_13221
UIItemStoreFindWnd::UIItemStoreFindWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->saved = nullptr;
this->scrollBar = nullptr;
this->scroll = 0;
this->columns = 1;
this->visibleRows = 3;
this->unknown_00E4 = 0;
this->unknown_0120 = 18;
}
// OFFSET: 0x0096EB70
// FUNCTION: fn_13222
UIItemStoreSubWnd::UIItemStoreSubWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->saved = nullptr;
this->scrollBar = nullptr;
this->scroll = 0;
this->columns = 1;
this->visibleRows = 3;
this->unknown_00E4 = 0;
this->unknown_011C = 18;
}
// OFFSET: 0x0096EC60
// FUNCTION: fn_13223
UIItemStoreWnd::UIItemStoreWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->unknown_016C = 0;
this->unknown_0170 = 0;
this->unknown_0174 = 0;
this->unknown_0180 = 0;
this->showQuantity = 1;
this->unknown_00B8 = 1;
this->saved = nullptr;
this->unknown_0178 = 0;
this->unknown_017C = 0;
this->unknown_00F0 = 0;
for (int i = 0; i < 8; ++i) {
this->unknown_00F8[i] = 0;
this->tabs[i] = nullptr;
this->unknown_0120[i] = 0;
}
this->unknown_0140 = 0;
this->unknown_0188 = 0;
this->unknown_018C = 0;
this->unknown_0190 = 0;
}
// OFFSET: 0x0096ED90
// FUNCTION: fn_13224
UIItemWnd::UIItemWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->unknown_0124 = 0;
this->unknown_0128 = nullptr;
this->unknown_012C = 0;
this->resizer = nullptr;
this->scrollBar = nullptr;
this->saved = nullptr;
this->unknown_0100 = 0;
this->unknown_0104 = 0;
this->unknown_0108 = 0;
this->unknown_010C = 0;
this->scroll = 0;
this->unknown_00E4 = 0;
}
// OFFSET: 0x0096EE60
// FUNCTION: fn_13225
UIMerchantItemMyShopWnd::UIMerchantItemMyShopWnd(UIWindowContext& windows, UIFrameContext& frames, int value) : UIItemBaseWnd(windows, frames) {
this->unknown_0100 = value;
this->startTick = 0;
this->duration = 0;
this->actionButton = nullptr;
this->unknown_011C = 21;
this->unknown_00B8 = 1;
this->saved = nullptr;
this->shopOpen = 0;
this->unknown_010C = 0;
}
// OFFSET: 0x0096EF10
// FUNCTION: fn_13226
UIMerchantItemPurchaseMSGWnd::UIMerchantItemPurchaseMSGWnd(UIWindowContext& windowContext, UIFrameContext& frameContext)
@ -5095,3 +5231,61 @@ UIMerchantItemPurchaseMSGWnd::UIMerchantItemPurchaseMSGWnd(UIWindowContext& wind
this->m_controls = nullptr;
this->unknown_00D0 = 0;
}
// OFFSET: 0x0096EFC0
// FUNCTION: fn_13227
UIMerchantItemPurchaseWnd::UIMerchantItemPurchaseWnd(UIWindowContext& windows, UIFrameContext& frames, int value) : UIItemBaseWnd(windows, frames) {
this->unknown_0108 = value;
this->unknown_00B8 = 1;
this->unknown_00F8 = 0;
this->saved = nullptr;
this->hovered = -1;
reinterpret_cast<ClientItemLists*>(&g_session)->ClearItems1760();
this->unknown_00F0 = 0;
}
// OFFSET: 0x0096F060
// FUNCTION: fn_13228
UIMerchantItemShopWnd::UIMerchantItemShopWnd(UIWindowContext& windows, UIFrameContext& frames, int value) : UIItemBaseWnd(windows, frames) {
this->unknown_0108 = 0;
this->unknown_010C = value;
this->startTick = 0;
this->duration = 0;
this->unknown_00B8 = 1;
this->hovered = -1;
this->saved = nullptr;
this->unknown_00F0 = 0;
this->unknown_0118 = 21;
}
// OFFSET: 0x0096F110
// FUNCTION: fn_13229
UIMerchantItemWnd::UIMerchantItemWnd(UIWindowContext& windows, UIFrameContext& frames) : UIItemBaseWnd(windows, frames) {
this->unknown_00B8 = 1;
this->saved = nullptr;
}
// OFFSET: 0x0096F180
// FUNCTION: fn_13230
UIMerchantMirrorItemWnd::UIMerchantMirrorItemWnd(UIWindowContext& windows, UIFrameContext& frames, int value) : UIItemBaseWnd(windows, frames) {
this->unknown_00F4 = value;
this->unknown_00B8 = 1;
this->saved = nullptr;
}
// OFFSET: 0x0096F3A0
// FUNCTION: fn_13232
UINoticeMessageBox_LockSellItem::UINoticeMessageBox_LockSellItem(UIWindowContext& windows, UIFrameContext& frames) : UIFrameWnd(windows, frames, 0) {
this->startTick = timeGetTime();
this->duration = 2000;
}
// OFFSET: 0x0096FB70
// FUNCTION: fn_13238
UIItemStoreWnd::~UIItemStoreWnd() {
g_unknown_01738268 = 0;
}
// OFFSET: 0x0096FC10
// FUNCTION: fn_13239
UIItemWnd::~UIItemWnd() = default;

View file

@ -11,6 +11,7 @@ class UIStaticText;
class UIItemPurchaseWnd : public UIItemBaseWnd {
public:
UIItemPurchaseWnd();
UIItemPurchaseWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot10(int x, int y, std::intptr_t value) override;
void Slot11() override;
void Slot25(int x, int y) override;

View file

@ -10,6 +10,7 @@ struct WindowReplayRecorder;
class UIItemSellWnd : public UIItemBaseWnd {
public:
UIItemSellWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot11() override;
void Slot25(int x, int y) override;
void Slot26(int x, int y) override;

View file

@ -10,6 +10,7 @@ struct WindowReplayRecorder;
class UIItemSellWnd2 : public UIItemBaseWnd {
public:
UIItemSellWnd2(UIWindowContext& windows, UIFrameContext& frames);
void Slot10(int x, int y, std::intptr_t value) override;
void Slot11() override;
void Slot25(int x, int y) override;

View file

@ -14,6 +14,7 @@ class UIStaticText;
class UIItemShopWnd : public UIItemBaseWnd {
public:
UIItemShopWnd();
UIItemShopWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot11() override;
void Slot10(int x, int y, std::intptr_t value) override;
void Slot25(int x, int y) override;
@ -31,6 +32,9 @@ public:
/* 00F8 */ int unknown_00F8;
/* 00FC */ ItemShopWndInfo* saved;
/* 0100 */ int hovered;
/* 0104 */ int unknown_0104;
/* 0108 */ int unknown_0108;
/* 010C */ int unknown_010C;
};
#if defined(_WIN32) && !defined(_WIN64)

View file

@ -11,6 +11,7 @@ struct WindowReplayRecorder;
class UIItemShopWnd2 : public UIItemBaseWnd {
public:
UIItemShopWnd2(UIWindowContext& windows, UIFrameContext& frames);
void Slot11() override;
void Slot28(int x, int y) override;
void Slot32(int x, int y) override;
@ -26,6 +27,8 @@ public:
/* 00F8 */ int unknown_00F8;
/* 00FC */ WindowPlacement* saved;
/* 0100 */ int hovered;
/* 0104 */ int unknown_0104;
/* 0108 */ int unknown_0108;
};
#if defined(_WIN32) && !defined(_WIN64)

View file

@ -13,6 +13,7 @@ class UIStaticText;
class UIItemStoreFindWnd : public UIItemBaseWnd {
public:
UIItemStoreFindWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot28(int x, int y) override;
void Slot32(int x, int y) override;
void Slot10(int x, int y, std::intptr_t value) override;
@ -31,7 +32,8 @@ public:
/* 0100 */ unsigned char unknown_0100[0x14];
/* 0114 */ UIResizer* resizeHandle;
/* 0118 */ UIStaticText* title;
/* 011C */ unsigned char unknown_011C[0x8];
/* 011C */ unsigned char unknown_011C[0x4];
/* 0120 */ int unknown_0120;
/* 0124 */ std::string unknown_0124;
/* 013C */ std::string searchText;
/* 0154 */ ItemStoreFindWndInfo* saved;

View file

@ -12,6 +12,7 @@ class UIStaticText;
class UIItemStoreSubWnd : public UIItemBaseWnd {
public:
UIItemStoreSubWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot28(int x, int y) override;
void Slot32(int x, int y) override;
void Slot10(int x, int y, std::intptr_t value) override;
@ -37,7 +38,10 @@ public:
/* 00F0 */ unsigned char unknown_00F0[0x20];
/* 0110 */ UIResizer* resizeHandle;
/* 0114 */ UIStaticText* title;
/* 0118 */ unsigned char unknown_0118[0x38];
/* 0118 */ unsigned char unknown_0118[0x04];
/* 011C */ int unknown_011C;
/* 0120 */ std::string unknown_0120;
/* 0138 */ std::string unknown_0138;
/* 0150 */ WindowPlacement* saved;
/* 0154 */ int tabIndex;
};

View file

@ -12,6 +12,8 @@ class UIStaticText;
class UIItemStoreWnd : public UIItemBaseWnd {
public:
UIItemStoreWnd(UIWindowContext& windows, UIFrameContext& frames);
__declspec(noinline) ~UIItemStoreWnd() override;
void Slot10(int x, int y, std::intptr_t value) override;
void Slot28(int x, int y) override;
void Slot32(int x, int y) override;
@ -26,10 +28,22 @@ public:
/* 00F8 */ unsigned char unknown_00F8[0x08];
/* 0100 */ UICheckBox* tabs[8];
/* 0120 */ int unknown_0120[8];
/* 0140 */ unsigned char unknown_0140[0x1C];
/* 0140 */ int unknown_0140;
/* 0144 */ std::string unknown_0144;
/* 015C */ UIStaticText* title;
/* 0160 */ unsigned char unknown_0160[0x04];
/* 0164 */ WindowPlacement* saved;
/* 0168 */ unsigned char unknown_0168[0x04];
/* 016C */ int unknown_016C;
/* 0170 */ int unknown_0170;
/* 0174 */ int unknown_0174;
/* 0178 */ int unknown_0178;
/* 017C */ int unknown_017C;
/* 0180 */ int unknown_0180;
/* 0184 */ unsigned char unknown_0184[0x04];
/* 0188 */ int unknown_0188;
/* 018C */ int unknown_018C;
/* 0190 */ unsigned char unknown_0190;
};
#if defined(_WIN32) && !defined(_WIN64)

View file

@ -12,6 +12,8 @@ class UITabControl;
class UIItemWnd : public UIItemBaseWnd {
public:
UIItemWnd();
UIItemWnd(UIWindowContext& windows, UIFrameContext& frames);
__declspec(noinline) ~UIItemWnd() override;
void Slot11() override;
void Slot10(int x, int y, std::intptr_t value) override;
void Slot18() override;
@ -33,8 +35,10 @@ public:
/* 0114 */ unsigned char unknown_0114[0x4];
/* 0118 */ UITabControl* tabs;
/* 011C */ UIWindow* optionBox;
/* 0120 */ unsigned char unknown_0120[0x8];
/* 0120 */ unsigned char unknown_0120[0x4];
/* 0124 */ int unknown_0124;
/* 0128 */ UIWindow* unknown_0128;
/* 012C */ int unknown_012C;
};
#if defined(_WIN32) && !defined(_WIN64)

View file

@ -25,10 +25,6 @@ public:
void Slot10(int x, int y, std::intptr_t value) override;
void Slot32(int x, int y) override;
int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override;
/* 0104 */ int unknown_0104;
/* 0108 */ int unknown_0108;
/* 010C */ int unknown_010C;
};
class UIParaResultWnd : public UIItemBaseWnd {

View file

@ -65,7 +65,6 @@ public:
void InitializeMailActions();
void RequestAllMailActions();
/* 012C */ unsigned char unknown_012C[0x4];
/* 0130 */ UIBmpRadioBtn* unknown_0130;
/* 0134 */ UIBmpRadioBtn* unknown_0134;
/* 0138 */ UIBmpRadioBtn* unknown_0138;

View file

@ -15,6 +15,7 @@ extern bool g_vendingSaleAlarm;
class UIMerchantItemMyShopWnd : public UIItemBaseWnd {
public:
UIMerchantItemMyShopWnd(UIWindowContext& windows, UIFrameContext& frames, int value);
void Slot11() override;
void Slot15(int width, int height) override;
void Slot19() override;
@ -33,7 +34,8 @@ public:
/* 0100 */ int unknown_0100;
/* 0104 */ UICheckBox* saleAlarm;
/* 0108 */ unsigned char shopOpen;
/* 0109 */ unsigned char unknown_0109[0x07];
/* 0109 */ unsigned char unknown_0109[0x03];
/* 010C */ int unknown_010C;
/* 0110 */ std::uint32_t startTick;
/* 0114 */ std::uint32_t duration;
/* 0118 */ UIBasicButton* actionButton;

View file

@ -11,6 +11,7 @@ class UIStaticText;
class UIMerchantItemPurchaseWnd : public UIItemBaseWnd {
public:
UIMerchantItemPurchaseWnd(UIWindowContext& windows, UIFrameContext& frames, int value);
void Slot11() override;
void Slot15(int width, int height) override;
void Slot10(int x, int y, std::intptr_t value) override;
@ -20,7 +21,7 @@ public:
/* 00F0 */ int unknown_00F0;
/* 00F4 */ UIStaticText* total;
/* 00F8 */ unsigned char unknown_00F8[0x4];
/* 00F8 */ int unknown_00F8;
/* 00FC */ MerchantItemPurchaseWndInfo* saved;
/* 0100 */ int hovered;
/* 0104 */ unsigned char unknown_0104[0x4];

View file

@ -11,6 +11,7 @@ class UIStaticText;
class UIMerchantItemShopWnd : public UIItemBaseWnd {
public:
UIMerchantItemShopWnd(UIWindowContext& windows, UIFrameContext& frames, int value);
void Slot11() override;
void Slot19() override;
void Slot10(int x, int y, std::intptr_t value) override;

View file

@ -11,6 +11,7 @@ class UIStaticText;
class UIMerchantItemWnd : public UIItemBaseWnd {
public:
UIMerchantItemWnd(UIWindowContext& windows, UIFrameContext& frames);
void Slot10(int x, int y, std::intptr_t value) override;
void Slot11() override;
void Paint() override;

View file

@ -9,6 +9,7 @@
class UIMerchantMirrorItemWnd : public UIItemBaseWnd {
public:
UIMerchantMirrorItemWnd(UIWindowContext& windows, UIFrameContext& frames, int value);
void Slot28(int x, int y) override;
void Slot32(int x, int y) override;
void Slot11() override;

View file

@ -9,6 +9,7 @@ struct UIButtonContext;
class UINoticeMessageBox_LockSellItem : public UIFrameWnd {
public:
UINoticeMessageBox_LockSellItem(UIWindowContext& windows, UIFrameContext& frames);
void Slot15(int width, int height) override;
void Slot19() override;
void Paint() override;

View file

@ -96,9 +96,6 @@ public:
int SendMsg(UIWindow* sender, int message, std::intptr_t argument1, std::intptr_t argument2, std::intptr_t argument3, std::intptr_t argument4) override;
__declspec(noinline) std::pair<bool, BarterMarketItem> GetBarterItemAt(int x, int y);
__declspec(noinline) std::pair<bool, BarterMarketItem> GetBarterItemOrPriceAt(int x, int y);
/* 0104 */ int unknown_0104;
/* 0108 */ int unknown_0108;
};
class UIPurchaseButton : public UIBitmapButton {