From b36508e3d2f28bd20eb6d9bc79980fccd9c05c8a Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 5 Nov 2026 12:17:47 +0000 Subject: [PATCH] Decompile fn_21351 (CGameMode::WriteReplaySkillState) Batch #12134 by SapitoSucio: 0 byte-identical, 1 confirmed by peer review. - fn_21351 CGameMode::WriteReplaySkillState: logic confirmed by peer review Peer-reviewed-by: Yommy, cremane Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Client/Mode/GameMode.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Source/Client/Mode/GameMode.cpp b/Source/Client/Mode/GameMode.cpp index 93c35a45..b7206531 100644 --- a/Source/Client/Mode/GameMode.cpp +++ b/Source/Client/Mode/GameMode.cpp @@ -5673,10 +5673,21 @@ static_assert(sizeof(SkillEntryPacket) == 16); // FUNCTION: fn_21351 std::vector CGameMode::WriteReplaySkillState() { std::vector output; - { - const auto record = BuildReplayTaggedRecord(17000, nullptr, 0); + auto appendRecord = [&output](std::uint16_t id, const void* data, std::uint32_t bytes) { + std::vector record(bytes + 6u, 0); + record[0] = static_cast(id); + record[1] = static_cast(id >> 8); + record[2] = static_cast(bytes); + record[3] = static_cast(bytes >> 8); + record[4] = static_cast(bytes >> 16); + record[5] = static_cast(bytes >> 24); + if (bytes != 0) { + std::memcpy(record.data() + 6, data, bytes); + } output.insert(output.end(), record.begin(), record.end()); - } + }; + + appendRecord(17000, nullptr, 0); for (CRenderObject* object : this->scene->unknown_0020) { CSkill* skill = static_cast(object); @@ -5693,14 +5704,10 @@ std::vector CGameMode::WriteReplaySkillState() { packet.x = static_cast(static_cast(column)); packet.y = static_cast(static_cast(row)); - const auto record = BuildReplayTaggedRecord(0xCD, &packet, sizeof(packet)); - output.insert(output.end(), record.begin(), record.end()); + appendRecord(0xCD, &packet, sizeof(packet)); } - { - const auto record = BuildReplayTaggedRecord(17001, nullptr, 0); - output.insert(output.end(), record.begin(), record.end()); - } + appendRecord(17001, nullptr, 0); return output; }