diff --git a/Source/Client/Mode/CGameMode.h b/Source/Client/Mode/CGameMode.h index c1c6a980..01e805f7 100644 --- a/Source/Client/Mode/CGameMode.h +++ b/Source/Client/Mode/CGameMode.h @@ -353,6 +353,7 @@ public: float CameraDesiredYaw(); void IgnoreRemovedPacket3(const unsigned char* packet); void ReceiveShowRankingSchedule(const unsigned char* packet); + void ReceiveInventoryStart(const unsigned char* packet); void IgnoreRemovedPacket4(const unsigned char* packet); void IgnoreRemovedPacket5(const unsigned char* packet); void IgnoreRemovedPacket7(const unsigned char* packet); diff --git a/Source/Client/Mode/CLoginMode.h b/Source/Client/Mode/CLoginMode.h index f74b8cb1..ec4bcace 100644 --- a/Source/Client/Mode/CLoginMode.h +++ b/Source/Client/Mode/CLoginMode.h @@ -102,11 +102,17 @@ public: /* 4068 */ CharacterInfo characters[68]; /* 6EE4 */ std::string wallpaperName; /* 6EFC */ CharacterSlotExtension slotExtension; - /* 6F10 */ unsigned char unknown_6F10[0x4]; + /* 6F10 */ std::uint32_t unknown_6F10; /* 6F14 */ UIWindow* window_6F14; /* 6F18 */ int passwordRetryCount; /* 6F1C */ std::vector unknown_6F1C; - /* 6F28 */ unsigned char unknown_6F28[0x28]; + /* 6F28 */ int unknown_6F28; + /* 6F2C */ std::vector unknown_6F2C; + /* 6F38 */ std::vector unknown_6F38; + /* 6F44 */ unsigned char savedInlineCharset; + /* 6F45 */ unsigned char unknown_6F45[0x3]; + /* 6F48 */ int unknown_6F48; + /* 6F4C */ int unknown_6F4C; /* 6F50 */ std::string unknown_6F50; /* 6F68 */ std::vector mapStates; /* 6F74 */ bool unknown_6F74; diff --git a/Source/Client/Mode/GameModeItemLists.cpp b/Source/Client/Mode/GameModeItemLists.cpp index 966c491b..77c406d7 100644 --- a/Source/Client/Mode/GameModeItemLists.cpp +++ b/Source/Client/Mode/GameModeItemLists.cpp @@ -4,6 +4,8 @@ #include "Contents/Items/ItemInfo.h" #include "Contents/Messenger/ClientMessenger.h" #include "Contents/PetEvolutionMgr.h" +#include "UI/Item/UIItemStoreWnd.h" +#include "UI/Window/UIWindowMgr.h" #include #include @@ -24,6 +26,12 @@ struct ClientItemLists { bool AddItem1710(const ITEM_INFO& item, unsigned char refresh); bool AddItem1738(const ITEM_INFO& item, unsigned char refresh); bool AddItem1740(const ITEM_INFO& item); + void ClearInventory(); + void ClearItems1740(); +}; + +struct SessionMessengerContext { + void ResetEquipment(); }; namespace { @@ -163,3 +171,5 @@ void CGameMode::ReceiveEquipListPart(unsigned char listType, int count, const un break; } } + +// OFFSET: 0x00D44600 diff --git a/Source/Client/Mode/LoginMode.cpp b/Source/Client/Mode/LoginMode.cpp index 4f0fc46e..082eff46 100644 --- a/Source/Client/Mode/LoginMode.cpp +++ b/Source/Client/Mode/LoginMode.cpp @@ -29,6 +29,7 @@ #include "UI/Window/WindowDialogs.h" #include "Utility/Cipher/XorBytes.h" #include "Utility/Text/FormatString.h" +#include "Utility/Text/TextTokens.h" #include #include @@ -1963,3 +1964,19 @@ void CLoginMode::ShowLoginError(int code, int argument) { g_modeMgr.Quit(); } } + +// OFFSET: 0x00D8C6A0 +// FUNCTION: fn_22258 +CLoginMode::CLoginMode() : wallpaperName(), unknown_6F1C(), unknown_6F2C(), unknown_6F38(), unknown_6F50(), mapStates() { + this->unknown_0010 = 1; + this->unknown_6F10 = timeGetTime() + 12000; + this->savedInlineCharset = g_inlineCharset; + g_inlineCharset = 0; + this->unknown_6F48 = -1; + this->window_6F14 = nullptr; + this->passwordRetryCount = 0; + std::memset(this->characters, 0, sizeof(this->characters)); + this->unknown_01D8 = 0; + this->unknown_01DC = 0; + this->characterDeleted = false; +} diff --git a/Source/Contents/Actors/EffectActors.h b/Source/Contents/Actors/EffectActors.h index baa370c9..890889b0 100644 --- a/Source/Contents/Actors/EffectActors.h +++ b/Source/Contents/Actors/EffectActors.h @@ -8,6 +8,7 @@ class CBlowEffect : public CRenderObject { public: + CBlowEffect(); ~CBlowEffect() override; bool OnProcess() override; void SendMsg( diff --git a/Source/Contents/Actors/Item.cpp b/Source/Contents/Actors/Item.cpp index 5c8b2124..1e197e95 100644 --- a/Source/Contents/Actors/Item.cpp +++ b/Source/Contents/Actors/Item.cpp @@ -37,6 +37,12 @@ struct ItemFallEntry { /* 0042 */ std::uint16_t grade; }; +// OFFSET: 0x00D8B340 +// FUNCTION: fn_22246 +CItem::CItem() : name() { + this->SubD8B5B0(); +} + // OFFSET: 0x00D8B5A0 // FUNCTION: fn_22248 void CItem::SubD8B5A0() { diff --git a/Source/Contents/Actors/Item.h b/Source/Contents/Actors/Item.h index af48bb10..8557b2bc 100644 --- a/Source/Contents/Actors/Item.h +++ b/Source/Contents/Actors/Item.h @@ -9,6 +9,7 @@ class CItem : public EffectActor { public: + CItem(); void SubD8B5A0(); void SubD8B5B0(); bool OnProcess() override; diff --git a/Source/Contents/Sound/SoundMaker.cpp b/Source/Contents/Sound/SoundMaker.cpp index 54d9fd9e..eeb8c158 100644 --- a/Source/Contents/Sound/SoundMaker.cpp +++ b/Source/Contents/Sound/SoundMaker.cpp @@ -60,6 +60,14 @@ CCorpse::CCorpse() { this->render.unknown_008C = timeGetTime(); } +// OFFSET: 0x00DA0DE0 +// FUNCTION: fn_22352 +CBlowEffect::CBlowEffect() { + this->SetSpriteName(ResourceMgr::Instance(), "이팩트\\이팩트.spr"); + this->SetActionName(ResourceMgr::Instance(), "이팩트\\이팩트.act"); + this->render.animation = 0; +} + // OFFSET: 0x00DA1210 // FUNCTION: fn_22355 CGndRiser::CGndRiser() { diff --git a/Source/UI/Quest/UIRecommendedQuestInfo.cpp b/Source/UI/Quest/UIRecommendedQuestInfo.cpp index 8de8693b..f6bd45fe 100644 --- a/Source/UI/Quest/UIRecommendedQuestInfo.cpp +++ b/Source/UI/Quest/UIRecommendedQuestInfo.cpp @@ -156,3 +156,9 @@ CUIScrollWindow::CUIScrollWindow(UIWindowContext& context) CUIRecommendedQuestInfo::CUIRecommendedQuestInfo() : titleBar(nullptr), background(nullptr), titleText(nullptr), scrollWindow(nullptr), closeButton(nullptr) { } + +// OFFSET: 0x00A56860 +// FUNCTION: fn_16320 +CUIFrameWnd* CreateRecommendedQuestInfo() { + return new CUIRecommendedQuestInfo(); +} diff --git a/Source/UI/Quest/UIRecommendedQuestInfo.h b/Source/UI/Quest/UIRecommendedQuestInfo.h index f010e203..b50a8d32 100644 --- a/Source/UI/Quest/UIRecommendedQuestInfo.h +++ b/Source/UI/Quest/UIRecommendedQuestInfo.h @@ -16,7 +16,7 @@ class CUIScrollWindow; class CUIRecommendedQuestInfo : public CUIFrameWnd { public: - CUIRecommendedQuestInfo(); + __declspec(noinline) CUIRecommendedQuestInfo(); void Slot16() override; void OnFirstAction(); virtual void Slot53(); diff --git a/Source/UI/Text/UIBalloonText.cpp b/Source/UI/Text/UIBalloonText.cpp index 9573ba12..c91f56b6 100644 --- a/Source/UI/Text/UIBalloonText.cpp +++ b/Source/UI/Text/UIBalloonText.cpp @@ -315,3 +315,8 @@ UINameBalloonText::UINameBalloonText(UIWindowContext& windows, BalloonTextContex this->unknown_00B8 = 0; this->unknown_0098 = 0; } + +// OFFSET: 0x00CCDFF0 +// FUNCTION: fn_21219 +UIVerticalNameBalloonText::UIVerticalNameBalloonText(UIWindowContext& windows, BalloonTextContext& text) : UINameBalloonText(windows, text) { +} diff --git a/Source/UI/Text/UINameBalloonText.h b/Source/UI/Text/UINameBalloonText.h index d1c248ed..32071180 100644 --- a/Source/UI/Text/UINameBalloonText.h +++ b/Source/UI/Text/UINameBalloonText.h @@ -7,7 +7,7 @@ class UINameBalloonText : public UIBalloonText { public: - UINameBalloonText(UIWindowContext& windows, BalloonTextContext& text); + __declspec(noinline) UINameBalloonText(UIWindowContext& windows, BalloonTextContext& text); ~UINameBalloonText() override; void Slot19() override; void Paint() override; @@ -21,6 +21,7 @@ public: class UIVerticalNameBalloonText : public UINameBalloonText { public: + UIVerticalNameBalloonText(UIWindowContext& windows, BalloonTextContext& text); void Paint() override; }; diff --git a/Source/UI/Window/UIVideoWnd.cpp b/Source/UI/Window/UIVideoWnd.cpp index 7e0543f3..0d87e8c3 100644 --- a/Source/UI/Window/UIVideoWnd.cpp +++ b/Source/UI/Window/UIVideoWnd.cpp @@ -33,6 +33,11 @@ UIVideoWnd::~UIVideoWnd() { } } +// OFFSET: 0x00AB4060 +// FUNCTION: fn_17436 +UIVideoSkipButton::UIVideoSkipButton(UIWindowContext& windowContext, UIButtonContext& buttonContext) : UIButton(windowContext, buttonContext) { +} + // OFFSET: 0x00AB4380 // FUNCTION: fn_17440 bool UIVideoWnd::Slot02() { diff --git a/Source/UI/Window/UIVideoWnd.h b/Source/UI/Window/UIVideoWnd.h index 17a50609..35efb390 100644 --- a/Source/UI/Window/UIVideoWnd.h +++ b/Source/UI/Window/UIVideoWnd.h @@ -19,9 +19,7 @@ struct UIVideoWndContext { class UIVideoSkipButton : public UIButton { public: - // INLINED - UIVideoSkipButton(UIWindowContext& windowContext, UIButtonContext& buttonContext) : UIButton(windowContext, buttonContext) { - } + UIVideoSkipButton(UIWindowContext& windowContext, UIButtonContext& buttonContext); void Paint() override; };