Preserve class color table when applying blue shaman

This commit is contained in:
2026-08-25 16:03:45 +02:00
parent 728d990a62
commit 7ea1279d42
+32 -19
View File
@@ -1,6 +1,5 @@
local _G = ShaguTweaks.GetGlobalEnv()
local T = ShaguTweaks.T
local GetExpansion = ShaguTweaks.GetExpansion
local module = ShaguTweaks:register({
title = T["Blue Shaman Class Colors"],
@@ -10,6 +9,9 @@ local module = ShaguTweaks:register({
enabled = true,
})
local BLUE_SHAMAN = { r = 0.14, g = 0.35, b = 1.0, colorStr = "ff2459ff" }
local UNKNOWN_CLASS_COLOR = { r = 0.6, g = 0.6, b = 0.6, colorStr = "ff999999" }
local function ChatTweaksOwnsClassColors()
local configured = ShaguTweaks_config and ShaguTweaks_config[T["Chat Tweaks"]]
if configured ~= nil then return configured == 1 end
@@ -21,25 +23,36 @@ local function ChatTweaksOwnsClassColors()
end
module.enable = function(self)
-- The current enhanced Chat Tweaks module already carries this exact color
-- table. Avoid applying it twice while keeping Blue Shaman independent when
-- Chat Tweaks is disabled.
-- The current enhanced Chat Tweaks module already applies the same shaman
-- color. Avoid touching the global table twice while keeping this module
-- independent when Chat Tweaks is disabled.
if ChatTweaksOwnsClassColors() then return end
-- update table to get unknown colors and blue shamans for vanilla
RAID_CLASS_COLORS = {
["WARRIOR"] = { r = 0.78, g = 0.61, b = 0.43, colorStr = "ffc79c6e" },
["MAGE"] = { r = 0.41, g = 0.8, b = 0.94, colorStr = "ff69ccf0" },
["ROGUE"] = { r = 1, g = 0.96, b = 0.41, colorStr = "fffff569" },
["DRUID"] = { r = 1, g = 0.49, b = 0.04, colorStr = "ffff7d0a" },
["HUNTER"] = { r = 0.67, g = 0.83, b = 0.45, colorStr = "ffabd473" },
["SHAMAN"] = { r = 0.14, g = 0.35, b = 1.0, colorStr = "ff2459ff" },
["PRIEST"] = { r = 1, g = 1, b = 1, colorStr = "ffffffff" },
["WARLOCK"] = { r = 0.58, g = 0.51, b = 0.79, colorStr = "ff9482c9" },
["PALADIN"] = { r = 0.96, g = 0.55, b = 0.73, colorStr = "fff58cba" },
}
-- Keep Blizzard/Turtle's RAID_CLASS_COLORS table (and any references held by
-- other addons) intact. Only change the SHAMAN entry instead of replacing
-- the complete table just to alter one class color.
RAID_CLASS_COLORS = RAID_CLASS_COLORS or {}
local shaman = RAID_CLASS_COLORS["SHAMAN"]
if shaman then
shaman.r = BLUE_SHAMAN.r
shaman.g = BLUE_SHAMAN.g
shaman.b = BLUE_SHAMAN.b
shaman.colorStr = BLUE_SHAMAN.colorStr
else
RAID_CLASS_COLORS["SHAMAN"] = {
r = BLUE_SHAMAN.r,
g = BLUE_SHAMAN.g,
b = BLUE_SHAMAN.b,
colorStr = BLUE_SHAMAN.colorStr,
}
end
RAID_CLASS_COLORS = setmetatable(RAID_CLASS_COLORS, { __index = function(tab,key)
return { r = 0.6, g = 0.6, b = 0.6, colorStr = "ff999999" }
end})
-- Preserve any metatable installed by Turtle or another addon. The original
-- module supplied a gray fallback for unknown class keys, so retain that
-- behavior only when no owner already provides one.
if not getmetatable(RAID_CLASS_COLORS) then
setmetatable(RAID_CLASS_COLORS, { __index = function()
return UNKNOWN_CLASS_COLOR
end })
end
end