GuildChat = {} local LC = LibStub('libChat-1.0') local LGI = LibStub("LibGuildInfo-1.0") local LAM = LibStub("LibAddonMenu-1.0") local AllianceColours = { ["Aldmeri Dominion"] = "|cffff00", ["Daggerfall Convenant"]= "|c4169E1", ["Ebonhart Pact"] = "|c8B0000"} local ClassColours = {["Dragon Knight"] = "|cCA0000", ["Sorcerer"] = "|c0096FF", ["Nightblade"] = "|c9900F1", ["Templar"] = "|cEFEFEF"} local ChannelInfo = ZO_ChatSystem_GetChannelInfo() local CategoryMapping = ZO_ChatSystem_GetEventCategoryMappings() function GuildChat:GetLevel(name) return LGI:GetLevelByMemberName(name) or 0 end function GuildChat:GetClassColour(name) return ClassColours[LGI:GetClassNameByMemberName(name)] or "|cffffff" end function GuildChat:GetAtColour(name) return AllianceColours[LGI:GetAllianceNameByMemberName(name)] or "|cffffff" end function GuildChat:GetName(channelId, fromName, text) local channelInfo = ChannelInfo[channelId] if channelInfo.format ~= 1723 then return ZO_LinkHandler_CreatePlayerLink(fromName) end --if GuildChat:GetLevel(fromName) == 0 then return ZO_LinkHandler_CreatePlayerLink(fromName) end local r,g,b = GetChatCategoryColor(CategoryMapping[EVENT_CHAT_MESSAGE_CHANNEL][channelId]) local baseColour = ZO_ColorDef:New(r, g, b, 1) local formattedName = GuildChat:GetAtColour(fromName) .. "[" .. GuildChat:GetLevel(fromName) .. "]" .. "|r" .. GuildChat:GetClassColour(fromName) .. ZO_LinkHandler_CreatePlayerLink(fromName) .. "|r" if GuildChat.settings.guildRank then formattedName = "[" .. LGI:GetGuildRankByMemberName(fromName) .. "]" .. formattedName end return formattedName end function GuildChat:Register() LC:registerName(function(...) return GuildChat:GetName(...) end) end function GuildChat:Loaded(...) local eventId, addonName = ... if addonName ~= "GuildChat" then return end local defaults = { ["characterName"] = "account", ["guildRank"] = false, } GuildChat.settings = ZO_SavedVars:NewAccountWide('GuildChat_Settings', 2, nil, defaults) local panel = LAM:CreateControlPanel("GuildChatMenu", "Guild Chat") LAM:AddHeader(panel, "GuildChatOptions", "Chat Options") LAM:AddDropdown(panel, "charName", "Set the name to be ", "Guild Chat can display Account or Character name", {"account", "character"}, function() return GuildChat.settings.characterName end, function(valueString) GuildChat.settings.characterName = valueString end) LAM:AddCheckbox(panel, "showGuildRank", "Show Guild Rank", "Include a rank indicator", function() return GuildChat.settings.guildRank end, function(value) GuildChat.settings.guildRank = not GuildChat.settings.guildRank end) end EVENT_MANAGER:RegisterForEvent("GuildChatLoaded", EVENT_ADD_ON_LOADED, function(...) GuildChat:Loaded(...) end) EVENT_MANAGER:RegisterForEvent("GuildChatLoaded", EVENT_PLAYER_ACTIVATED, function(...) zo_callLater(GuildChat.Register, 5000) end)