From e0d25b63248f4e9cd3193365a6ed6db8027fab64 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Mon, 2 Nov 2026 02:50:16 +0000 Subject: [PATCH] Decompile fn_03339 (CSkillActionMgr::GetInstance) Batch #9851 by ntrl: 0 byte-identical, 1 confirmed by peer review. - fn_03339 CSkillActionMgr::GetInstance: logic confirmed by peer review Peer-reviewed-by: ragnarok-clanker, Yommy, superintelligence Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Contents/Skills/SkillInfo.cpp | 9 ++++++++- Source/Contents/Skills/SkillInfo.h | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Contents/Skills/SkillInfo.cpp b/Source/Contents/Skills/SkillInfo.cpp index 7dc2f29f..186c714c 100644 --- a/Source/Contents/Skills/SkillInfo.cpp +++ b/Source/Contents/Skills/SkillInfo.cpp @@ -347,7 +347,7 @@ CSkillActionMgr::~CSkillActionMgr() = default; // OFFSET: 0x005B06F0 // FUNCTION: fn_03339 -CSkillActionMgr* CSkillActionMgr::GetInstance() { +__forceinline CSkillActionMgr* CSkillActionMgr::GetInstance() { if (!g_skillActionMgr) { g_skillActionMgr = new (std::nothrow) CSkillActionMgr; } @@ -3077,3 +3077,10 @@ void CSkillAction_HN_OVERCOMING_CRISIS::Slot11(int level, CGameActor* source, CG } } + +class CSkillObjectActionRegistration { +public: + CSkillObjectActionRegistration(int skillId, std::function factory); +}; + +// OFFSET: 0x00786450 diff --git a/Source/Contents/Skills/SkillInfo.h b/Source/Contents/Skills/SkillInfo.h index 2db53dc3..4d481e35 100644 --- a/Source/Contents/Skills/SkillInfo.h +++ b/Source/Contents/Skills/SkillInfo.h @@ -138,6 +138,8 @@ public: /* 000C */ std::map> m_efstActions; /* 0014 */ std::map> m_skillObjectActions; + // INLINED + __forceinline CSkillActionMgr() = default; virtual ~CSkillActionMgr(); static CSkillActionMgr* GetInstance();