From ebe52d3eba41781d943bb5f0c16b84916af4223a Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sun, 22 Mar 2026 17:08:31 -0700 Subject: [PATCH] fix: color item links by quality in GetItemInfo and GameTooltip:GetItem GetItemInfo returned item links with hardcoded white color (|cFFFFFFFF) regardless of quality. Now uses quality-appropriate colors: gray for Poor, white for Common, green for Uncommon, blue for Rare, purple for Epic, orange for Legendary, gold for Artifact, cyan for Heirloom. Also fix GameTooltip:GetItem() to use the quality-colored link from GetItemInfo instead of hardcoded white. --- src/addons/lua_engine.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/addons/lua_engine.cpp b/src/addons/lua_engine.cpp index e648b48a..ba956da9 100644 --- a/src/addons/lua_engine.cpp +++ b/src/addons/lua_engine.cpp @@ -1787,10 +1787,21 @@ static int lua_GetItemInfo(lua_State* L) { if (!info) { lua_pushnil(L); return 1; } lua_pushstring(L, info->name.c_str()); // 1: name - // Build item link string: |cFFFFFFFF|Hitem:ID:0:0:0:0:0:0:0|h[Name]|h|r + // Build item link with quality-colored text + static const char* kQualityHex[] = { + "ff9d9d9d", // 0 Poor (gray) + "ffffffff", // 1 Common (white) + "ff1eff00", // 2 Uncommon (green) + "ff0070dd", // 3 Rare (blue) + "ffa335ee", // 4 Epic (purple) + "ffff8000", // 5 Legendary (orange) + "ffe6cc80", // 6 Artifact (gold) + "ff00ccff", // 7 Heirloom (cyan) + }; + const char* colorHex = (info->quality < 8) ? kQualityHex[info->quality] : "ffffffff"; char link[256]; - snprintf(link, sizeof(link), "|cFFFFFFFF|Hitem:%u:0:0:0:0:0:0:0|h[%s]|h|r", - itemId, info->name.c_str()); + snprintf(link, sizeof(link), "|c%s|Hitem:%u:0:0:0:0:0:0:0|h[%s]|h|r", + colorHex, itemId, info->name.c_str()); lua_pushstring(L, link); // 2: link lua_pushnumber(L, info->quality); // 3: quality lua_pushnumber(L, info->itemLevel); // 4: iLevel @@ -4993,7 +5004,8 @@ void LuaEngine::registerCoreAPI() { "function GameTooltip:GetItem()\n" " if self.__itemId and self.__itemId > 0 then\n" " local name = GetItemInfo(self.__itemId)\n" - " return name, '|cffffffff|Hitem:'..self.__itemId..':0|h['..tostring(name)..']|h|r'\n" + " local _, itemLink = GetItemInfo(self.__itemId)\n" + " return name, itemLink or ('|cffffffff|Hitem:'..self.__itemId..':0|h['..tostring(name)..']|h|r')\n" " end\n" " return nil\n" "end\n"