diff --git a/Source/Client/Session.cpp b/Source/Client/Session.cpp index 1b63801..e5e3f5a 100644 --- a/Source/Client/Session.cpp +++ b/Source/Client/Session.cpp @@ -15,3 +15,5 @@ int CSession::SyncUnknown0E98() { return this->unknown_0E98; } + +// OFFSET: 0x00DFFCF0 diff --git a/Source/Client/Session.h b/Source/Client/Session.h index 130965c..6c76391 100644 --- a/Source/Client/Session.h +++ b/Source/Client/Session.h @@ -58,7 +58,9 @@ public: /* 1058 */ int m_petActionTable[5][5][7]; /* 1314 */ unsigned char unknown_1314[0x314]; /* 1628 */ int m_job; - /* 162C */ unsigned char unknown_162C[0x1524]; + /* 162C */ unsigned char unknown_162C[0xE4]; + /* 1710 */ std::list m_inventoryItems; + /* 1718 */ unsigned char unknown_1718[0x1438]; /* 2B50 */ ItemInfo unknown_2B50[10]; /* 3500 */ ItemInfo unknown_3500[10]; /* 3EB0 */ unsigned char unknown_3EB0[0x16A8]; @@ -111,6 +113,7 @@ public: void GetPetFriendlyStateString(int friendly, char* buffer); int GetPetHungryState(int hunger); int GetPetEmotionNumber(int job, int action, int hungerLevel); + void ClearItemSelection(); int MercSkillLevel(int skillId) const; int SyncUnknown0E98(); }; @@ -143,6 +146,7 @@ static_assert(offsetof(CSession, m_jobNamesEnd) == 0xFAC); static_assert(offsetof(CSession, unknown_0E98) == 0xE98); static_assert(offsetof(CSession, m_petActionTable) == 0x1058); static_assert(offsetof(CSession, m_job) == 0x1628); +static_assert(offsetof(CSession, m_inventoryItems) == 0x1710); static_assert(offsetof(CSession, unknown_2B50) == 0x2B50); static_assert(offsetof(CSession, unknown_3500) == 0x3500); static_assert(offsetof(CSession, unknown_5558) == 0x5558); diff --git a/Source/Contents/Items/ItemInfo.cpp b/Source/Contents/Items/ItemInfo.cpp index 0dced91..3ec1bde 100644 --- a/Source/Contents/Items/ItemInfo.cpp +++ b/Source/Contents/Items/ItemInfo.cpp @@ -196,3 +196,11 @@ void ItemInfo::SetItemId(int value) { // OFFSET: 0x00DFBE40 // OFFSET: 0x00DFBF70 + +// OFFSET: 0x006D88D0 +// FUNCTION: fn_06600 +bool ItemInfo::HasSpecialCard() const { + std::uint32_t card; + std::memcpy(&card, this->unknown_001C, sizeof(card)); + return card == 254 || card == 255; +} diff --git a/Source/Contents/Items/ItemInfo.h b/Source/Contents/Items/ItemInfo.h index 29db9c5..20be855 100644 --- a/Source/Contents/Items/ItemInfo.h +++ b/Source/Contents/Items/ItemInfo.h @@ -46,6 +46,7 @@ struct alignas(8) ItemInfo { bool operator<(const ItemInfo& other) const; bool SetName(const char* name); void SetItemId(int value); + bool HasSpecialCard() const; /* 0000 */ std::uint32_t unknown_0000[4]; /* 0010 */ std::int32_t quantity; /* 0014 */ std::uint32_t unknown_0014[2]; diff --git a/Source/UI/Window/UIWindowMgr.cpp b/Source/UI/Window/UIWindowMgr.cpp index 50dcc99..ae65dcc 100644 --- a/Source/UI/Window/UIWindowMgr.cpp +++ b/Source/UI/Window/UIWindowMgr.cpp @@ -629,3 +629,4 @@ void UIWindowMgr::RegisterNamedWindow(std::string name, UIWindow* window) { } } +// OFFSET: 0x00AA9B00 diff --git a/Source/UI/Window/UIWindowMgr.h b/Source/UI/Window/UIWindowMgr.h index 0758dcc..a5d6787 100644 --- a/Source/UI/Window/UIWindowMgr.h +++ b/Source/UI/Window/UIWindowMgr.h @@ -432,6 +432,7 @@ public: void EnableRouletteWnd(); char UpdateSnapRectangles(); bool ProcessDialogKey(int unused, int key); + void NotifyMode(); }; extern UIWindowMgr g_windowMgr;