--[[ รค Name: AdvCombatLog By: Crypton All files and code in this addon is strictly All Rights Reserved unless explicitly stated otherwise. ]] ACL_ADDON_NAME = "Advanced Combat Log"; ACL_VERSION = "0.49"; ACL_TITLE = ACL_ADDON_NAME.." v."..ACL_VERSION.." Beta"; ACL_PATH = "Interface/AddOns/AdvCombatLog/"; ACL_LIB_PATH = ACL_PATH.."lib/"; ACL_LANG_PATH = ACL_PATH.."local/"; ACL_LOADED = false; ACL_COLP = false; ACL_TSHELP = false; --[[ Might seem redundant, but each time the game fires the Vairables Loaded event the strings are parsed in a loop. This will prevent that by making the parse only happen when the game is first loaded. This should save some overhead when UI is reloaded between screens/maps, or manually since the data is still in memory already parsed... First load of the game ACL_KWPARSE becomes true. ]] if (not ACL_KWPARSE) then ACL_KWPARSE = false; end ACL_CURCOL = 1; ACL_TEMPR = 0; ACL_TEMPG = 0; ACL_TEMPB = 0; ACL_COLIDX = { ["NT"] = 1, ["AT"] = 2, ["MN"] = 3, ["SN"] = 4, ["TN"] = 5, ["VA"] = 6, ["TS"] = 7, ["KW"] = 8, }; ACL_CLEAN = { [1] = "%^", [2] = "%$", [3] = "%(", [4] = "%)", [5] = "%%", [6] = "%.", [7] = "%[", [8] = "%]", [9] = "%*", [10] = "%+", [11] = "%-", [12] = "%?", }; ACL_NLTemp = {}; ACL_ORSELECTED = 0; local ACL_LOCAL = GetLanguage(); if (ACL_LOCAL == "ENUS" or ACL_LOCAL == "ENEU") then ACL_LANG_FILE = "en"; elseif (ACL_LOCAL == "DE") then ACL_LANG_FILE = "de"; elseif (ACL_LOCAL == "JP") then ACL_LANG_FILE = "jp"; elseif (ACL_LOCAL == "CN") then ACL_LANG_FILE = "cn"; elseif (ACL_LOCAL == "TW") then ACL_LANG_FILE = "tw"; elseif (ACL_LOCAL == "ES") then ACL_LANG_FILE = "es"; elseif (ACL_LOCAL == "RU") then ACL_LANG_FILE = "ru"; else ACL_LANG_FILE = "en"; end ACLFileLoader(ACL_LANG_PATH, "acl_"..ACL_LANG_FILE..".lua"); ACLFileLoader(ACL_LIB_PATH, "AdvCombatLogPatterns.lua"); ACLFileLoader(ACL_LIB_PATH, "AdvCombatNormalLog.lua"); ACLFileLoader(ACL_LIB_PATH, "AdvCombatShortLog.lua"); AdvCombatLog_ConfigDefault = { ["ver"] = ACL_VERSION, ["order"] = { [1] = "SN", [2] = "MN", [3] = "TN", [4] = "VA", [5] = "AT", [6] = "KW", }, ["options"] = { [1] = true, [2] = false, [3] = "%I:%M:%S %p", [4] = true, [5] = { [1] = "[", [2] = "]", [3] = " > ", [4] = " < ", }, }, ["colors"] = { [1] = { ["r"] = 255, ["g"] = 255, ["b"] = 255, }, [2] = { ["r"] = 255, ["g"] = 146, ["b"] = 0, }, [3] = { ["r"] = 0, ["g"] = 204, ["b"] = 252, }, [4] = { ["r"] = 0, ["g"] = 255, ["b"] = 52, }, [5] = { ["r"] = 255, ["g"] = 10, ["b"] = 0, }, [6] = { ["r"] = 255, ["g"] = 221, ["b"] = 34, }, [7] = { ["r"] = 161, ["g"] = 151, ["b"] = 107, }, [8] = { ["b"] = 255, ["g"] = 141, ["r"] = 175, }, }, }; AdvCombatLog_LangStrings = { ["colorsets"] = { [1] = AdvCombatLog_Lang_NT, [2] = AdvCombatLog_Lang_AT, [3] = AdvCombatLog_Lang_MN, [4] = AdvCombatLog_Lang_SN, [5] = AdvCombatLog_Lang_TN, [6] = AdvCombatLog_Lang_VA, [7] = AdvCombatLog_Lang_TS, [8] = AdvCombatLog_Lang_KW, }, }; function AdvCombatLog_OnLoad(this) this:RegisterEvent("VARIABLES_LOADED"); this:RegisterEvent("CHAT_MSG_COMBAT"); end function AdvCombatLog_OnEvent(this, event) --[[ Begin Vars Loaded ]] if (event == "VARIABLES_LOADED") then if (not ACL_KWPARSE) then local i; local j = 0; local k; local m; for i = 1, table.getn(AdvCombatLogStrings) do for k in string.gmatch(AdvCombatLogStrings[i][1], "%[%$%a%a%]") do k = string.gsub(k, "%[%$", ""); k = string.gsub(k, "%]", ""); table.insert(AdvCombatLogStrings[i][3], k); j = j + 1; end if (j > 0) then AdvCombatLogStrings[i][2] = j; j = 0; end AdvCombatLogStrings[i][1] = string.gsub(AdvCombatLogStrings[i][1], "%[%$VA%]", "ACLVAACL"); AdvCombatLogStrings[i][1] = string.gsub(AdvCombatLogStrings[i][1], "%[%$", "ACL"); AdvCombatLogStrings[i][1] = string.gsub(AdvCombatLogStrings[i][1], "%]", "ACL"); for m = 1, 12 do AdvCombatLogStrings[i][1] = string.gsub(AdvCombatLogStrings[i][1], ACL_CLEAN[m], "%%"..ACL_CLEAN[m]); end AdvCombatLogStrings[i][1] = string.gsub(AdvCombatLogStrings[i][1], "ACLVAACL", "%(%%d%+%)"); for k, _ in pairs(ACL_COLIDX) do AdvCombatLogStrings[i][1] = string.gsub(AdvCombatLogStrings[i][1], "ACL"..k.."ACL", "%(%.%+%)"); end end ACL_KWPARSE = true; end AdvCombatLog_VerCheck(); AdvCombatLog_FixUI(ACL_LOCAL); SLASH_ACL1 = "/acl"; SlashCmdList["ACL"] = AdvCombatLog_CommandHandler; ACL_LOADED = true; if (AddonManager) then AddonManager.RegisterAddon( "|cffFFFF00Advanced Combat Log|r", "", "Interface\\AddOns\\AdvCombatLog\\images\\acl.png", "Social", false, "/acl", AdvCombatLogMiniButton, AdvCombatLog_Toggle, "v."..ACL_VERSION, "Crypton" ); else DEFAULT_CHAT_FRAME:AddMessage(string.format(AdvCombatLog_Lang_LO, ACL_TITLE, "|cff00ccf/acl|r"), 255, 255, 255); end --[[ End Vars Loaded ]] elseif (event == "CHAT_MSG_COMBAT") then if (ACL_LOADED) then if (AdvCombatLog_Config["options"][1] and arg1 ~= nil) then local aclarg = arg1; local i; local n = 0; aclarg = string.gsub(aclarg, "|r", ""); aclarg = string.gsub(aclarg, "|c........", ""); for i = 1, table.getn(AdvCombatLogStrings) do if (string.find(aclarg, AdvCombatLogStrings[i][1])) then n = i; break; end end if (n ~= 0) then if (AdvCombatLog_Config["options"][4]) then aclarg = AdvCombatLog_ShortLog(aclarg, n); else aclarg = AdvCombatLog_NormalLog(aclarg, n) end local lbr = AdvCombatLog_Config["options"][5][1]; local rbr = AdvCombatLog_Config["options"][5][2]; if (ACL_ENTIME) then if (AdvCombatLog_Config["options"][2]) then local TS = AdvCombatLog_Config["colors"][7]; TS = AdvCombatLog_RGBToHex(TS["r"], TS["g"], TS["b"]); aclarg = lbr.."|cff"..TS..os.date(AdvCombatLog_Config["options"][3]).."|r"..rbr.." "..aclarg; end end local NT = AdvCombatLog_Config["colors"][1]; arg1 = aclarg; ACL_Temp = {}; end aclarg = string.gsub(aclarg, "|r", ""); aclarg = string.gsub(aclarg, "|c........", ""); table.insert(AdvCombatLog_Log, aclarg); end end end end