From a2bf9f70eb2ea297cb7cd18f5d84ff0d37276e41 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Fri, 30 Oct 2026 07:17:12 +0000 Subject: [PATCH] Decompile 2 functions in Source/Contents/Items/NeoPackageItemMgr.cpp, Source/Contents/Items/NeoPackageItemMgr.h Batch #5060 by Yommy: 2 byte-identical, 0 confirmed by peer review. - fn_06519 NEO_PACKAGEITEM::CNeoPackageItemMgr::Init: byte-identical - fn_06533 NEO_PACKAGEITEM::CPaidPackageItemMgr::Init: byte-identical Merged automatically: every function is byte-identical to the original. Adds to the build: Source/Contents/Items/NeoPackageItemMgr.cpp --- Source/Contents/Items/NeoPackageItemMgr.cpp | 47 +++++++++++ Source/Contents/Items/NeoPackageItemMgr.h | 89 +++++++++++++++++++++ data/compile.json | 1 + 3 files changed, 137 insertions(+) create mode 100644 Source/Contents/Items/NeoPackageItemMgr.cpp create mode 100644 Source/Contents/Items/NeoPackageItemMgr.h diff --git a/Source/Contents/Items/NeoPackageItemMgr.cpp b/Source/Contents/Items/NeoPackageItemMgr.cpp new file mode 100644 index 00000000..573a4a0d --- /dev/null +++ b/Source/Contents/Items/NeoPackageItemMgr.cpp @@ -0,0 +1,47 @@ +#include "Contents/Items/NeoPackageItemMgr.h" +#include "Contents/Items/ItemInfoMgr.h" +#include "Contents/Items/SelectPackageItemMgr.h" +#include "Script/LuaInstance.h" +extern "C" { +#include +} +#include +#include + +// GLOBAL: gl_24959 +template <> +NEO_PACKAGEITEM::CNeoPackageItemMgr* Singleton::s_instance = nullptr; + +// GLOBAL: gl_24960 +template <> +NEO_PACKAGEITEM::CPaidPackageItemMgr* Singleton::s_instance = nullptr; + +namespace NEO_PACKAGEITEM { + +// OFFSET: 0x006D1600 + +// OFFSET: 0x006D1680 +// FUNCTION: fn_06519 +void CNeoPackageItemMgr::Init() { +} + +// OFFSET: 0x006D2140 + +// OFFSET: 0x006D24B0 + +// OFFSET: 0x006D2CB0 + +// OFFSET: 0x006D2D30 +// FUNCTION: fn_06533 +void CPaidPackageItemMgr::Init() { +} + +// OFFSET: 0x006D2E30 + +// OFFSET: 0x006D3110 + +// OFFSET: 0x006D3370 + +// OFFSET: 0x006D3440 + +} diff --git a/Source/Contents/Items/NeoPackageItemMgr.h b/Source/Contents/Items/NeoPackageItemMgr.h new file mode 100644 index 00000000..d7fc0e59 --- /dev/null +++ b/Source/Contents/Items/NeoPackageItemMgr.h @@ -0,0 +1,89 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_ITEMS_NEOPACKAGEITEMMGR_H +#define RAGNAROK_SOURCE_CONTENTS_ITEMS_NEOPACKAGEITEMMGR_H + +#include "Utility/Singleton.h" + +#include +#include +#include +#include +#include +#include +#include + +struct lua_State; + +namespace NEO_PACKAGEITEM { + +struct PackageEntry { + /* 0000 */ int itemId; + /* 0004 */ std::string name; + /* 001C */ int probability; +}; + +struct PackageGroup { + /* 0000 */ int totalProbability; + /* 0004 */ std::list items; +}; + +class CNeoPackageItemMgr : public Singleton { +public: + CNeoPackageItemMgr(); + + void Init(); + std::optional*> FindPackage(int itemId); + bool HasPackage(int itemId); + + /* 0004 */ std::map> m_packages; +}; + +class CPaidPackageItemMgr : public Singleton { +public: + static int LuaAddItemSold(lua_State* L); + static bool LoadScript(); + + CPaidPackageItemMgr(); + + void Init(); + void AddItem(int itemId); + bool IsPaidItem(int itemId); + + /* 0004 */ std::set m_items; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(PackageEntry) == 0x20); +static_assert(sizeof(PackageGroup) == 0xC); +static_assert(sizeof(CNeoPackageItemMgr) == 0xC); +static_assert(sizeof(CPaidPackageItemMgr) == 0xC); +#endif + +} + +template <> +NEO_PACKAGEITEM::CNeoPackageItemMgr* Singleton::s_instance; + +template <> +NEO_PACKAGEITEM::CPaidPackageItemMgr* Singleton::s_instance; + +// INLINED +template <> +inline NEO_PACKAGEITEM::CNeoPackageItemMgr* Singleton::GetInstance() { + if (!s_instance) { + s_instance = new (std::nothrow) NEO_PACKAGEITEM::CNeoPackageItemMgr; + } + + return s_instance; +} + +// INLINED +template <> +inline NEO_PACKAGEITEM::CPaidPackageItemMgr* Singleton::GetInstance() { + if (!s_instance) { + s_instance = new (std::nothrow) NEO_PACKAGEITEM::CPaidPackageItemMgr; + } + + return s_instance; +} + +#endif diff --git a/data/compile.json b/data/compile.json index e61065de..96e30bfa 100644 --- a/data/compile.json +++ b/data/compile.json @@ -488,6 +488,7 @@ "Source/Contents/Items/ItemLink.cpp": 4, "Source/Contents/Items/ItemNaming.cpp": 4, "Source/Contents/Items/ItemResources.cpp": 4, + "Source/Contents/Items/NeoPackageItemMgr.cpp": 4, "Source/Contents/Items/RuneSystem.cpp": 4, "Source/Contents/Items/SelectPackageItemMgr.cpp": 4, "Source/Contents/JobCodeForItem.cpp": 4,