From 22a001c11c93a9aaed2aae66fa0dde64b19475bc Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 12 Nov 2026 01:36:56 +0000 Subject: [PATCH] Decompile fn_21836 (CGameMode::ReceiveSpriteChange2) Batch #17614 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_21836 CGameMode::ReceiveSpriteChange2: logic confirmed by peer review Peer-reviewed-by: Yommy, cremane, Eofim Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Client/Mode/GameModeNotices.cpp | 28 ++++++++++++-------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/Source/Client/Mode/GameModeNotices.cpp b/Source/Client/Mode/GameModeNotices.cpp index 63ef1b208..c8256fbee 100644 --- a/Source/Client/Mode/GameModeNotices.cpp +++ b/Source/Client/Mode/GameModeNotices.cpp @@ -4742,15 +4742,13 @@ void CGameMode::ReceiveSpriteChange(const unsigned char* data) { // FUNCTION: fn_21836 void CGameMode::ReceiveSpriteChange2(const unsigned char* data) { const auto* packet = reinterpret_cast(data); - const int bodyCostume = g_session.m_bodyCostume; - const int bodyStyle = g_session.m_bodyStyle; const int value = static_cast(packet->value); CGameActor* actor; if (packet->aid == g_session.m_aid) { actor = this->scene->player; switch (packet->type) { case LOOK_BASE: - g_session.UpdateBodyStyle(g_session.GetDisplayJob(), bodyStyle, bodyCostume); + g_session.UpdateBodyStyle(g_session.GetDisplayJob(), g_session.m_bodyStyle, g_session.m_bodyCostume); if (g_session.m_job != packet->value) { g_session.SetJob(value); } @@ -4770,18 +4768,18 @@ void CGameMode::ReceiveSpriteChange2(const unsigned char* data) { case LOOK_HEAD_BOTTOM: *reinterpret_cast(&g_session.accessoryAppearance[0x0]) = value; break; + case LOOK_HAIR_COLOR: + g_session.m_headPalette = value; + break; + case LOOK_CLOTHES_COLOR: + g_session.UpdateBodyStyle(g_session.GetDisplayJob(), value, g_session.m_bodyCostume); + break; case LOOK_HEAD_TOP: *reinterpret_cast(&g_session.accessoryAppearance[0x4]) = value; break; case LOOK_HEAD_MID: *reinterpret_cast(&g_session.accessoryAppearance[0x8]) = value; break; - case LOOK_HAIR_COLOR: - g_session.m_headPalette = value; - break; - case LOOK_CLOTHES_COLOR: - g_session.UpdateBodyStyle(g_session.GetDisplayJob(), value, bodyCostume); - break; case LOOK_RESET_COSTUMES: *reinterpret_cast(&g_session.accessoryAppearance[0x0]) = 0; *reinterpret_cast(&g_session.accessoryAppearance[0x4]) = 0; @@ -4859,18 +4857,18 @@ void CGameMode::ReceiveSpriteChange2(const unsigned char* data) { case LOOK_HEAD_BOTTOM: actor->SetSprAccessory(value); break; - case LOOK_HEAD_TOP: - actor->SetSprAccessory2(value); - break; - case LOOK_HEAD_MID: - actor->SetSprAccessory3(value); - break; case LOOK_HAIR_COLOR: actor->SetHeadPalette(value); break; case LOOK_CLOTHES_COLOR: actor->SetBodyPalette(value); break; + case LOOK_HEAD_TOP: + actor->SetSprAccessory2(value); + break; + case LOOK_HEAD_MID: + actor->SetSprAccessory3(value); + break; case LOOK_SHOES: actor->SetSprShoe(value); break;