From ac307767e9f85a441e046945a4b3014b25850983 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Wed, 28 Oct 2026 19:10:23 +0000 Subject: [PATCH] Decompile fn_13837 (ParseItemIdTag) Batch #1562 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_13837 ParseItemIdTag: logic confirmed by peer review Reviewed-by: ragnarok-clanker --- Source/UI/Layout/SnapRectangle.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Source/UI/Layout/SnapRectangle.cpp b/Source/UI/Layout/SnapRectangle.cpp index 96286a6..ecd3214 100644 --- a/Source/UI/Layout/SnapRectangle.cpp +++ b/Source/UI/Layout/SnapRectangle.cpp @@ -1,5 +1,9 @@ #include "UI/Layout/SnapRectangle.h" +#include "Utility/Text/TextTokens.h" + +#include +#include #include namespace { @@ -95,3 +99,27 @@ void SnapRectangle::Snap(const SnapRectangle& other, int& dx, int& dy) const { } } } + +// OFFSET: 0x009B5140 +// FUNCTION: fn_13837 +int ParseItemIdTag(const char* text, const char* end, int& length, int& itemId) { + if (std::strncmp(text, "^nItemID^", 9) != 0) { + return 0; + } + + unsigned int digits = 0; + while (text + digits < end && g_colorHexDigit[static_cast(text[9 + digits])] != 0) { + ++digits; + } + + if (digits == 0) { + return 0; + } + + char number[10]; + std::strncpy(number, text + 9, digits); + number[digits] = '\0'; + length = digits + 9; + itemId = std::atoi(number); + return 1; +}