From a7ba336f9bc764a629e35fa288c6fa1e3bfa5bf7 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Tue, 10 Nov 2026 22:25:28 +0000 Subject: [PATCH] Decompile fn_05620 (EquipmentProperties::CEquipment::AddProperty) Batch #16574 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_05620 EquipmentProperties::CEquipment::AddProperty: logic confirmed by peer review Peer-reviewed-by: Yommy, alisonrag, br4yan Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Contents/Messenger/ClientMessenger.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Source/Contents/Messenger/ClientMessenger.cpp b/Source/Contents/Messenger/ClientMessenger.cpp index 09f9ede41..c40a80392 100644 --- a/Source/Contents/Messenger/ClientMessenger.cpp +++ b/Source/Contents/Messenger/ClientMessenger.cpp @@ -724,14 +724,20 @@ EquipmentProperties::CEquipmentPropertiesMgr* EquipmentProperties::CEquipmentPro return g_equipmentPropertiesMgr; } +// INLINED +inline unsigned int HashName(const char* text) { + unsigned int hash = 5381; + int character; + while ((character = *text++) != 0) { + hash = ((hash << 5) + hash) + character; + } + return hash; +} + // OFFSET: 0x0068BAD0 // FUNCTION: fn_05620 void EquipmentProperties::CEquipment::AddProperty(const std::string& name, const char* op, const int& index, const int& value, const int& key) { - unsigned int hash = 5381; - for (const char* character = name.c_str(); *character != '\0'; ++character) { - hash = hash * 33 + *character; - } - const std::uint64_t nameKey = hash; + const std::uint64_t nameKey = HashName(name.c_str()); EquipmentPropertyDefinition* definition = CEquipmentPropertiesMgr::GetInstance()->FindDefinition(nameKey); if (definition == nullptr) {