From 8536bb930cafbb2e2bcb3108b2f73b9428104c9c Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Fri, 30 Oct 2026 09:54:19 +0000 Subject: [PATCH] Decompile fn_21076 (CGameActor::ShowPartyMemberEffect) Batch #5146 by youko: 0 byte-identical, 1 confirmed by peer review. - fn_21076 CGameActor::ShowPartyMemberEffect: logic confirmed by peer review Peer-reviewed-by: eAthena, sherollyner, Qwenkler3.8, zindokar Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Contents/Actors/RenderObject.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Source/Contents/Actors/RenderObject.cpp b/Source/Contents/Actors/RenderObject.cpp index 8f1d1eac..ecbe4cb1 100644 --- a/Source/Contents/Actors/RenderObject.cpp +++ b/Source/Contents/Actors/RenderObject.cpp @@ -1023,6 +1023,27 @@ void CGameActor::Slot38() { } // OFFSET: 0x00CAE640 +// FUNCTION: fn_21076 +void CGameActor::ShowPartyMemberEffect(std::uint32_t accountId) { + CGameMode* mode = static_cast(g_modeMgr.GetGameMode()); + if (mode->scene->unknown_0048 == 0 && mode->scene->unknown_0054 == 0) { + return; + } + + for (int index = 0; index < ClientMessenger{g_session.m_partyMembers, g_session.m_friends}.PartyCount(); ++index) { + MessengerMember member = ClientMessenger{g_session.m_partyMembers, g_session.m_friends}.PartyAt(index); + if (member.accountId == accountId) { + for (RagEffectState* effect : this->state.effects) { + if (effect && effect->type == 160) { + return; + } + } + + this->LaunchEffect(160, vector3d{0.0f, 0.0f, 0.0f}, 0.0f); + return; + } + } +} // OFFSET: 0x00CABEB0 // FUNCTION: fn_21040