diff --git a/Libs/DF/auras.lua b/Libs/DF/auras.lua
index 58f7f7925..4f1fba8ac 100644
--- a/Libs/DF/auras.lua
+++ b/Libs/DF/auras.lua
@@ -813,7 +813,7 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
icon:SetSize(lineHeight - 2, lineHeight - 2)
local name = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
- DF:SetFontSize (name, 10)
+ DF:SetFontSize(name, 10)
local remove_button = CreateFrame("button", "$parentRemoveButton", line, "UIPanelCloseButton")
remove_button:SetSize(16, 16)
diff --git a/Libs/DF/button.lua b/Libs/DF/button.lua
index 9b187c27e..a8f45c222 100644
--- a/Libs/DF/button.lua
+++ b/Libs/DF/button.lua
@@ -205,7 +205,7 @@ DF:Mixin(ButtonMetaFunctions, DF.ScriptHookMixin)
--text size
local smember_textsize = function(object, value)
- return DF:SetFontSize (object.button.text, value)
+ return DF:SetFontSize(object.button.text, value)
end
--texture
diff --git a/Libs/DF/charts.lua b/Libs/DF/charts.lua
new file mode 100644
index 000000000..744991c0d
--- /dev/null
+++ b/Libs/DF/charts.lua
@@ -0,0 +1,259 @@
+
+local DF = _G["DetailsFramework"]
+if (not DF or not DetailsFrameworkCanLoad) then
+ return
+end
+
+local _
+
+local ChartFrameMixin = {
+ ChartFrameConstructor = function(self)
+ self.nextLine = 1
+ self.minValue = 0
+ self.maxValue = 1
+ self.lineThickness = 1
+ self.data = {}
+ self.lines = {}
+
+ --OnSizeChanged
+ self:SetScript("OnSizeChanged", self.OnSizeChanged)
+ end,
+
+ --internally handle next line
+ GetLine = function(self)
+ local line = self.lines[self.nextLine]
+ if (not line) then
+ line = self:CreateLine(nil, "overlay")
+ self.lines[self.nextLine] = line
+ end
+ self.nextLine = self.nextLine + 1
+ line:Show()
+ return line
+ end,
+
+ GetLines = function(self)
+ return self.lines
+ end,
+
+ GetAmountLines = function(self)
+ return self.nextLine - 1
+ end,
+
+ HideLines = function(self)
+ local allLines = self:GetLines()
+ for i = 1, #allLines do
+ local line = allLines[i]
+ line:Hide()
+ end
+ end,
+
+ Reset = function(self)
+ self:HideLines()
+ self.nextLine = 1
+ end,
+
+ SetLineThickness = function(self, value)
+ assert(type(value) == "number", "number expected on :SetLineThickness(number)")
+ self.lineThickness = value
+ end,
+
+ --calculate the width of each drawn line
+ GetLineWidth = function(self)
+ --self:SetLineWidth(nil) to erase the fixed value
+ if (self.fixedLineWidth) then
+ return self.fixedLineWidth
+ else
+ local amountData = self:GetDataSize()
+ local frameWidth = self:GetWidth()
+ return frameWidth / amountData
+ end
+ end,
+
+ SetLineWidth = function(self, width)
+ assert(type(width) == "number", "number expected on :SetLineWidth(number)")
+ self.fixedLineWidth = width
+ end,
+
+ CalcYAxisPointForValue = function(self, value)
+ return value / self.maxValue * self.height
+ end,
+
+ UpdateFrameSizeCache = function(self)
+ self.width = self:GetWidth()
+ self.height = self:GetHeight()
+ end,
+
+ OnSizeChanged = function(self)
+ self:UpdateFrameSizeCache()
+ end,
+
+ Plot = function(self)
+ --debug
+ --self:SetData({38, 26, 12, 63, 100, 96, 42, 94, 25, 75, 61, 54, 71, 40, 34, 100, 66, 90, 39, 13, 99, 18, 72, 18, 83, 45, 56, 24, 33, 85, 95, 71, 15, 66, 19, 58, 52, 9, 83, 99, 100, 4, 3, 56, 6, 80, 94, 7, 40, 55, 98, 92, 20, 9, 35, 89, 72, 7, 13, 81, 29, 78, 55, 70, 12, 33, 39, 3, 84, 31, 10, 53, 51, 69, 66, 58, 71, 60, 31, 71, 27, 76, 21, 75, 15, 89, 2, 81, 72, 78, 74, 80, 97, 10, 59, 0, 31, 5, 1, 82, 71, 89, 78, 94, 74, 20, 65, 72, 56, 40, 92, 91, 40, 79, 4, 56, 18, 88, 88, 20, 20, 10, 47, 26, 80, 26, 75, 21, 57, 10, 67, 66, 84, 83, 14, 47, 83, 9, 7, 73, 63, 32, 64, 20, 40, 3, 46, 54, 17, 37, 82, 66, 65, 22, 12, 1, 100, 41, 1, 72, 38, 41, 71, 69, 88, 34, 10, 50, 9, 25, 19, 27, 3, 13, 40, 75, 3, 11, 93, 58, 81, 80, 93, 25, 74, 68, 91, 87, 79, 48, 66, 53, 64, 18, 51, 19, 32, 4, 21, 43})
+ local currentXPoint = 0
+ local currentYPoint = 0
+
+ self:UpdateFrameSizeCache()
+
+ --max amount of data is the max amount of point the chart will have
+ local maxLines = self:GetDataSize()
+
+ --calculate where the first point height will be
+ local firstValue = self:GetDataFirstValue()
+ assert(firstValue, "Can't Plot(), chart has no data, use Chart:SetData(table)")
+
+ currentYPoint = self:CalcYAxisPointForValue(firstValue)
+
+ --calculate the width space which line should have
+ local eachLineWidth = self:GetLineWidth()
+
+ self:ResetDataIndex()
+
+ for i = 1, maxLines do
+ local line = self:GetLine()
+ line:SetColorTexture(1, 1, 1, 1)
+ line:SetThickness(1)
+
+ --the start point starts where the latest point finished
+ line:SetStartPoint("bottomleft", currentXPoint, currentYPoint)
+
+ --move x
+ currentXPoint = currentXPoint + eachLineWidth
+
+ --end point
+ local value = self:GetDataNextValue()
+ currentYPoint = self:CalcYAxisPointForValue(value)
+ line:SetEndPoint("bottomleft", currentXPoint, currentYPoint)
+ end
+ end,
+}
+
+
+local createChartFrame = function(parent, name)
+ local f = CreateFrame("frame", name, parent, "BackdropTemplate")
+
+ DF:Mixin(f, DF.DataMixin)
+ DF:Mixin(f, DF.ValueMixin)
+ DF:Mixin(f, ChartFrameMixin)
+
+ f:DataConstructor()
+ f:ValueConstructor()
+ f:ChartFrameConstructor()
+
+ --when a new data is set, update the min and max values
+ local onSetDataCallback = function()
+ local minValue, maxValue = f:GetDataMinMaxValues()
+ f:SetMinMaxValues(minValue, maxValue)
+ --clear the lines
+ f:HideLines()
+ end
+ f:AddDataChangeCallback(onSetDataCallback)
+
+ return f
+end
+
+function DF:CreateGraphicLineFrame(parent, name)
+ local newGraphicFrame = createChartFrame(parent, name)
+ return newGraphicFrame
+end
+
+local MultiChartFrameMixin = {
+ MultiChartFrameConstructor = function(self)
+ self.nextChartselframe = 1
+ self.biggestDataValue = 0
+ self.chartFrames = {}
+ end,
+
+ AddData = function(self, data)
+ assert(type(data) == "table", "MultiChartFrame:AddData() usage: AddData(table)")
+ local chartFrame = self:GetChart()
+ chartFrame:SetData(data)
+
+ self:SetMaxValueIfBigger(chartFrame:GetMaxValue())
+ self:SetMinValueIfLower(chartFrame:GetMinValue())
+
+ local dataAmount = chartFrame:GetDataSize()
+ self:SetMaxDataSize(dataAmount)
+ end,
+
+ --internally handle next line
+ GetChart = function(self)
+ local chartFrame = self.chartFrames[self.nextChartFrame]
+ if (not chartFrame) then
+ chartFrame = createChartFrame(self, "$parentChartFrame" .. self.nextChartFrame)
+ chartFrame:SetAllPoints()
+ chartFrame:UpdateFrameSizeCache()
+ self.chartFrames[self.nextChartFrame] = chartFrame
+ end
+ self.nextChartFrame = self.nextChartFrame + 1
+ chartFrame:Show()
+ return chartFrame
+ end,
+
+ GetCharts = function(self)
+ return self.chartFrames
+ end,
+
+ GetAmountCharts = function(self)
+ return self.nextChartFrame - 1
+ end,
+
+ HideCharts = function(self)
+ local charts = self:GetCharts()
+ for i = 1, #charts do
+ local chartFrame = charts[i]
+ chartFrame:Hide()
+ end
+ end,
+
+ Reset = function(self)
+ self:HideCharts()
+ self.nextChartFrame = 1
+ end,
+
+ SetChartsMinMaxValues = function(self, minValue, maxValue)
+ local allCharts = self:GetCharts()
+ for i = 1, self:GetAmountCharts() do
+ local chartFrame = allCharts[i]
+ chartFrame:SetMinMaxValues(minValue, maxValue)
+ end
+ end,
+
+ SetMaxDataSize = function(self, dataSize)
+ self.biggestDataValue = max(self.biggestDataValue, dataSize)
+ end,
+
+ GetMaxDataSize = function(self)
+ return self.biggestDataValue
+ end,
+
+ Plot = function(self)
+ local minValue, maxValue = self:GetMinMaxValues()
+ self:SetChartsMinMaxValues(minValue, maxValue)
+
+ local plotAreaWidth = self:GetWidth()
+ local maxDataSize = self:GetMaxDataSize()
+ local eachLineWidth = plotAreaWidth / maxDataSize
+
+ local allCharts = self:GetCharts()
+ for i = 1, self:GetAmountCharts() do
+ local chartFrame = allCharts[i]
+ chartFrame:SetLineWidth(eachLineWidth)
+ chartFrame:Plot()
+ end
+ end,
+}
+
+function DF:CreateGraphicMultiLineFrame(parent, name)
+ name = name or ("DetailsMultiChartFrameID" .. math.random(1, 10000000))
+
+ local f = CreateFrame("frame", name, parent, "BackdropTemplate")
+
+ DF:Mixin(f, DF.ValueMixin)
+ DF:Mixin(f, MultiChartFrameMixin)
+
+ f:ValueConstructor()
+ f:MultiChartFrameConstructor()
+
+ return f
+end
\ No newline at end of file
diff --git a/Libs/DF/cooltip.lua b/Libs/DF/cooltip.lua
index 28f5688b5..67ea29230 100644
--- a/Libs/DF/cooltip.lua
+++ b/Libs/DF/cooltip.lua
@@ -15,7 +15,7 @@ local max = math.max
--api locals
local PixelUtil = PixelUtil or DFPixelUtil
-local version = 5
+local version = 6
local CONST_MENU_TYPE_MAINMENU = "main"
local CONST_MENU_TYPE_SUBMENU = "sub"
@@ -3207,6 +3207,31 @@ function DF:CreateCoolTip()
gameCooltip:Hide()
end)
end
+
+ local cyrillic = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯЁЂЃЄЅІЇЈЉЊЋЌЎЏҐабвгдежзийклмнопрстуфхцчшщъыьэюяёђѓєѕіїјљњћќўџґАаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя"
+ local latin = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ local chinese = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ"
+
+ local alphabetTable = {}
+
+ for letter in latin:gmatch(".") do
+ alphabetTable[letter] = "enUS"
+ end
+ for letter in cyrillic:gmatch(".") do
+ alphabetTable[letter] = "ruRU"
+ end
+ for letter in chinese:gmatch(".") do
+ alphabetTable[letter] = "zhCN"
+ end
+
+ function gameCooltip:DetectLanguageId(text)
+ for letter in text:gmatch(".") do
+ if (alphabetTable[letter]) then
+ return alphabetTable[letter]
+ end
+ end
+ end
+
return gameCooltip
end
diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua
index a2eb7b30d..c82204f80 100644
--- a/Libs/DF/fw.lua
+++ b/Libs/DF/fw.lua
@@ -1,6 +1,6 @@
-local dversion = 381
+local dversion = 382
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary(major, minor)
@@ -3384,7 +3384,7 @@ end
--this is most copied from the wow client code, few changes applied to customize it
function DF:CreateGlowOverlay (parent, antsColor, glowColor)
- local glowFrame = CreateFrame("frame", parent:GetName() and "$parentGlow2" or "OverlayActionGlow" .. math.random (1, 10000000), parent, "ActionBarButtonSpellActivationAlert")
+ local glowFrame = CreateFrame("frame", parent:GetName() and "$parentGlow2" or "OverlayActionGlow" .. math.random(1, 10000000), parent, "ActionBarButtonSpellActivationAlert")
glowFrame:HookScript ("OnShow", glow_overlay_onshow)
glowFrame:HookScript ("OnHide", glow_overlay_onhide)
diff --git a/Libs/DF/load.xml b/Libs/DF/load.xml
index 404ef22b6..7380d8d50 100644
--- a/Libs/DF/load.xml
+++ b/Libs/DF/load.xml
@@ -18,6 +18,7 @@
+
diff --git a/Libs/DF/mixins.lua b/Libs/DF/mixins.lua
index 82d057a79..f29b38fdd 100644
--- a/Libs/DF/mixins.lua
+++ b/Libs/DF/mixins.lua
@@ -685,4 +685,143 @@ detailsFramework.SortFunctions = {
table.sort(thisTable, SortByMemberReverse)
end
end
+}
+
+detailsFramework.DataMixin = {
+ DataConstructor = function(self)
+ self._dataInfo = {
+ data = {},
+ dataCurrentIndex = 1,
+ callbacks = {},
+ }
+ end,
+
+ AddDataChangeCallback = function(self, func, ...)
+ assert(type(func) == "function", "invalid function for AddDataChangeCallback.")
+ local allCallbacks = self._dataInfo.callbacks
+ allCallbacks[func] = {...}
+ end,
+
+ RemoveDataChangeCallback = function(self, func)
+ assert(type(func) == "function", "invalid function for RemoveDataChangeCallback.")
+ local allCallbacks = self._dataInfo.callbacks
+ allCallbacks[func] = nil
+ end,
+
+ SetData = function(self, data)
+ assert(type(data) == "table", "invalid table for SetData.")
+ self._dataInfo.data = data
+ self:ResetDataIndex()
+
+ local allCallbacks = self._dataInfo.callbacks
+ for func, payload in pairs(allCallbacks) do
+ xpcall(func, geterrorhandler(), data, unpack(payload))
+ end
+ end,
+
+ GetData = function(self)
+ return self._dataInfo.data
+ end,
+
+ GetDataNextValue = function(self)
+ local currentValue = self._dataInfo.dataCurrentIndex
+ local value = self:GetData()[currentValue]
+ self._dataInfo.dataCurrentIndex = self._dataInfo.dataCurrentIndex + 1
+ return value
+ end,
+
+ ResetDataIndex = function(self)
+ self._dataInfo.dataCurrentIndex = 1
+ end,
+
+ GetDataSize = function(self)
+ return #self:GetData()
+ end,
+
+ GetDataFirstValue = function(self)
+ return self:GetData()[1]
+ end,
+
+ GetDataLastValue = function(self)
+ local data = self:GetData()
+ return data[#data]
+ end,
+
+ --if the value stored is number, return the min and max values
+ GetDataMinMaxValues = function(self)
+ local minDataValue = 0
+ local maxDataValue = 0
+
+ local data = self:GetData()
+ for i = 1, #data do
+ local thisData = data[i]
+ if (thisData > maxDataValue) then
+ maxDataValue = thisData
+
+ elseif (thisData < minDataValue) then
+ minDataValue = thisData
+ end
+ end
+
+ return minDataValue, maxDataValue
+ end,
+
+ --when data uses sub tables, get the min max values from a specific index or key
+ GetDataMinMaxValueFromSubTable = function(self, key)
+ local minDataValue = 0
+ local maxDataValue = 0
+
+ local data = self:GetData()
+ for i = 1, #data do
+ local thisData = data[i]
+ if (thisData[key] > maxDataValue) then
+ maxDataValue = thisData[key]
+
+ elseif (thisData[key] < minDataValue) then
+ minDataValue = thisData[key]
+ end
+ end
+
+ return minDataValue, maxDataValue
+ end,
+}
+
+detailsFramework.ValueMixin = {
+ ValueConstructor = function(self)
+ self.minValue = 0
+ self.maxValue = 1
+ end,
+
+ SetMinMaxValues = function(self, minValue, maxValue)
+ self.minValue = minValue
+ self.maxValue = maxValue
+ end,
+
+ GetMinMaxValues = function(self)
+ return self.minValue, self.maxValue
+ end,
+
+ GetMinValue = function(self)
+ return self.minValue
+ end,
+
+ GetMaxValue = function(self)
+ return self.maxValue
+ end,
+
+ SetMinValue = function(self, minValue)
+ self.minValue = minValue
+ end,
+
+ SetMinValueIfLower = function(self, ...)
+ self.minValue = min(self.minValue, ...)
+ end,
+
+ SetMaxValue = function(self, maxValue)
+ self.maxValue = maxValue
+ end,
+
+ SetMaxValueIfBigger = function(self, ...)
+ self.maxValue = max(self.maxValue, ...)
+ end,
}
\ No newline at end of file
diff --git a/Libs/DF/normal_bar.lua b/Libs/DF/normal_bar.lua
index e623f2737..19e9b1757 100644
--- a/Libs/DF/normal_bar.lua
+++ b/Libs/DF/normal_bar.lua
@@ -302,8 +302,8 @@ DF:Mixin(BarMetaFunctions, DF.ScriptHookMixin)
end
--font size
local smember_textsize = function(_object, _value)
- DF:SetFontSize (_object.textleft, _value)
- return DF:SetFontSize (_object.textright, _value)
+ DF:SetFontSize(_object.textleft, _value)
+ return DF:SetFontSize(_object.textright, _value)
end
--font color
local smember_textcolor = function(_object, _value)
@@ -613,7 +613,7 @@ DF:Mixin(BarMetaFunctions, DF.ScriptHookMixin)
--right text
self.remaining = self.remaining - elapsed
if (self.MyObject.RightTextIsTimer) then
- self.righttext:SetText(DF:IntegerToTimer (self.remaining))
+ self.righttext:SetText(DF:IntegerToTimer(self.remaining))
else
self.righttext:SetText(_math_floor(self.remaining))
end
@@ -739,11 +739,11 @@ local build_statusbar = function(self)
self.lefttext = self:CreateFontString("$parent_TextLeft", "OVERLAY", "GameFontHighlight")
self.lefttext:SetJustifyH("LEFT")
self.lefttext:SetPoint("LEFT", self.icontexture, "RIGHT", 3, 0)
- DF:SetFontSize (self.lefttext, 10)
+ DF:SetFontSize(self.lefttext, 10)
self.righttext = self:CreateFontString("$parent_TextRight", "OVERLAY", "GameFontHighlight")
self.righttext:SetJustifyH("LEFT")
- DF:SetFontSize (self.righttext, 10)
+ DF:SetFontSize(self.righttext, 10)
self.righttext:SetPoint("RIGHT", self, "RIGHT", -3, 0)
DetailsFrameworkNormalBar_OnCreate (self)
diff --git a/Libs/DF/panel.lua b/Libs/DF/panel.lua
index 898234b69..f21cf46d0 100644
--- a/Libs/DF/panel.lua
+++ b/Libs/DF/panel.lua
@@ -783,7 +783,7 @@ local align_rows = function(self)
text:SetPoint("left", line, "left", self._anchors [#self._anchors], 0)
text:SetWidth(row.width)
- detailsFramework:SetFontSize (text, row.textsize or 10)
+ detailsFramework:SetFontSize(text, row.textsize or 10)
text:SetJustifyH(row.textalign or "left")
end
elseif (rowType == "entry") then
@@ -953,7 +953,7 @@ local update_rows = function(self, updated_rows)
--
widget.text:SetText(t.name)
- detailsFramework:SetFontSize (widget.text, raw.textsize or 10)
+ detailsFramework:SetFontSize(widget.text, raw.textsize or 10)
widget.text:SetJustifyH(raw.textalign or "left")
end
end
@@ -2874,82 +2874,80 @@ local chart_panel_onresize = function(self)
self.Graphic:SetPoint("topleft", self, "topleft", 108, -35)
end
-local chart_panel_add_data = function(self, graphicData, color, name, elapsed_time, lineTexture, smoothLevel, firstIndex)
- local f = self
- self = self.Graphic
-
- local _data = {}
- local max_value = graphicData.max_value
- local amount = #graphicData
-
- local scaleW = 1/self:GetWidth()
+local chart_panel_add_data = function(self, graphicData, color, name, elapsedTime, lineTexture, smoothLevel, firstIndex)
+ local chartPanel = self --chartPanel from the framework CreateChartPanel
+ local LibGraphChartFrame = self.Graphic
+ local builtData = {}
+ local maxValue = graphicData.max_value
+ local scaleWidth = 1 / LibGraphChartFrame:GetWidth()
local content = graphicData
+
+ --smooth the start and end of the chart
tinsert(content, 1, 0)
tinsert(content, 1, 0)
tinsert(content, #content+1, 0)
tinsert(content, #content+1, 0)
- local _i = 3
-
- local graphMaxDps = math.max(self.max_value, max_value)
+ local index = 3
+ local graphMaxDps = math.max(LibGraphChartFrame.max_value, maxValue)
+ --do smoothness progress
if (not smoothLevel) then
- while (_i <= #content-2) do
- local v = (content[_i-2]+content[_i-1]+content[_i]+content[_i+1]+content[_i+2])/5 --normalize
- _data [#_data+1] = {scaleW*(_i-2), v/graphMaxDps} --x and y coords
- _i = _i + 1
+ while (index <= #content-2) do
+ local value = (content[index-2] + content[index-1] + content[index] + content[index+1] + content[index+2]) / 5 --normalize
+ builtData[#builtData+1] = {scaleWidth * (index-2), value / graphMaxDps} -- x and y coords
+ index = index + 1
end
elseif (smoothLevel == "SHORT") then
- while (_i <= #content-2) do
- local value = (content[_i] + content[_i+1]) / 2
- _data [#_data+1] = {scaleW*(_i-2), value}
- _data [#_data+1] = {scaleW*(_i-2), value}
- _i = _i + 2
+ while (index <= #content-2) do
+ local value = (content[index] + content[index+1]) / 2
+ builtData [#builtData+1] = {scaleWidth*(index-2), value}
+ builtData [#builtData+1] = {scaleWidth*(index-2), value}
+ index = index + 2
end
elseif (smoothLevel == "SMA") then
reset_SMA()
- while (_i <= #content-2) do
- local value, is_new_max_value = do_SMA (content[_i], max_value)
+ while (index <= #content-2) do
+ local value, is_new_max_value = do_SMA(content[index], maxValue)
if (is_new_max_value) then
- max_value = is_new_max_value
+ maxValue = is_new_max_value
end
- _data [#_data+1] = {scaleW*(_i-2), value} --x and y coords
- _i = _i + 1
+ builtData [#builtData+1] = {scaleWidth * (index-2), value} -- x and y coords
+ index = index + 1
end
elseif (smoothLevel == -1) then
- while (_i <= #content-2) do
- local current = content[_i]
+ while (index <= #content-2) do
+ local current = content[index]
- local minus_2 = content[_i-2] * 0.6
- local minus_1 = content[_i-1] * 0.8
- local plus_1 = content[_i+1] * 0.8
- local plus_2 = content[_i+2] * 0.6
+ local minus_2 = content[index-2] * 0.6
+ local minus_1 = content[index-1] * 0.8
+ local plus_1 = content[index+1] * 0.8
+ local plus_2 = content[index+2] * 0.6
- local v = (current + minus_2 + minus_1 + plus_1 + plus_2)/5 --normalize
- _data [#_data+1] = {scaleW*(_i-2), v/graphMaxDps} --x and y coords
- _i = _i + 1
+ local value = (current + minus_2 + minus_1 + plus_1 + plus_2) / 5 --normalize
+ builtData [#builtData+1] = {scaleWidth * (index-2), value / graphMaxDps} -- x and y coords
+ index = index + 1
end
elseif (smoothLevel == 1) then
- _i = 2
- while (_i <= #content-1) do
- local v = (content[_i-1]+content[_i]+content[_i+1])/3 --normalize
- _data [#_data+1] = {scaleW*(_i-1), v/graphMaxDps} --x and y coords
- _i = _i + 1
+ index = 2
+ while (index <= #content-1) do
+ local value = (content[index-1]+content[index]+content[index+1])/3 --normalize
+ builtData [#builtData+1] = {scaleWidth*(index-1), value/graphMaxDps} -- x and y coords
+ index = index + 1
end
elseif (smoothLevel == 2) then
- _i = 1
- while (_i <= #content) do
- local v = content[_i] --do not normalize
- _data [#_data+1] = {scaleW*(_i), v/graphMaxDps} --x and y coords
- _i = _i + 1
+ index = 1
+ while (index <= #content) do
+ local value = content[index] --do not normalize
+ builtData [#builtData+1] = {scaleWidth*(index), value/graphMaxDps} -- x and y coords
+ index = index + 1
end
-
end
tremove(content, 1)
@@ -2957,55 +2955,46 @@ local chart_panel_add_data = function(self, graphicData, color, name, elapsed_ti
tremove(content, #graphicData)
tremove(content, #graphicData)
- if (max_value > self.max_value) then
+ if (maxValue > LibGraphChartFrame.max_value) then
--normalize previous data
- if (self.max_value > 0) then
- local normalizePercent = self.max_value / max_value
- for dataIndex, Data in ipairs(self.Data) do
+ if (LibGraphChartFrame.max_value > 0) then
+ local normalizePercent = LibGraphChartFrame.max_value / maxValue
+ for dataIndex, Data in ipairs(LibGraphChartFrame.Data) do
local Points = Data.Points
for i = 1, #Points do
- Points[i][2] = Points[i][2]*normalizePercent
+ Points[i][2] = Points[i][2] * normalizePercent
end
end
end
- self.max_value = max_value
- f:SetScale(max_value)
+ LibGraphChartFrame.max_value = maxValue
+ chartPanel:SetScale(maxValue)
end
- tinsert(f.GData, {_data, color or line_default_color, lineTexture, max_value, elapsed_time})
+ tinsert(chartPanel.GData, {builtData, color or line_default_color, lineTexture, maxValue, elapsedTime})
if (name) then
- f:AddLabel (color or line_default_color, name, "graphic", #f.GData)
+ chartPanel:AddLabel(color or line_default_color, name, "graphic", #chartPanel.GData)
end
- if (firstIndex) then
- if (lineTexture) then
- if (not lineTexture:find("\\") and not lineTexture:find("//")) then
- local path = string.match(debugstack (1, 1, 0), "AddOns\\(.+)LibGraph%-2%.0%.lua")
- if path then
- lineTexture = "Interface\\AddOns\\" .. path .. lineTexture
- else
- lineTexture = nil
- end
- end
- end
+ local newLineTexture = "Interface\\AddOns\\Details\\Libs\\LibGraph-2.0\\line"
- table.insert (self.Data, 1, {Points = _data, Color = color or line_default_color, lineTexture = lineTexture, ElapsedTime = elapsed_time})
- self.NeedsUpdate = true
+ if (firstIndex) then
+ table.insert(LibGraphChartFrame.Data, 1, {Points = builtData, Color = color or line_default_color, lineTexture = newLineTexture, ElapsedTime = elapsedTime})
+ LibGraphChartFrame.NeedsUpdate = true
else
- self:AddDataSeries (_data, color or line_default_color, nil, lineTexture)
- self.Data [#self.Data].ElapsedTime = elapsed_time
+ LibGraphChartFrame:AddDataSeries(builtData, color or line_default_color, nil, newLineTexture)
+ LibGraphChartFrame.Data[#LibGraphChartFrame.Data].ElapsedTime = elapsedTime
end
- local max_time = 0
- for _, data in ipairs(self.Data) do
- if (data.ElapsedTime > max_time) then
- max_time = data.ElapsedTime
+ local maxTime = 0
+ for _, data in ipairs(LibGraphChartFrame.Data) do
+ if (data.ElapsedTime > maxTime) then
+ maxTime = data.ElapsedTime
end
end
- f:SetTime(max_time)
- chart_panel_onresize (f)
+ chartPanel:SetTime(maxTime)
+ chart_panel_onresize(chartPanel)
end
@@ -3061,50 +3050,50 @@ local chart_panel_right_click_close = function(self, value)
end
end
-function detailsFramework:CreateChartPanel(parent, w, h, name)
+function detailsFramework:CreateChartPanel(parent, width, height, name)
if (not name) then
name = "DFPanel" .. detailsFramework.PanelCounter
detailsFramework.PanelCounter = detailsFramework.PanelCounter + 1
end
parent = parent or UIParent
- w = w or 800
- h = h or 500
+ width = width or 800
+ height = height or 500
- local f = CreateFrame("frame", name, parent, "BackdropTemplate")
- f:SetSize(w or 500, h or 400)
- f:EnableMouse(true)
- f:SetMovable(true)
+ local chartFrame = CreateFrame("frame", name, parent, "BackdropTemplate")
+ chartFrame:SetSize(width or 500, height or 400)
+ chartFrame:EnableMouse(true)
+ chartFrame:SetMovable(true)
- f:SetScript("OnMouseDown", chart_panel_mousedown)
- f:SetScript("OnMouseUp", chart_panel_mouseup)
+ chartFrame:SetScript("OnMouseDown", chart_panel_mousedown)
+ chartFrame:SetScript("OnMouseUp", chart_panel_mouseup)
- f:SetBackdrop(chart_panel_backdrop)
- f:SetBackdropColor(.3, .3, .3, .3)
+ chartFrame:SetBackdrop(chart_panel_backdrop)
+ chartFrame:SetBackdropColor(.3, .3, .3, .3)
- local c = CreateFrame("Button", nil, f, "UIPanelCloseButton", "BackdropTemplate")
- c:SetWidth(32)
- c:SetHeight(32)
- c:SetPoint("TOPRIGHT", f, "TOPRIGHT", -3, -7)
- c:SetFrameLevel(f:GetFrameLevel()+1)
- c:SetAlpha(0.9)
- f.CloseButton = c
+ local closeButton = CreateFrame("Button", nil, chartFrame, "UIPanelCloseButton", "BackdropTemplate")
+ closeButton:SetWidth(32)
+ closeButton:SetHeight(32)
+ closeButton:SetPoint("TOPRIGHT", chartFrame, "TOPRIGHT", -3, -7)
+ closeButton:SetFrameLevel(chartFrame:GetFrameLevel()+1)
+ closeButton:SetAlpha(0.9)
+ chartFrame.CloseButton = closeButton
- local title = detailsFramework:NewLabel(f, nil, "$parentTitle", "chart_title", "Chart!", nil, 20, {1, 1, 0})
- title:SetPoint("topleft", f, "topleft", 110, -13)
+ local title = detailsFramework:NewLabel(chartFrame, nil, "$parentTitle", "chart_title", "Chart!", nil, 20, {1, 1, 0})
+ title:SetPoint("topleft", chartFrame, "topleft", 110, -13)
- f.Overlays = {}
- f.OverlaysAmount = 1
+ chartFrame.Overlays = {}
+ chartFrame.OverlaysAmount = 1
- f.BoxLabels = {}
- f.BoxLabelsAmount = 1
+ chartFrame.BoxLabels = {}
+ chartFrame.BoxLabelsAmount = 1
- f.ShowHeader = true
- f.HeaderOnlyIndicator = false
- f.HeaderShowOverlays = true
+ chartFrame.ShowHeader = true
+ chartFrame.HeaderOnlyIndicator = false
+ chartFrame.HeaderShowOverlays = true
--graphic
- local g = LibStub:GetLibrary("LibGraph-2.0"):CreateGraphLine (name .. "Graphic", f, "topleft","topleft", 108, -35, w - 120, h - 67)
+ local g = LibStub:GetLibrary("LibGraph-2.0"):CreateGraphLine (name .. "Graphic", chartFrame, "topleft","topleft", 108, -35, width - 120, height - 67)
g:SetXAxis (-1,1)
g:SetYAxis (-1,1)
g:SetGridSpacing (false, false)
@@ -3122,10 +3111,10 @@ function detailsFramework:CreateChartPanel(parent, w, h, name)
g:SetLineTexture ("line")
- f.Graphic = g
- f.GData = {}
- f.OData = {}
- f.ChartFrames = {}
+ chartFrame.Graphic = g
+ chartFrame.GData = {}
+ chartFrame.OData = {}
+ chartFrame.ChartFrames = {}
--div lines
for i = 1, 8, 1 do
@@ -3134,10 +3123,10 @@ function detailsFramework:CreateChartPanel(parent, w, h, name)
line:SetWidth(670)
line:SetHeight(1.1)
- local s = f:CreateFontString(nil, "overlay", "GameFontHighlightSmall")
- f ["dpsamt"..i] = s
+ local s = chartFrame:CreateFontString(nil, "overlay", "GameFontHighlightSmall")
+ chartFrame ["dpsamt"..i] = s
s:SetText("100k")
- s:SetPoint("topleft", f, "topleft", 27, -61 + (-(24.6*i)))
+ s:SetPoint("topleft", chartFrame, "topleft", 27, -61 + (-(24.6*i)))
line:SetPoint("topleft", s, "bottom", -27, 0)
line:SetPoint("topright", g, "right", 0, 0)
@@ -3145,49 +3134,49 @@ function detailsFramework:CreateChartPanel(parent, w, h, name)
end
--create time labels and the bottom texture to use as a background to these labels
- f.TimeLabels = {}
- f.TimeLabelsHeight = 16
+ chartFrame.TimeLabels = {}
+ chartFrame.TimeLabelsHeight = 16
for i = 1, 17 do
- local timeString = f:CreateFontString(nil, "overlay", "GameFontHighlightSmall")
+ local timeString = chartFrame:CreateFontString(nil, "overlay", "GameFontHighlightSmall")
timeString:SetText("00:00")
- timeString:SetPoint("bottomleft", f, "bottomleft", 78 + ((i-1)*36), f.TimeLabelsHeight)
- f.TimeLabels [i] = timeString
+ timeString:SetPoint("bottomleft", chartFrame, "bottomleft", 78 + ((i-1)*36), chartFrame.TimeLabelsHeight)
+ chartFrame.TimeLabels [i] = timeString
- local line = f:CreateTexture(nil, "border")
- line:SetSize(1, h-45)
+ local line = chartFrame:CreateTexture(nil, "border")
+ line:SetSize(1, height-45)
line:SetColorTexture(1, 1, 1, .1)
line:SetPoint("bottomleft", timeString, "topright", 0, -10)
line:Hide()
timeString.line = line
end
- local bottom_texture = detailsFramework:NewImage(f, nil, 702, 25, "background", nil, nil, "$parentBottomTexture")
+ local bottom_texture = detailsFramework:NewImage(chartFrame, nil, 702, 25, "background", nil, nil, "$parentBottomTexture")
bottom_texture:SetColorTexture(.1, .1, .1, .7)
bottom_texture:SetPoint("topright", g, "bottomright", 0, 0)
- bottom_texture:SetPoint("bottomleft", f, "bottomleft", 8, 12)
+ bottom_texture:SetPoint("bottomleft", chartFrame, "bottomleft", 8, 12)
- f.SetTime = chart_panel_align_timelabels
- f.EnableVerticalLines = chart_panel_vlines_on
- f.DisableVerticalLines = chart_panel_vlines_off
- f.SetTitle = chart_panel_set_title
- f.SetScale = chart_panel_set_scale
- f.Reset = chart_panel_reset
- f.AddLine = chart_panel_add_data
- f.CanMove = chart_panel_can_move
- f.AddLabel = chart_panel_add_label
- f.AddOverlay = chart_panel_add_overlay
- f.HideCloseButton = chart_panel_hide_close_button
- f.RightClickClose = chart_panel_right_click_close
- f.CalcStdDev = calc_stddev
- f.CalcLowessSmoothing = calc_lowess_smoothing
+ chartFrame.SetTime = chart_panel_align_timelabels
+ chartFrame.EnableVerticalLines = chart_panel_vlines_on
+ chartFrame.DisableVerticalLines = chart_panel_vlines_off
+ chartFrame.SetTitle = chart_panel_set_title
+ chartFrame.SetScale = chart_panel_set_scale
+ chartFrame.Reset = chart_panel_reset
+ chartFrame.AddLine = chart_panel_add_data
+ chartFrame.CanMove = chart_panel_can_move
+ chartFrame.AddLabel = chart_panel_add_label
+ chartFrame.AddOverlay = chart_panel_add_overlay
+ chartFrame.HideCloseButton = chart_panel_hide_close_button
+ chartFrame.RightClickClose = chart_panel_right_click_close
+ chartFrame.CalcStdDev = calc_stddev
+ chartFrame.CalcLowessSmoothing = calc_lowess_smoothing
- f:SetScript("OnSizeChanged", chart_panel_onresize)
- chart_panel_onresize(f)
+ chartFrame:SetScript("OnSizeChanged", chart_panel_onresize)
+ chart_panel_onresize(chartFrame)
- return f
+ return chartFrame
end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -3264,13 +3253,13 @@ local gframe_create_line = function(self)
textBackground:SetColorTexture(0, 0, 0, 0.5)
textBackground:SetPoint("bottom", f.ball, "top", 0, -6)
text:SetPoint("center", textBackground, "center")
- detailsFramework:SetFontSize (text, 10)
+ detailsFramework:SetFontSize(text, 10)
f.text = text
f.textBackground = textBackground
local timeline = f:CreateFontString(nil, "overlay", "GameFontNormal")
timeline:SetPoint("bottomright", f, "bottomright", -2, 0)
- detailsFramework:SetFontSize (timeline, 8)
+ detailsFramework:SetFontSize(timeline, 8)
f.timeline = timeline
return f
@@ -3351,34 +3340,32 @@ local gframe_update = function(self, lines)
o = o + 1
end
-
end
-function detailsFramework:CreateGFrame (parent, w, h, linewidth, onenter, onleave, member, name)
- local f = CreateFrame("frame", name, parent, "BackdropTemplate")
- f:SetSize(w or 450, h or 150)
- --f.CustomLine = [[Interface\AddOns\Details\Libs\LibGraph-2.0\line]]
+function detailsFramework:CreateGFrame(parent, width, height, lineWidth, onEnter, onLeave, member, name)
+ local newGraphicFrame = CreateFrame("frame", name, parent, "BackdropTemplate")
+ newGraphicFrame:SetSize(width or 450, height or 150)
if (member) then
- parent [member] = f
+ parent[member] = newGraphicFrame
end
- f.CreateLine = gframe_create_line
- f.GetLine = gframe_getline
- f.Reset = gframe_reset
- f.UpdateLines = gframe_update
+ newGraphicFrame.CreateLine = gframe_create_line
+ newGraphicFrame.GetLine = gframe_getline
+ newGraphicFrame.Reset = gframe_reset
+ newGraphicFrame.UpdateLines = gframe_update
- f.MaxValue = 0
+ newGraphicFrame.MaxValue = 0
- f._lines = {}
+ newGraphicFrame._lines = {}
- f._onenter_line = onenter
- f._onleave_line = onleave
+ newGraphicFrame._onenter_line = onEnter
+ newGraphicFrame._onleave_line = onLeave
- f._linewidth = linewidth or 50
- f._maxlines = floor(f:GetWidth() / f._linewidth)
+ newGraphicFrame._linewidth = lineWidth or 50
+ newGraphicFrame._maxlines = floor(newGraphicFrame:GetWidth() / newGraphicFrame._linewidth)
- return f
+ return newGraphicFrame
end
@@ -4500,7 +4487,7 @@ detailsFramework.TitleFunctions = {
end
if (size) then
- detailsFramework:SetFontSize (self.TitleLabel, size)
+ detailsFramework:SetFontSize(self.TitleLabel, size)
end
end
@@ -4683,7 +4670,7 @@ detailsFramework.IconRowFunctions = {
iconFrame.CountdownText:SetText(formattedTime)
iconFrame.CountdownText:SetPoint(self.options.text_anchor or "center", iconFrame, self.options.text_rel_anchor or "center", self.options.text_x_offset or 0, self.options.text_y_offset or 0)
- detailsFramework:SetFontSize (iconFrame.CountdownText, self.options.text_size)
+ detailsFramework:SetFontSize(iconFrame.CountdownText, self.options.text_size)
detailsFramework:SetFontFace (iconFrame.CountdownText, self.options.text_font)
detailsFramework:SetFontOutline (iconFrame.CountdownText, self.options.text_outline)
@@ -4715,7 +4702,7 @@ detailsFramework.IconRowFunctions = {
iconFrame.Desc:SetText(descText.text)
iconFrame.Desc:SetTextColor(detailsFramework:ParseColors(descText.text_color or self.options.desc_text_color))
iconFrame.Desc:SetPoint(self.options.desc_text_anchor or "bottom", iconFrame, self.options.desc_text_rel_anchor or "top", self.options.desc_text_x_offset or 0, self.options.desc_text_y_offset or 2)
- detailsFramework:SetFontSize (iconFrame.Desc, descText.text_size or self.options.desc_text_size)
+ detailsFramework:SetFontSize(iconFrame.Desc, descText.text_size or self.options.desc_text_size)
detailsFramework:SetFontFace (iconFrame.Desc, self.options.desc_text_font)
detailsFramework:SetFontOutline (iconFrame.Desc, self.options.desc_text_outline)
else
@@ -4727,7 +4714,7 @@ detailsFramework.IconRowFunctions = {
iconFrame.StackText:SetText(count)
iconFrame.StackText:SetTextColor(detailsFramework:ParseColors(self.options.desc_text_color))
iconFrame.StackText:SetPoint(self.options.stack_text_anchor or "center", iconFrame, self.options.stack_text_rel_anchor or "bottomright", self.options.stack_text_x_offset or 0, self.options.stack_text_y_offset or 0)
- detailsFramework:SetFontSize (iconFrame.StackText, self.options.stack_text_size)
+ detailsFramework:SetFontSize(iconFrame.StackText, self.options.stack_text_size)
detailsFramework:SetFontFace (iconFrame.StackText, self.options.stack_text_font)
detailsFramework:SetFontOutline (iconFrame.StackText, self.options.stack_text_outline)
else
@@ -7416,7 +7403,7 @@ detailsFramework.PowerFrameFunctions = {
self.percentText:Show()
PixelUtil.SetPoint(self.percentText, "center", self, "center", 0, 0)
- detailsFramework:SetFontSize (self.percentText, 9)
+ detailsFramework:SetFontSize(self.percentText, 9)
detailsFramework:SetFontColor(self.percentText, "white")
detailsFramework:SetFontOutline (self.percentText, "OUTLINE")
else
@@ -8630,7 +8617,7 @@ detailsFramework.BorderFunctions = {
-- ~borderframe
function detailsFramework:CreateBorderFrame (parent, name)
- local parentName = name or "DetailsFrameworkBorderFrame" .. tostring(math.random (1, 100000000))
+ local parentName = name or "DetailsFrameworkBorderFrame" .. tostring(math.random(1, 100000000))
local f = CreateFrame("frame", parentName, parent, "BackdropTemplate")
f:SetFrameLevel(f:GetFrameLevel()+1)
@@ -9131,7 +9118,7 @@ end
-- ~unitframe
local globalBaseFrameLevel = 1 -- to be increased + used across each new plate
function detailsFramework:CreateUnitFrame(parent, name, unitFrameSettingsOverride, healthBarSettingsOverride, castBarSettingsOverride, powerBarSettingsOverride)
- local parentName = name or ("DetailsFrameworkUnitFrame" .. tostring(math.random (1, 100000000)))
+ local parentName = name or ("DetailsFrameworkUnitFrame" .. tostring(math.random(1, 100000000)))
--create the main unit frame
local mewUnitFrame = CreateFrame("button", parentName, parent, "BackdropTemplate")
@@ -9281,7 +9268,7 @@ detailsFramework.TimeLineElapsedTimeFunctions = {
end
detailsFramework:SetFontColor(label, self.options.text_color)
- detailsFramework:SetFontSize (label, self.options.text_size)
+ detailsFramework:SetFontSize(label, self.options.text_size)
detailsFramework:SetFontFace (label, self.options.text_font)
detailsFramework:SetFontOutline (label, self.options.text_outline)
@@ -9325,7 +9312,7 @@ detailsFramework.TimeLineElapsedTimeFunctions = {
local secondsOfTime = pixelPerSecond * xOffset
- label:SetText(detailsFramework:IntegerToTimer (floor(secondsOfTime)))
+ label:SetText(detailsFramework:IntegerToTimer(floor(secondsOfTime)))
if (label.line:IsShown()) then
label.line:SetHeight(parent:GetParent():GetHeight())
diff --git a/Libs/DF/pictureedit.lua b/Libs/DF/pictureedit.lua
index c9f89d92e..18a385057 100644
--- a/Libs/DF/pictureedit.lua
+++ b/Libs/DF/pictureedit.lua
@@ -1,5 +1,5 @@
-local DF = _G ["DetailsFramework"]
+local DF = _G["DetailsFramework"]
if (not DF or not DetailsFrameworkCanLoad) then
return
end
@@ -12,7 +12,7 @@ local CreateImageEditorFrame = function()
editorWindow:SetPoint("center", UIParent, "center")
editorWindow:SetResizable(true)
editorWindow:SetMovable(true)
- editorWindow:SetClampedToScreen (true)
+ editorWindow:SetClampedToScreen(true)
tinsert(UISpecialFrames, "DetailsFrameworkImageEdit")
editorWindow:SetFrameStrata("TOOLTIP")
@@ -23,26 +23,26 @@ local CreateImageEditorFrame = function()
end
_G.DetailsFrameworkImageEditTable = editorWindow
-
+
editorWindow.hooks = {}
-
+
local background = DF:NewImage(editorWindow, nil, nil, nil, "background", nil, "background", "$parentBackground")
background:SetAllPoints()
background:SetTexture(0, 0, 0, .8)
-
+
local edit_texture = DF:NewImage(editorWindow, nil, 500, 500, "artwork", nil, "edit_texture", "$parentImage")
edit_texture:SetAllPoints()
_G.DetailsFrameworkImageEdit_EditTexture = edit_texture
-
+
local background_frame = CreateFrame("frame", "DetailsFrameworkImageEditBackground", DetailsFrameworkImageEdit, "BackdropTemplate")
background_frame:SetPoint("topleft", DetailsFrameworkImageEdit, "topleft", -10, 30)
background_frame:SetFrameStrata("TOOLTIP")
background_frame:SetFrameLevel(editorWindow:GetFrameLevel())
background_frame:SetSize(790, 560)
-
+
background_frame:SetResizable(true)
background_frame:SetMovable(true)
-
+
background_frame:SetScript("OnMouseDown", function()
editorWindow:StartMoving()
end)
@@ -60,16 +60,15 @@ local CreateImageEditorFrame = function()
local haveHFlip = false
local haveVFlip = false
-
+
--Top Slider
-
local topCoordTexture = DF:NewImage(editorWindow, nil, nil, nil, "overlay", nil, nil, "$parentImageTopCoord")
topCoordTexture:SetPoint("topleft", editorWindow, "topleft")
topCoordTexture:SetPoint("topright", editorWindow, "topright")
topCoordTexture:SetColorTexture(1, 0, 0)
topCoordTexture.height = 1
topCoordTexture.alpha = .2
-
+
local topSlider = DF:NewSlider (editorWindow, nil, "$parentTopSlider", "topSlider", 100, 100, 0.1, 100, 0.1, 0)
topSlider:SetAllPoints(editorWindow.widget)
topSlider:SetOrientation ("VERTICAL")
@@ -90,11 +89,10 @@ local CreateImageEditorFrame = function()
editorWindow.accept(nil, nil, true)
end
end)
-
+
topSlider:Hide()
--Bottom Slider
-
local bottomCoordTexture = DF:NewImage(editorWindow, nil, nil, nil, "overlay", nil, nil, "$parentImageBottomCoord")
bottomCoordTexture:SetPoint("bottomleft", editorWindow, "bottomleft", 0, 0)
bottomCoordTexture:SetPoint("bottomright", editorWindow, "bottomright", 0, 0)
@@ -102,7 +100,7 @@ local CreateImageEditorFrame = function()
bottomCoordTexture.height = 1
bottomCoordTexture.alpha = .2
- local bottomSlider= DF:NewSlider (editorWindow, nil, "$parentBottomSlider", "bottomSlider", 100, 100, 0.1, 100, 0.1, 100)
+ local bottomSlider = DF:NewSlider (editorWindow, nil, "$parentBottomSlider", "bottomSlider", 100, 100, 0.1, 100, 0.1, 100)
bottomSlider:SetAllPoints(editorWindow.widget)
bottomSlider:SetOrientation ("VERTICAL")
bottomSlider.backdrop = nil
@@ -123,49 +121,47 @@ local CreateImageEditorFrame = function()
editorWindow.accept(nil, nil, true)
end
end)
-
+
bottomSlider:Hide()
-
+
--Left Slider
-
local leftCoordTexture = DF:NewImage(editorWindow, nil, nil, nil, "overlay", nil, nil, "$parentImageLeftCoord")
leftCoordTexture:SetPoint("topleft", editorWindow, "topleft", 0, 0)
leftCoordTexture:SetPoint("bottomleft", editorWindow, "bottomleft", 0, 0)
leftCoordTexture:SetColorTexture(1, 0, 0)
leftCoordTexture.width = 1
leftCoordTexture.alpha = .2
-
+
local leftSlider = DF:NewSlider (editorWindow, nil, "$parentLeftSlider", "leftSlider", 100, 100, 0.1, 100, 0.1, 0.1)
leftSlider:SetAllPoints(editorWindow.widget)
leftSlider.backdrop = nil
leftSlider.fractional = true
leftSlider:SetHook("OnEnter", function() return true end)
leftSlider:SetHook("OnLeave", function() return true end)
-
+
local leftSliderThumpTexture = leftSlider:CreateTexture(nil, "overlay")
leftSliderThumpTexture:SetColorTexture(1, 1, 1)
leftSliderThumpTexture:SetWidth(1)
leftSliderThumpTexture:SetHeight(512)
leftSlider:SetThumbTexture (leftSliderThumpTexture)
-
+
leftSlider:SetHook("OnValueChange", function(_, _, value)
leftCoordTexture.image:SetWidth(editorWindow.frame:GetWidth()/100*value)
if (editorWindow.callback_func) then
editorWindow.accept(nil, nil, true)
end
end)
-
+
leftSlider:Hide()
-
+
--Right Slider
-
local rightCoordTexture = DF:NewImage(editorWindow, nil, nil, nil, "overlay", nil, nil, "$parentImageRightCoord")
rightCoordTexture:SetPoint("topright", editorWindow, "topright", 0, 0)
rightCoordTexture:SetPoint("bottomright", editorWindow, "bottomright", 0, 0)
rightCoordTexture:SetColorTexture(1, 0, 0)
rightCoordTexture.width = 1
rightCoordTexture.alpha = .2
-
+
local rightSlider = DF:NewSlider (editorWindow, nil, "$parentRightSlider", "rightSlider", 100, 100, 0.1, 100, 0.1, 100)
rightSlider:SetAllPoints(editorWindow.widget)
rightSlider.backdrop = nil
@@ -186,11 +182,10 @@ local CreateImageEditorFrame = function()
editorWindow.accept(nil, nil, true)
end
end)
-
+
rightSlider:Hide()
-
---Edit Buttons
+--Edit Buttons
local buttonsBackground = DF:NewPanel(UIParent, nil, "DetailsFrameworkImageEditButtonsBg", nil, 115, 230)
--buttonsBackground:SetPoint("topleft", window, "topright", 2, 0)
buttonsBackground:SetPoint("topright", background_frame, "topright", -8, -10)
@@ -198,35 +193,35 @@ local CreateImageEditorFrame = function()
--buttonsBackground:SetMovable(true)
tinsert(UISpecialFrames, "DetailsFrameworkImageEditButtonsBg")
buttonsBackground:SetFrameStrata("TOOLTIP")
-
+
local alphaFrameShown = false
-
+
local editingSide = nil
local lastButton = nil
local alphaFrame
local originalColor = {0.9999, 0.8196, 0}
-
+
local enableTexEdit = function(button, bottom, side)
-
+
if (alphaFrameShown) then
alphaFrame:Hide()
alphaFrameShown = false
button.text:SetTextColor(unpack(originalColor))
end
-
+
if (ColorPickerFrame:IsShown()) then
ColorPickerFrame:Hide()
end
-
+
if (lastButton) then
lastButton.text:SetTextColor(unpack(originalColor))
end
-
+
if (editingSide == side) then
editorWindow [editingSide.."Slider"]:Hide()
editingSide = nil
return
-
+
elseif (editingSide) then
editorWindow [editingSide.."Slider"]:Hide()
end
@@ -234,10 +229,10 @@ local CreateImageEditorFrame = function()
editingSide = side
button.text:SetTextColor(1, 1, 1)
lastButton = button
-
+
editorWindow [side.."Slider"]:Show()
end
-
+
local yMod = -10
local leftTexCoordButton = DF:NewButton(buttonsBackground, nil, "$parentLeftTexButton", nil, 100, 20, enableTexEdit, "left", nil, nil, "Crop Left", 1)
@@ -255,11 +250,11 @@ local CreateImageEditorFrame = function()
local bottomTexCoordButton = DF:NewButton(buttonsBackground, nil, "$parentBottomTexButton", nil, 100, 20, enableTexEdit, "bottom", nil, nil, "Crop Bottom", 1)
bottomTexCoordButton:SetPoint("topright", buttonsBackground, "topright", -8, -70 + yMod)
bottomTexCoordButton:SetTemplate(DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
-
+
local Alpha = DF:NewButton(buttonsBackground, nil, "$parentBottomAlphaButton", nil, 100, 20, alpha, nil, nil, nil, "Alpha", 1)
Alpha:SetPoint("topright", buttonsBackground, "topright", -8, -115 + yMod)
Alpha:SetTemplate(DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
-
+
--overlay color
local selectedColor = function(default)
if (default) then
@@ -274,14 +269,14 @@ local CreateImageEditorFrame = function()
end
end
end
-
+
local changeColor = function()
-
+
ColorPickerFrame.func = nil
ColorPickerFrame.opacityFunc = nil
ColorPickerFrame.cancelFunc = nil
ColorPickerFrame.previousValues = nil
-
+
local right, g, bottom = edit_texture:GetVertexColor()
ColorPickerFrame:SetColorRGB (right, g, bottom)
ColorPickerFrame:SetParent(buttonsBackground.widget)
@@ -292,13 +287,13 @@ local CreateImageEditorFrame = function()
ColorPickerFrame:ClearAllPoints()
ColorPickerFrame:SetPoint("left", buttonsBackground.widget, "right")
ColorPickerFrame:Show()
-
+
if (alphaFrameShown) then
alphaFrame:Hide()
alphaFrameShown = false
Alpha.button.text:SetTextColor(unpack(originalColor))
- end
-
+ end
+
if (lastButton) then
lastButton.text:SetTextColor(unpack(originalColor))
if (editingSide) then
@@ -306,34 +301,34 @@ local CreateImageEditorFrame = function()
end
end
end
-
+
local changeColorButton = DF:NewButton(buttonsBackground, nil, "$parentOverlayColorButton", nil, 100, 20, changeColor, nil, nil, nil, "Color", 1)
changeColorButton:SetPoint("topright", buttonsBackground, "topright", -8, -95 + yMod)
changeColorButton:SetTemplate(DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
-
+
alphaFrame = DF:NewPanel(buttonsBackground, nil, "DetailsFrameworkImageEditAlphaBg", nil, 40, 225)
alphaFrame:SetPoint("topleft", buttonsBackground, "topright", 2, 0)
- alphaFrame:Hide()
+ alphaFrame:Hide()
local alphaSlider = DF:NewSlider (alphaFrame, nil, "$parentAlphaSlider", "alphaSlider", 30, 220, 1, 100, 1, edit_texture:GetAlpha()*100)
alphaSlider:SetPoint("top", alphaFrame, "top", 0, -5)
alphaSlider:SetOrientation ("VERTICAL")
alphaSlider.thumb:SetSize(40, 30)
--leftSlider.backdrop = nil
--leftSlider.fractional = true
-
+
local alpha = function(button)
-
+
if (ColorPickerFrame:IsShown()) then
ColorPickerFrame:Hide()
end
-
+
if (lastButton) then
lastButton.text:SetTextColor(unpack(originalColor))
if (editingSide) then
editorWindow [editingSide.."Slider"]:Hide()
end
end
-
+
if (not alphaFrameShown) then
alphaFrame:Show()
alphaSlider:SetValue(edit_texture:GetAlpha()*100)
@@ -345,9 +340,9 @@ local CreateImageEditorFrame = function()
button.text:SetTextColor(unpack(originalColor))
end
end
-
+
Alpha.clickfunction = alpha
-
+
alphaSlider:SetHook("OnValueChange", function(_, _, value)
edit_texture:SetAlpha(value/100)
if (editorWindow.callback_func) then
@@ -365,22 +360,22 @@ local CreateImageEditorFrame = function()
resizer:SetPoint("BOTTOMRIGHT", editorWindow.widget, "BOTTOMRIGHT", 0, 0)
resizer:EnableMouse(true)
resizer:SetFrameLevel(editorWindow.widget:GetFrameLevel() + 2)
-
- resizer:SetScript("OnMouseDown", function(self, button)
+
+ resizer:SetScript("OnMouseDown", function(self, button)
editorWindow.widget:StartSizing("BOTTOMRIGHT")
end)
-
- resizer:SetScript("OnMouseUp", function(self, button)
+
+ resizer:SetScript("OnMouseUp", function(self, button)
editorWindow.widget:StopMovingOrSizing()
end)
-
+
editorWindow.widget:SetScript("OnMouseDown", function()
editorWindow.widget:StartMoving()
end)
editorWindow.widget:SetScript("OnMouseUp", function()
editorWindow.widget:StopMovingOrSizing()
end)
-
+
editorWindow.widget:SetScript("OnSizeChanged", function()
edit_texture.width = editorWindow.width
edit_texture.height = editorWindow.height
@@ -388,12 +383,12 @@ local CreateImageEditorFrame = function()
rightSliderThumpTexture:SetHeight(editorWindow.height)
topSliderThumpTexture:SetWidth(editorWindow.width)
bottomSliderThumpTexture:SetWidth(editorWindow.width)
-
+
rightCoordTexture.image:SetWidth(math.max( (editorWindow.frame:GetWidth() / 100 * math.abs(rightSlider:GetValue()-100)), 1))
leftCoordTexture.image:SetWidth(editorWindow.frame:GetWidth()/100*leftSlider:GetValue())
bottomCoordTexture:SetHeight(math.max( (editorWindow.frame:GetHeight() / 100 * math.abs(bottomSlider:GetValue()-100)), 1))
topCoordTexture:SetHeight(editorWindow.frame:GetHeight()/100*topSlider:GetValue())
-
+
if (editorWindow.callback_func) then
editorWindow.accept(nil, nil, true)
end
diff --git a/Libs/DF/split_bar.lua b/Libs/DF/split_bar.lua
index f33c6d70a..e5c2aeaee 100644
--- a/Libs/DF/split_bar.lua
+++ b/Libs/DF/split_bar.lua
@@ -289,8 +289,8 @@ DF:Mixin(SplitBarMetaFunctions, DF.ScriptHookMixin)
end
--font size
local smember_textsize = function(_object, _value)
- DF:SetFontSize (_object.textleft, _value)
- return DF:SetFontSize (_object.textright, _value)
+ DF:SetFontSize(_object.textleft, _value)
+ return DF:SetFontSize(_object.textright, _value)
end
--font color
local smember_textcolor = function(_object, _value)
@@ -691,12 +691,12 @@ local build_statusbar = function(self)
self.spark:SetPoint("LEFT", self, "RIGHT", -17, -1)
self.lefttext = self:CreateFontString("$parent_TextLeft", "OVERLAY", "GameFontHighlight")
- DF:SetFontSize (self.lefttext, 10)
+ DF:SetFontSize(self.lefttext, 10)
self.lefttext:SetJustifyH("left")
self.lefttext:SetPoint("LEFT", self.lefticon, "RIGHT", 3, 0)
self.righttext = self:CreateFontString("$parent_TextRight", "OVERLAY", "GameFontHighlight")
- DF:SetFontSize (self.righttext, 10)
+ DF:SetFontSize(self.righttext, 10)
self.righttext:SetJustifyH("right")
self.righttext:SetPoint("RIGHT", self.righticon, "LEFT", -3, 0)
diff --git a/Libs/LibGraph-2.0/LibGraph-2.0.lua b/Libs/LibGraph-2.0/LibGraph-2.0.lua
index 50147e01c..79925335e 100644
--- a/Libs/LibGraph-2.0/LibGraph-2.0.lua
+++ b/Libs/LibGraph-2.0/LibGraph-2.0.lua
@@ -11,7 +11,7 @@ Description: Allows for easy creation of graphs
--Thanks to Nelson Minar for catching several errors where width was being used instead of height (damn copy and paste >_>)
local major = "LibGraph-2.0"
-local minor = 90000 + tonumber(("$Revision: 57 $"):match("(%d+)"))
+local minor = 90000 + tonumber(("$Revision: 58 $"):match("(%d+)"))
--Search for just Addon\\ at the front since the interface part often gets trimmed
@@ -31,6 +31,8 @@ do
end
end
+TextureDirectory = "Interface\\Addons\\Details\\Libs\\LibGraph-2.0"
+
if not LibStub then error(major .. " requires LibStub") end
diff --git a/Libs/LibOpenRaid/GetPlayerInformation.lua b/Libs/LibOpenRaid/GetPlayerInformation.lua
index 7fa73e67a..9193d1e58 100644
--- a/Libs/LibOpenRaid/GetPlayerInformation.lua
+++ b/Libs/LibOpenRaid/GetPlayerInformation.lua
@@ -15,6 +15,8 @@ local CONST_TALENT_VERSION_CLASSIC = 1
local CONST_TALENT_VERSION_LEGION = 4
local CONST_TALENT_VERSION_DRAGONFLIGHT = 5
+local CONST_BTALENT_VERSION_COVENANTS = 9
+
local isTimewalkWoW = function()
local _, _, _, buildInfo = GetBuildInfo()
if (buildInfo < 40000) then
@@ -26,6 +28,38 @@ local IsDragonflight = function()
return select(4, GetBuildInfo()) >= 100000
end
+local IsShadowlands = function()
+ local versionString, revision, launchDate, gameVersion = GetBuildInfo()
+ if (gameVersion >= 90000 and gameVersion < 100000) then
+ return true
+ end
+end
+
+--information about the player character to send, each expansion has its own system and data can be different
+--it's always a number
+function openRaidLib.UnitInfoManager.GetPlayerInfo1()
+ if (IsShadowlands()) then
+ --return the renown level within the player covenant
+ local renown = C_CovenantSanctumUI.GetRenownLevel() or 1
+ return renown
+ end
+
+ return 0
+end
+
+--information about the player character to send, each expansion has its own system and data can be different
+--it's always a number
+function openRaidLib.UnitInfoManager.GetPlayerInfo2()
+ if (IsShadowlands()) then
+ --return which covenant the player picked
+ local covenant = C_Covenants.GetActiveCovenantID() or 0
+ return covenant
+ end
+
+ return 0
+end
+
+--default player class-spec talent system
function openRaidLib.GetTalentVersion()
local _, _, _, buildInfo = GetBuildInfo()
@@ -42,6 +76,13 @@ function openRaidLib.GetTalentVersion()
end
end
+--secondary talent tree, can be a legendary weapon talent tree, covenant talent tree, etc...
+function openRaidLib.GetBorrowedTalentVersion()
+ if (IsShadowlands()) then
+ return CONST_BTALENT_VERSION_COVENANTS
+ end
+end
+
local getDragonflightTalentsAsIndexTable = function()
local allTalents = {}
local configId = C_ClassTalents.GetActiveConfigID()
@@ -164,12 +205,8 @@ function openRaidLib.GetPlayerSpecId()
end
end
+--borrowed talent tree from shadowlands
function openRaidLib.UnitInfoManager.GetPlayerConduits()
-
- if (IsDragonflight()) then
- return {}
- end
-
local conduits = {}
local soulbindID = C_Soulbinds.GetActiveSoulbindID()
@@ -214,6 +251,17 @@ function openRaidLib.UnitInfoManager.GetPlayerConduits()
return conduits
end
+function openRaidLib.UnitInfoManager.GetPlayerBorrowedTalents()
+ local borrowedTalentVersion = openRaidLib.GetBorrowedTalentVersion()
+
+ if (borrowedTalentVersion == CONST_BTALENT_VERSION_COVENANTS) then
+ return openRaidLib.UnitInfoManager.GetPlayerConduits()
+ end
+
+ return {}
+end
+
+
function openRaidLib.GearManager.GetPlayerItemLevel()
if (_G.GetAverageItemLevel) then
local _, itemLevel = GetAverageItemLevel()
diff --git a/Libs/LibOpenRaid/LibOpenRaid.lua b/Libs/LibOpenRaid/LibOpenRaid.lua
index 40521859d..787919dc6 100644
--- a/Libs/LibOpenRaid/LibOpenRaid.lua
+++ b/Libs/LibOpenRaid/LibOpenRaid.lua
@@ -15,6 +15,11 @@ Code Rules:
- Public callbacks are callbacks registered by an external addon.
Change Log:
+ - things to maintain now has 1 file per expansion
+ - player conduits, covenant internally renamed to playerInfo1 and playerInfo2 to make the lib more future proof
+ - player conduits tree is now Borrowed Talents Tree, for future proof
+ - removed the talent size limitation on 7 indexes
+
- added:
* openRaidLib.GetFlaskInfoBySpellId(spellId)
* openRaidLib.GetFlaskTierFromAura(auraInfo)
@@ -63,7 +68,7 @@ if (WOW_PROJECT_ID ~= WOW_PROJECT_MAINLINE and not isExpansion_Dragonflight()) t
end
local major = "LibOpenRaid-1.0"
-local CONST_LIB_VERSION = 60
+local CONST_LIB_VERSION = 62
LIB_OPEN_RAID_CAN_LOAD = false
local unpack = table.unpack or _G.unpack
@@ -81,6 +86,9 @@ local unpack = table.unpack or _G.unpack
openRaidLib.inGroup = false
openRaidLib.UnitIDCache = {}
+ local CONST_CVAR_TEMPCACHE = "LibOpenRaidTempCache"
+ local CONST_CVAR_TEMPCACHE_DEBUG = "LibOpenRaidTempCacheDebug"
+
--show failures (when the function return an error) results to chat
local CONST_DIAGNOSTIC_ERRORS = false
--show the data to be sent and data received from comm
@@ -114,6 +122,9 @@ local unpack = table.unpack or _G.unpack
local CONST_TWO_SECONDS = 2.0
local CONST_THREE_SECONDS = 3.0
+ local CONST_SPECIALIZATION_VERSION_CLASSIC = 0
+ local CONST_SPECIALIZATION_VERSION_MODERN = 1
+
local CONST_COOLDOWN_CHECK_INTERVAL = CONST_TWO_SECONDS
local CONST_COOLDOWN_TIMELEFT_HAS_CHANGED = CONST_TWO_SECONDS
@@ -127,6 +138,16 @@ local unpack = table.unpack or _G.unpack
local GetContainerItemID = GetContainerItemID or C_Container.GetContainerItemID
local GetContainerItemLink = GetContainerItemLink or C_Container.GetContainerItemLink
+ --from vanilla to cataclysm, the specID did not existed, hence its considered version 0
+ --for mists of pandaria and beyond it's version 1
+ local getSpecializationVersion = function()
+ if (gameVersion >= 50000) then
+ return CONST_SPECIALIZATION_VERSION_MODERN
+ else
+ return CONST_SPECIALIZATION_VERSION_CLASSIC
+ end
+ end
+
function openRaidLib.ShowDiagnosticErrors(value)
CONST_DIAGNOSTIC_ERRORS = value
end
@@ -175,6 +196,147 @@ local unpack = table.unpack or _G.unpack
end
end
+--------------------------------------------------------------------------------------------------------------------------------
+--~internal cache
+--use a console variable to create a flash cache to keep data while the game reload
+--this is not a long term database as saved variables are and it get clean up often
+
+C_CVar.RegisterCVar(CONST_CVAR_TEMPCACHE)
+C_CVar.RegisterCVar(CONST_CVAR_TEMPCACHE_DEBUG)
+
+--internal namespace
+local tempCache = {
+ debugString = "",
+}
+
+tempCache.copyCache = function(t1, t2)
+ for key, value in pairs(t2) do
+ if (type(value) == "table") then
+ t1[key] = t1[key] or {}
+ tempCache.copyCache(t1[key], t2[key])
+ else
+ t1[key] = value
+ end
+ end
+ return t1
+end
+
+--use debug cvar to find issues that occurred during the logoff process
+function openRaidLib.PrintTempCacheDebug()
+ local debugMessage = C_CVar.GetCVar(CONST_CVAR_TEMPCACHE_DEBUG)
+ sendChatMessage("|cFFFF9922OpenRaidLib|r Temp CVar Result:\n", debugMessage)
+end
+
+function tempCache.SaveDebugText()
+ C_CVar.SetCVar(CONST_CVAR_TEMPCACHE_DEBUG, tempCache.debugString)
+end
+
+function tempCache.AddDebugText(text)
+ tempCache.debugString = tempCache.debugString .. date("%H:%M:%S") .. "| " .. text .. "\n"
+end
+
+function tempCache.SaveCacheOnCVar(data)
+ C_CVar.SetCVar(CONST_CVAR_TEMPCACHE, data)
+ tempCache.AddDebugText("CVars Saved on saveCahceOnCVar(), Size: " .. #data)
+end
+
+function tempCache.RestoreData()
+ local data = C_CVar.GetCVar(CONST_CVAR_TEMPCACHE)
+ if (data and type(data) == "string" and data ~= "") then
+ local LibAceSerializer = LibStub:GetLibrary("AceSerializer-3.0", true)
+ if (LibAceSerializer) then
+ local okay, cacheInfo = LibAceSerializer:Deserialize(data)
+ if (okay) then
+ local age = cacheInfo.createdAt
+ --if the data is older than 5 minutes, much has been changed from the group and the data is out dated
+ if (age + (60 * 5) < time()) then
+ return
+ end
+
+ local unitsInfo = cacheInfo.unitsInfo
+ local cooldownsInfo = cacheInfo.cooldownsInfo
+ local gearInfo = cacheInfo.gearInfo
+
+ local okayUnitsInfo, unitsInfo = LibAceSerializer:Deserialize(unitsInfo)
+ local okayCooldownsInfo, cooldownsInfo = LibAceSerializer:Deserialize(cooldownsInfo)
+ local okayGearInfo, gearInfo = LibAceSerializer:Deserialize(gearInfo)
+
+ if (okayUnitsInfo and unitsInfo) then
+ openRaidLib.UnitInfoManager.UnitData = tempCache.copyCache(openRaidLib.UnitInfoManager.UnitData, unitsInfo)
+ else
+ tempCache.AddDebugText("invalid UnitInfo")
+ end
+
+ if (okayCooldownsInfo and cooldownsInfo) then
+ openRaidLib.CooldownManager.UnitData = tempCache.copyCache(openRaidLib.CooldownManager.UnitData, cooldownsInfo)
+ else
+ tempCache.AddDebugText("invalid CooldownsInfo")
+ end
+
+ if (okayGearInfo and gearInfo) then
+ openRaidLib.GearManager.UnitData = tempCache.copyCache(openRaidLib.GearManager.UnitData, gearInfo)
+ else
+ tempCache.AddDebugText("invalid GearInfo")
+ end
+ else
+ tempCache.AddDebugText("Deserialization not okay")
+ end
+ else
+ tempCache.AddDebugText("LibAceSerializer not found")
+ end
+ else
+ tempCache.AddDebugText("invalid temporary cache, isn't string or cvar not found")
+ end
+end
+
+function tempCache.SaveData()
+ tempCache.AddDebugText("SaveData() called.")
+
+ local LibAceSerializer = LibStub:GetLibrary("AceSerializer-3.0", true)
+ if (LibAceSerializer) then
+ local allUnitsInfo = openRaidLib.UnitInfoManager.UnitData
+ local allUnitsCooldowns = openRaidLib.CooldownManager.UnitData
+ local allPlayersGear = openRaidLib.GearManager.UnitData
+
+ local cacheInfo = {
+ createdAt = time(),
+ }
+
+ local unitsInfoSerialized = LibAceSerializer:Serialize(allUnitsInfo)
+ local unitsCooldownsSerialized = LibAceSerializer:Serialize(allUnitsCooldowns)
+ local playersGearSerialized = LibAceSerializer:Serialize(allPlayersGear)
+
+ if (unitsInfoSerialized) then
+ cacheInfo.unitsInfo = unitsInfoSerialized
+ tempCache.AddDebugText("SaveData() units info serialized okay.")
+ else
+ tempCache.AddDebugText("SaveData() units info serialized failed.")
+ end
+
+ if (unitsCooldownsSerialized) then
+ cacheInfo.cooldownsInfo = unitsCooldownsSerialized
+ tempCache.AddDebugText("SaveData() cooldowns info serialized okay.")
+ else
+ tempCache.AddDebugText("SaveData() cooldowns info serialized failed.")
+ end
+
+ if (playersGearSerialized) then
+ cacheInfo.gearInfo = playersGearSerialized
+ tempCache.AddDebugText("SaveData() gear info serialized okay.")
+ else
+ tempCache.AddDebugText("SaveData() gear info serialized failed.")
+ end
+
+ local cacheInfoSerialized = LibAceSerializer:Serialize(cacheInfo)
+ tempCache.SaveCacheOnCVar(cacheInfoSerialized)
+ else
+ tempCache.AddDebugText("SaveData() AceSerializer not found.")
+ end
+
+ tempCache.SaveDebugText()
+end
+
+
--------------------------------------------------------------------------------------------------------------------------------
--~comms
openRaidLib.commHandler = {}
@@ -276,7 +438,7 @@ local unpack = table.unpack or _G.unpack
--0x2: to raid
--0x4: to guild
local sendData = function(dataEncoded, channel)
- local aceComm = LibStub:GetLibrary("AceComm-3.0")
+ local aceComm = LibStub:GetLibrary("AceComm-3.0", true)
if (aceComm) then
aceComm:SendCommMessage(CONST_COMM_PREFIX, dataEncoded, channel, nil, "ALERT")
else
@@ -700,6 +862,10 @@ local unpack = table.unpack or _G.unpack
["CHALLENGE_MODE_COMPLETED"] = function()
openRaidLib.internalCallback.TriggerEvent("mythicDungeonEnd")
end,
+
+ ["PLAYER_LOGOUT"] = function()
+ tempCache.SaveData()
+ end,
}
openRaidLib.eventFunctions = eventFunctions
@@ -721,6 +887,7 @@ local unpack = table.unpack or _G.unpack
eventFrame:RegisterEvent("PLAYER_DEAD")
eventFrame:RegisterEvent("PLAYER_ALIVE")
eventFrame:RegisterEvent("PLAYER_UNGHOST")
+ eventFrame:RegisterEvent("PLAYER_LOGOUT")
if (checkClientVersion("retail")) then
eventFrame:RegisterEvent("PLAYER_TALENT_UPDATE")
@@ -998,36 +1165,36 @@ local unpack = table.unpack or _G.unpack
--@unitName: player name
function openRaidLib.UnitInfoManager.OnReceiveUnitFullInfo(data, unitName)
local specId = tonumber(data[1])
- local renown = tonumber(data[2])
- local covenantId = tonumber(data[3])
- if (not covenantId or covenantId > 4) then --cleanup on 10.0
- --invalid covanentId
+ local playerInfo1 = tonumber(data[2])
+
+ local playerInfo2 = tonumber(data[3])
+ if (not playerInfo2 or playerInfo2 > 4) then --cleanup on 10.0
+ --invalid covanentId - different lib versions, it'll fix itself on dragonflight
return
end
local talentsSize = tonumber(data[4])
- if (not talentsSize or talentsSize > 7) then --talents rework on 10.0
- --invalid talents size
+ if (not talentsSize) then
return
end
- local conduitsTableIndex = tonumber((talentsSize + 1) + 3) + 1 -- +3 for spec, renown and covenant data | talentSizeIndex + talentSize | +1 for talents size
- local conduitsSize = data[conduitsTableIndex]
+ local borrowedTalentsTableIndex = tonumber((talentsSize + 1) + 3) + 1 -- +3 for spec, playerInfo1 and playerInfo2 data | talentSizeIndex + talentSize | +1 for talents size
+ local borrowedTalentsSize = data[borrowedTalentsTableIndex]
- local pvpTalentsTableIndex = 3 + 3 + talentsSize + conduitsSize -- +3 for spec, renown and covenant data | +3 for talents, conduit and pvptalents index for size
+ local pvpTalentsTableIndex = 3 + 3 + talentsSize + borrowedTalentsSize -- +3 for spec, playerInfo1 and playerInfo2 data | +3 for talents, conduit and pvptalents index for size
local pvpTalentsSize = data[pvpTalentsTableIndex]
--unpack the talents data as a ipairs table
local talentsTableUnpacked = openRaidLib.UnpackTable(data, 4, false, false, talentsSize)
- --unpack the conduits data as a ipairs table
- local conduitsTableUnpacked = openRaidLib.UnpackTable(data, conduitsTableIndex, false, false, conduitsSize)
+ --unpack the borrowed talents data as a ipairs table
+ local borrowedTalentsTableUnpacked = openRaidLib.UnpackTable(data, borrowedTalentsTableIndex, false, false, borrowedTalentsSize)
--back compatibility with versions without pvp talents
if (type(data[pvpTalentsTableIndex]) == "string" or not data[pvpTalentsTableIndex]) then
--add a dummy table as pvp talents
- openRaidLib.UnitInfoManager.AddUnitInfo(unitName, specId, renown, covenantId, talentsTableUnpacked, conduitsTableUnpacked, {0, 0, 0})
+ openRaidLib.UnitInfoManager.AddUnitInfo(unitName, specId, playerInfo1, playerInfo2, talentsTableUnpacked, borrowedTalentsTableUnpacked, {0, 0, 0})
return
end
@@ -1035,7 +1202,7 @@ local unpack = table.unpack or _G.unpack
local pvpTalentsTableUnpacked = openRaidLib.UnpackTable(data, pvpTalentsTableIndex, false, false, pvpTalentsSize)
--add to the list of players information and also trigger a public callback
- openRaidLib.UnitInfoManager.AddUnitInfo(unitName, specId, renown, covenantId, talentsTableUnpacked, conduitsTableUnpacked, pvpTalentsTableUnpacked)
+ openRaidLib.UnitInfoManager.AddUnitInfo(unitName, specId, playerInfo1, playerInfo2, talentsTableUnpacked, borrowedTalentsTableUnpacked, pvpTalentsTableUnpacked)
end
openRaidLib.commHandler.RegisterComm(CONST_COMM_PLAYERINFO_PREFIX, openRaidLib.UnitInfoManager.OnReceiveUnitFullInfo)
@@ -1044,17 +1211,24 @@ function openRaidLib.UnitInfoManager.SendAllPlayerInfo()
local dataToSend = CONST_COMM_PLAYERINFO_PREFIX .. ","
dataToSend = dataToSend .. playerInfo[1] .. "," --spec id
- dataToSend = dataToSend .. playerInfo[2] .. "," --renown
- dataToSend = dataToSend .. playerInfo[3] .. "," --covenantId
- dataToSend = dataToSend .. openRaidLib.PackTable(playerInfo[4]) .. "," --talents
- dataToSend = dataToSend .. openRaidLib.PackTable(playerInfo[5]) .. "," --conduits
- dataToSend = dataToSend .. openRaidLib.PackTable(playerInfo[6]) .. "," --pvp talents
+ dataToSend = dataToSend .. playerInfo[2] .. "," --player info 1
+ dataToSend = dataToSend .. playerInfo[3] .. "," --player info 2
+ dataToSend = dataToSend .. openRaidLib.PackTable(playerInfo[4]) .. "," --player talents class-spec
+ dataToSend = dataToSend .. openRaidLib.PackTable(playerInfo[5]) .. "," --player talents borrowed
+ dataToSend = dataToSend .. openRaidLib.PackTable(playerInfo[6]) .. "," --player talents pvp
--send the data
openRaidLib.commHandler.SendCommData(dataToSend)
diagnosticComm("SendGetUnitInfoFullData| " .. dataToSend) --debug
end
+--player info format:
+--index 1: number: specId
+--index 2: number: tbd, depends on expansion
+--index 3: number: tbd, depends on expansion
+--index 4: talents 1: player talents: length vary depends on talent system
+--index 5: talents 2: borrowed power talents: length vary from expansions
+--index 6: talents 3: pvp talents
function openRaidLib.UnitInfoManager.GetPlayerFullInfo()
local playerInfo = {}
@@ -1064,29 +1238,28 @@ function openRaidLib.UnitInfoManager.GetPlayerFullInfo()
return {0, 0, 0, {0, 0, 0, 0, 0, 0, 0}, {0, 0}, 0}
end
- --spec
local specId = 0
- local selectedSpecialization = GetSpecialization()
- if (selectedSpecialization) then
- specId = GetSpecializationInfo(selectedSpecialization) or 0
+ if (getSpecializationVersion() == CONST_SPECIALIZATION_VERSION_MODERN) then
+ local selectedSpecialization = GetSpecialization()
+ if (selectedSpecialization) then
+ specId = GetSpecializationInfo(selectedSpecialization) or 0
+ end
end
playerInfo[1] = specId
- --shadowlands-renown
- local renown = C_CovenantSanctumUI.GetRenownLevel() or 1
- playerInfo[2] = renown
+ --player information 1 (this can be different for each expansion)
+ playerInfo[2] = openRaidLib.UnitInfoManager.GetPlayerInfo1()
- --shadowlands-covenant
- local covenant = C_Covenants.GetActiveCovenantID()
- playerInfo[3] = covenant
+ --player information 2 (this can be different for each expansion)
+ playerInfo[3] = openRaidLib.UnitInfoManager.GetPlayerInfo2()
- --talents
+ --player class-spec talents
local talents = openRaidLib.UnitInfoManager.GetPlayerTalents()
playerInfo[4] = talents
- --shadowlands-conduits
- local conduits = openRaidLib.UnitInfoManager.GetPlayerConduits()
- playerInfo[5] = conduits
+ --borrowed talents (conduits talents on shadowlands)
+ local borrowedTalents = openRaidLib.UnitInfoManager.GetPlayerBorrowedTalents()
+ playerInfo[5] = borrowedTalents
--pvp talents
local pvpTalents = openRaidLib.UnitInfoManager.GetPlayerPvPTalents()
@@ -2328,3 +2501,5 @@ C_Timer.After(0.1, function()
end
end)
end)
+
+tempCache.RestoreData()
\ No newline at end of file
diff --git a/Libs/LibOpenRaid/ThingsToMantain.lua b/Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua
similarity index 71%
rename from Libs/LibOpenRaid/ThingsToMantain.lua
rename to Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua
index ac5b5a833..65659383d 100644
--- a/Libs/LibOpenRaid/ThingsToMantain.lua
+++ b/Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua
@@ -1,47 +1,9 @@
---data which main need maintenance over time
-
-
-if (not LIB_OPEN_RAID_CAN_LOAD) then
- if (not LIB_OPEN_RAID_COOLDOWNS_INFO) then
- --the lib isn't loading in WotLK, some addons break due to this table not being initialized
- LIB_OPEN_RAID_COOLDOWNS_INFO = {}
- LIB_OPEN_RAID_COOLDOWNS_BY_SPEC = {}
- end
- return
-end
-
---alert the user that something went wrong
-C_Timer.After(10, function()
- if (not LIB_OPEN_RAID_DATABASE_LOADED) then
- print("Details! > LibOpenRaid failed to load, check BugSack for errors and report.")
- end
-end)
+--data for dragonflight expansion
local versionString, revision, launchDate, gameVersion = GetBuildInfo()
-
-local isExpansion_Dragonflight = function()
- if (gameVersion >= 100000) then
- return true
- end
-end
-
-local isExpansion_Shadowlands = function()
- if (gameVersion < 100000 and gameVersion >= 90000) then
- return true
- end
-end
-
-local isExpansion_LichKing = function()
- if (gameVersion < 40000 and gameVersion >= 30000) then
- return true
- end
-end
-
-local isExpansion_Vanilla = function()
- if (gameVersion < 20000) then
- return true
- end
+if (gameVersion >= 110000 or gameVersion < 100000) then
+ return
end
--localization
@@ -121,353 +83,151 @@ end
LIB_OPEN_RAID_FOOD_BUFF = {} --default
LIB_OPEN_RAID_FLASK_BUFF = {} --default
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---Wrath of the Lich King
-
-if (isExpansion_LichKing()) then
- LIB_OPEN_RAID_BLOODLUST = {
- [2825] = true, --bloodlust
- [32182] = true, --heroism
- [80353] = true, --timewarp
- [90355] = true, --ancient hysteria
- [309658] = true, --current exp drums
- }
-
- --which gear slots can be enchanted on the latest retail version of the game
- --when the value is a number, the slot only receives enchants for a specific attribute
- LIB_OPEN_RAID_ENCHANT_SLOTS = {
- --[INVSLOT_NECK] = true,
- [INVSLOT_BACK] = true, --for all
- [INVSLOT_CHEST] = true, --for all
- [INVSLOT_FINGER1] = true, --for all
- [INVSLOT_FINGER2] = true, --for all
- [INVSLOT_MAINHAND] = true, --for all
-
- [INVSLOT_FEET] = 2, --agility only
- [INVSLOT_WRIST] = 1, --intellect only
- [INVSLOT_HAND] = 3, --strenth only
- }
-
- LIB_OPEN_RAID_MYTHICKEYSTONE_ITEMID = 180653
- LIB_OPEN_RAID_AUGMENTATED_RUNE = 0
-
- LIB_OPEN_RAID_COVENANT_ICONS = {}
-
- LIB_OPEN_RAID_ENCHANT_IDS = {}
-
- LIB_OPEN_RAID_GEM_IDS = {}
-
- LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {}
-
- LIB_OPEN_RAID_FOOD_BUFF = {}
-
- LIB_OPEN_RAID_FLASK_BUFF = {}
-
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---Shadowlands
-
-elseif (isExpansion_Shadowlands()) then
- LIB_OPEN_RAID_BLOODLUST = {
- [2825] = true, --bloodlust
- [32182] = true, --heroism
- [80353] = true, --timewarp
- [90355] = true, --ancient hysteria
- [309658] = true, --current exp drums
- }
-
- LIB_OPEN_RAID_MYTHICKEYSTONE_ITEMID = 180653
- LIB_OPEN_RAID_AUGMENTATED_RUNE = 347901
-
- LIB_OPEN_RAID_COVENANT_ICONS = {
- [[Interface\ICONS\UI_Sigil_Kyrian]], --kyrian
- [[Interface\ICONS\UI_Sigil_Venthyr]], --venthyr
- [[Interface\ICONS\UI_Sigil_NightFae]], --nightfae
- [[Interface\ICONS\UI_Sigil_Necrolord]], --necrolords
- }
-
- --which gear slots can be enchanted on the latest retail version of the game
- --when the value is a number, the slot only receives enchants for a specific attribute
- LIB_OPEN_RAID_ENCHANT_SLOTS = {
- --[INVSLOT_NECK] = true,
- [INVSLOT_BACK] = true, --for all
- [INVSLOT_CHEST] = true, --for all
- [INVSLOT_FINGER1] = true, --for all
- [INVSLOT_FINGER2] = true, --for all
- [INVSLOT_MAINHAND] = true, --for all
-
- [INVSLOT_FEET] = 2, --agility only
- [INVSLOT_WRIST] = 1, --intellect only
- [INVSLOT_HAND] = 3, --strenth only
- }
-
- -- how to get the enchantId:
- -- local itemLink = GetInventoryItemLink("player", slotId)
- -- local enchandId = select(3, strsplit(":", itemLink))
- -- print("enchantId:", enchandId)
- LIB_OPEN_RAID_ENCHANT_IDS = {
- --FEET
- --[6207] = INVSLOT_FEET, --[Enchant Boots - Speed of Soul]
- [6211] = INVSLOT_FEET, --[Enchant Boots - Eternal Agility] + 15 agi
- [6212] = INVSLOT_FEET, --[Enchant Boots - Agile Soulwalker] + 10 agi
-
- --WRIST
- --[6222] = INVSLOT_WRIST, [Enchant Bracers - Shaded Hearthing]
- [6219] = INVSLOT_WRIST, --[Enchant Bracers - Illuminated Soul] + 10 int
- [6220] = INVSLOT_WRIST, --[Enchant Bracers - Eternal Intellect] + 15 int
-
- --HAND
- --[6205] = INVSLOT_HAND, --[Enchant Gloves - Shadowlands Gathering]
- [6209] = INVSLOT_HAND, --[Enchant Gloves - Strength of Soul] +10 str
- [6210] = INVSLOT_HAND, --[Enchant Gloves - Eternal Strength] +15 str
-
- --FINGER
- [6164] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Critical Strike] +16
- [6166] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Haste] +16
- [6168] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Mastery] +16
- [6170] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Versatility] +16
-
- --BACK
- [6202] = INVSLOT_BACK, --[Enchant Cloak - Fortified Speed] +20 stam +30 speed
- [6203] = INVSLOT_BACK, --[Enchant Cloak - Fortified Avoidance] +20 stam +30 avoidance
- [6204] = INVSLOT_BACK, --[Enchant Cloak - Fortified Leech]
- [6208] = INVSLOT_BACK, --[Enchant Cloak - Soul Vitality]
-
- --CHEST
- [6213] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bulwark] +25 armor +20 agi or str
- [6214] = INVSLOT_CHEST, --[Enchant Chest - Eternal Skirmish] +20 agi or str +more white damage
- [6217] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bounds] +20 int + 6% mana
- [6216] = INVSLOT_CHEST, --[Enchant Chest - Sacred Stats] +20 all stats
- [6230] = INVSLOT_CHEST, --[Enchant Chest - Eternal Stats] +30 all stats
-
- --MAINHAND
- [6223] = INVSLOT_MAINHAND, --[Enchant Weapon - Lightless Force] + shadow wave damage
- [6226] = INVSLOT_MAINHAND, --[Enchant Weapon - Eternal Grace] + burst of healing done
- [6227] = INVSLOT_MAINHAND, --[Enchant Weapon - Ascended Vigor] + healing received increased
- [6228] = INVSLOT_MAINHAND, --[Enchant Weapon - Sinful Revelation] + 6% bleed damage
- [6229] = INVSLOT_MAINHAND, --[Enchant Weapon - Celestial Guidance] + 5% agility
- [6243] = INVSLOT_MAINHAND, --[Runeforging: Rune of Hysteria]
- [3370] = INVSLOT_MAINHAND, --[Runeforging: Rune of Razorice]
- [6241] = INVSLOT_MAINHAND, --[Runeforging: Rune of Sanguination]
- [6242] = INVSLOT_MAINHAND, --[Runeforging: Rune of Spellwarding]
- [6245] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Apocalypse]
- [3368] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Fallen Crusader]
- [3847] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Stoneskin Gargoyle]
- [6244] = INVSLOT_MAINHAND, --[Runeforging: Rune of Unending Thirst]
- }
-
- -- how to get the gemId:
- -- local itemLink = GetInventoryItemLink("player", slotId)
- -- local gemId = select(4, strsplit(":", itemLink))
- -- print("gemId:", gemId)
- LIB_OPEN_RAID_GEM_IDS = {
- [173126] = true, --Straddling Jewel Doublet (green, +12 speed)
- [173125] = true, --Revitalizing Jewel Doublet (green, +100 health)
- [173130] = true, --Masterful Jewel Cluster (blue, master)
- [173129] = true, --Versatile Jewel Cluster (blue, versatility)
- [173127] = true, --Deadly Jewel Cluster (blue, crit)
- [173128] = true, --Quick Jewel Cluster (blue, haste)
- [168636] = true, --Leviathan's Eye of Strength (purple, strength)
- [168638] = true, --Leviathan's Eye of Intellect (purple, intellect)
- [169220] = true, --Straddling Sage Agate (blue, movement speed)
- }
-
- --/dump GetWeaponEnchantInfo()
- LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {
- [6188] = true, --shadowcore oil
- [6190] = true, --embalmer's oil
- [6201] = true, --weighted
- [6200] = true, --sharpened
- [5400] = true, --flametongue
- [5401] = true, --windfury
- }
-
- --buff spellId, the value of the food is the tier level
- LIB_OPEN_RAID_FOOD_BUFF = {
- [259454] = 1, --(agility) Feast of Gluttonous Hedonism
- [308434] = 1, --(critical) Phantasmal Souffle and Fries
- [308397] = 1, --(critical +18) Butterscotch Marinated Ribs
- [308400] = 1, --(critical +30) Spinefin Souffle and Fries
- [308488] = 1, --(haste) Tenebrous Crown Roast Aspic
- [308404] = 1, --(haste +18) Cinnamon Bonefish Stew
- [308405] = 1, --(haste +30) Tenebrous Crown Roast Aspic
- [308506] = 1, --(mastery) Crawler Ravioli with Apple Sauce
- [308412] = 1, --(mastery +18) Meaty Apple Dumplings
- [308413] = 1, --(mastery +30) Iridescent Ravioli with Apple Sauce
- [308525] = 1, --(stamina) Banana Beef Pudding
- [308414] = 1, --(stamina +14) Pickled Meat Smoothie
- [308415] = 1, --(stamina +22) Banana Beef Pudding
- [308514] = 1, --(versatility) Steak a la Mode
- [308425] = 1, --(versatility +18) Sweet Silvergill Sausages
- [308426] = 1, --(versatility +30) Steak a la Mode
- [308419] = 1, --(periodicaly damage) Smothered Shank
- [327715] = 1, --(speed) Fried Bonefish
-
- --feasts
- [327706] = 2, --strength +20
- [327707] = 2, --stamina +20
- [327708] = 2, --intellect +20
- [327709] = 2, --agility +20
- [327704] = 2, --intellect +18
- [327701] = 2, --strength +18
- [327705] = 2, --agility +18
- }
-
- LIB_OPEN_RAID_FLASK_BUFF = {
- [307185] = true, --Spectral Flask of Power
- [307187] = true, --Spectral Stamina Flask
- [307166] = true, --Eternal Flask
- }
-
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---Dragonflight
-
-elseif (isExpansion_Dragonflight()) then
- LIB_OPEN_RAID_BLOODLUST = {
- [2825] = true, --bloodlust (shaman)
- [32182] = true, --heroism (shaman)
- [80353] = true, --timewarp (mage)
- [90355] = true, --ancient hysteria (hunter)
- [309658] = true, --current exp drums (letherwork)
- --need to get the 30% haste buff from evokers
- }
+LIB_OPEN_RAID_BLOODLUST = {
+ [2825] = true, --bloodlust (shaman)
+ [32182] = true, --heroism (shaman)
+ [80353] = true, --timewarp (mage)
+ [90355] = true, --ancient hysteria (hunter)
+ [309658] = true, --current exp drums (letherwork)
+ --need to get the 30% haste buff from evokers
+}
- LIB_OPEN_RAID_MYTHICKEYSTONE_ITEMID = 180653
- LIB_OPEN_RAID_AUGMENTATED_RUNE = 0 --need to update to dragonflight
+LIB_OPEN_RAID_MYTHICKEYSTONE_ITEMID = 180653
+LIB_OPEN_RAID_AUGMENTATED_RUNE = 0 --need to update to dragonflight
- LIB_OPEN_RAID_COVENANT_ICONS = {
- --need to get the icon for the new 4 covanants in dragonflight
- --"Interface\\ICONS\\UI_Sigil_Kyrian", --kyrian
- --"Interface\\ICONS\\UI_Sigil_Venthyr", --venthyr
- --"Interface\\ICONS\\UI_Sigil_NightFae", --nightfae
- --"Interface\\ICONS\\UI_Sigil_Necrolord", --necrolords
- }
+LIB_OPEN_RAID_COVENANT_ICONS = {
+ --need to get the icon for the new 4 covanants in dragonflight
+ --"Interface\\ICONS\\UI_Sigil_Kyrian", --kyrian
+ --"Interface\\ICONS\\UI_Sigil_Venthyr", --venthyr
+ --"Interface\\ICONS\\UI_Sigil_NightFae", --nightfae
+ --"Interface\\ICONS\\UI_Sigil_Necrolord", --necrolords
+}
- --which gear slots can be enchanted on the latest retail version of the game
- --when the value is a number, the slot only receives enchants for a specific attribute
- LIB_OPEN_RAID_ENCHANT_SLOTS = {
- --[INVSLOT_NECK] = true,
- [INVSLOT_BACK] = true, --for all
- [INVSLOT_CHEST] = true, --for all
- [INVSLOT_FINGER1] = true, --for all
- [INVSLOT_FINGER2] = true, --for all
- [INVSLOT_MAINHAND] = true, --for all
-
- [INVSLOT_FEET] = 2, --agility only
- [INVSLOT_WRIST] = 1, --intellect only
- [INVSLOT_HAND] = 3, --strenth only
- }
+--which gear slots can be enchanted on the latest retail version of the game
+--when the value is a number, the slot only receives enchants for a specific attribute
+LIB_OPEN_RAID_ENCHANT_SLOTS = {
+ --[INVSLOT_NECK] = true,
+ [INVSLOT_BACK] = true, --for all
+ [INVSLOT_CHEST] = true, --for all
+ [INVSLOT_FINGER1] = true, --for all
+ [INVSLOT_FINGER2] = true, --for all
+ [INVSLOT_MAINHAND] = true, --for all
+
+ [INVSLOT_FEET] = 2, --agility only
+ [INVSLOT_WRIST] = 1, --intellect only
+ [INVSLOT_HAND] = 3, --strenth only
+}
- -- how to get the enchantId:
- -- local itemLink = GetInventoryItemLink("player", slotId)
- -- local enchandId = select(3, strsplit(":", itemLink))
- -- print("enchantId:", enchandId)
- LIB_OPEN_RAID_ENCHANT_IDS = {
- --need to get this data to dragonflight
- --FEET
- --[6207] = INVSLOT_FEET, --[Enchant Boots - Speed of Soul]
- --[6211] = INVSLOT_FEET, --[Enchant Boots - Eternal Agility] + 15 agi
- --[6212] = INVSLOT_FEET, --[Enchant Boots - Agile Soulwalker] + 10 agi
-
- --WRIST
- --[6222] = INVSLOT_WRIST, [Enchant Bracers - Shaded Hearthing]
- --[6219] = INVSLOT_WRIST, --[Enchant Bracers - Illuminated Soul] + 10 int
- --[6220] = INVSLOT_WRIST, --[Enchant Bracers - Eternal Intellect] + 15 int
-
- --HAND
- --[6205] = INVSLOT_HAND, --[Enchant Gloves - Shadowlands Gathering]
- --[6209] = INVSLOT_HAND, --[Enchant Gloves - Strength of Soul] +10 str
- --[6210] = INVSLOT_HAND, --[Enchant Gloves - Eternal Strength] +15 str
-
- --FINGER
- --[6164] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Critical Strike] +16
- --[6166] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Haste] +16
- --[6168] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Mastery] +16
- --[6170] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Versatility] +16
-
- --BACK
- --[6202] = INVSLOT_BACK, --[Enchant Cloak - Fortified Speed] +20 stam +30 speed
- --[6203] = INVSLOT_BACK, --[Enchant Cloak - Fortified Avoidance] +20 stam +30 avoidance
- --[6204] = INVSLOT_BACK, --[Enchant Cloak - Fortified Leech]
- --[6208] = INVSLOT_BACK, --[Enchant Cloak - Soul Vitality]
-
- --CHEST
- --[6213] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bulwark] +25 armor +20 agi or str
- --[6214] = INVSLOT_CHEST, --[Enchant Chest - Eternal Skirmish] +20 agi or str +more white damage
- --[6217] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bounds] +20 int + 6% mana
- --[6216] = INVSLOT_CHEST, --[Enchant Chest - Sacred Stats] +20 all stats
- --[6230] = INVSLOT_CHEST, --[Enchant Chest - Eternal Stats] +30 all stats
-
- --MAINHAND
- --[6223] = INVSLOT_MAINHAND, --[Enchant Weapon - Lightless Force] + shadow wave damage
- --[6226] = INVSLOT_MAINHAND, --[Enchant Weapon - Eternal Grace] + burst of healing done
- --[6227] = INVSLOT_MAINHAND, --[Enchant Weapon - Ascended Vigor] + healing received increased
- --[6228] = INVSLOT_MAINHAND, --[Enchant Weapon - Sinful Revelation] + 6% bleed damage
- --[6229] = INVSLOT_MAINHAND, --[Enchant Weapon - Celestial Guidance] + 5% agility
- --[6243] = INVSLOT_MAINHAND, --[Runeforging: Rune of Hysteria]
- --[3370] = INVSLOT_MAINHAND, --[Runeforging: Rune of Razorice]
- --[6241] = INVSLOT_MAINHAND, --[Runeforging: Rune of Sanguination]
- --[6242] = INVSLOT_MAINHAND, --[Runeforging: Rune of Spellwarding]
- --[6245] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Apocalypse]
- --[3368] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Fallen Crusader]
- --[3847] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Stoneskin Gargoyle]
- --[6244] = INVSLOT_MAINHAND, --[Runeforging: Rune of Unending Thirst]
- }
+-- how to get the enchantId:
+-- local itemLink = GetInventoryItemLink("player", slotId)
+-- local enchandId = select(3, strsplit(":", itemLink))
+-- print("enchantId:", enchandId)
+LIB_OPEN_RAID_ENCHANT_IDS = {
+ --need to get this data to dragonflight
+ --FEET
+ --[6207] = INVSLOT_FEET, --[Enchant Boots - Speed of Soul]
+ --[6211] = INVSLOT_FEET, --[Enchant Boots - Eternal Agility] + 15 agi
+ --[6212] = INVSLOT_FEET, --[Enchant Boots - Agile Soulwalker] + 10 agi
+
+ --WRIST
+ --[6222] = INVSLOT_WRIST, [Enchant Bracers - Shaded Hearthing]
+ --[6219] = INVSLOT_WRIST, --[Enchant Bracers - Illuminated Soul] + 10 int
+ --[6220] = INVSLOT_WRIST, --[Enchant Bracers - Eternal Intellect] + 15 int
+
+ --HAND
+ --[6205] = INVSLOT_HAND, --[Enchant Gloves - Shadowlands Gathering]
+ --[6209] = INVSLOT_HAND, --[Enchant Gloves - Strength of Soul] +10 str
+ --[6210] = INVSLOT_HAND, --[Enchant Gloves - Eternal Strength] +15 str
+
+ --FINGER
+ --[6164] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Critical Strike] +16
+ --[6166] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Haste] +16
+ --[6168] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Mastery] +16
+ --[6170] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Versatility] +16
+
+ --BACK
+ --[6202] = INVSLOT_BACK, --[Enchant Cloak - Fortified Speed] +20 stam +30 speed
+ --[6203] = INVSLOT_BACK, --[Enchant Cloak - Fortified Avoidance] +20 stam +30 avoidance
+ --[6204] = INVSLOT_BACK, --[Enchant Cloak - Fortified Leech]
+ --[6208] = INVSLOT_BACK, --[Enchant Cloak - Soul Vitality]
+
+ --CHEST
+ --[6213] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bulwark] +25 armor +20 agi or str
+ --[6214] = INVSLOT_CHEST, --[Enchant Chest - Eternal Skirmish] +20 agi or str +more white damage
+ --[6217] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bounds] +20 int + 6% mana
+ --[6216] = INVSLOT_CHEST, --[Enchant Chest - Sacred Stats] +20 all stats
+ --[6230] = INVSLOT_CHEST, --[Enchant Chest - Eternal Stats] +30 all stats
+
+ --MAINHAND
+ --[6223] = INVSLOT_MAINHAND, --[Enchant Weapon - Lightless Force] + shadow wave damage
+ --[6226] = INVSLOT_MAINHAND, --[Enchant Weapon - Eternal Grace] + burst of healing done
+ --[6227] = INVSLOT_MAINHAND, --[Enchant Weapon - Ascended Vigor] + healing received increased
+ --[6228] = INVSLOT_MAINHAND, --[Enchant Weapon - Sinful Revelation] + 6% bleed damage
+ --[6229] = INVSLOT_MAINHAND, --[Enchant Weapon - Celestial Guidance] + 5% agility
+ --[6243] = INVSLOT_MAINHAND, --[Runeforging: Rune of Hysteria]
+ --[3370] = INVSLOT_MAINHAND, --[Runeforging: Rune of Razorice]
+ --[6241] = INVSLOT_MAINHAND, --[Runeforging: Rune of Sanguination]
+ --[6242] = INVSLOT_MAINHAND, --[Runeforging: Rune of Spellwarding]
+ --[6245] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Apocalypse]
+ --[3368] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Fallen Crusader]
+ --[3847] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Stoneskin Gargoyle]
+ --[6244] = INVSLOT_MAINHAND, --[Runeforging: Rune of Unending Thirst]
+}
- --how to get the gemId:
- --local itemLink = GetInventoryItemLink("player", slotId)
- --local gemId = select(4, strsplit(":", itemLink))
- --print("gemId:", gemId)
- LIB_OPEN_RAID_GEM_IDS = {
- --need update to dragonflight
- }
+--how to get the gemId:
+--local itemLink = GetInventoryItemLink("player", slotId)
+--local gemId = select(4, strsplit(":", itemLink))
+--print("gemId:", gemId)
+LIB_OPEN_RAID_GEM_IDS = {
+ --need update to dragonflight
+}
- --/dump GetWeaponEnchantInfo()
- LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {
- --need update to dragonflight
- [5400] = true, --flametongue
- [5401] = true, --windfury
- }
+--/dump GetWeaponEnchantInfo()
+LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {
+ --need update to dragonflight
+ [5400] = true, --flametongue
+ [5401] = true, --windfury
+}
- --buff spellId, the value of the food is the tier level
- --use /details auras
- LIB_OPEN_RAID_FOOD_BUFF = {
- [382145] = {tier = {[220] = 1}, status = {"haste"}, localized = {STAT_HASTE}}, --Well Fed haste 220
- [382146] = {tier = {[220] = 1}, status = {"critical"}, localized = {STAT_CRITICAL_STRIKE}}, --Well Fed crit 220
- [382149] = {tier = {[220] = 1}, status = {"versatility"}, localized = {STAT_VERSATILITY}}, --Well Fed vers 220
- [382150] = {tier = {[220] = 1}, status = {"mastery"}, localized = {STAT_MASTERY}}, --Well Fed mastery 220
- [382152] = {tier = {[130] = 1}, status = {"haste", "critical"}, localized = {STAT_HASTE, STAT_CRITICAL_STRIKE}}, --Well Fed haste + crit 130
- [382153] = {tier = {[130] = 1}, status = {"haste", "versatility"}, localized = {STAT_HASTE, STAT_VERSATILITY}}, --Well Fed haste + vers 130
- [382154] = {tier = {[130] = 1}, status = {"haste", "mastery"}, localized = {STAT_HASTE, STAT_MASTERY}}, --Well Fed haste + mastery 130
- [382155] = {tier = {[130] = 1}, status = {"critical", "versatility"}, localized = {STAT_CRITICAL_STRIKE, STAT_VERSATILITY}}, --Well Fed crit + vers 130
- [382156] = {tier = {[130] = 1}, status = {"critical", "mastery"}, localized = {STAT_CRITICAL_STRIKE, STAT_MASTERY}}, --Well Fed crit + mastery 130
- [382157] = {tier = {[130] = 1}, status = {"mastery", "versatility"}, localized = {STAT_MASTERY, STAT_VERSATILITY}}, --Well Fed vers + mastery 130
- }
+--buff spellId, the value of the food is the tier level
+--use /details auras
+LIB_OPEN_RAID_FOOD_BUFF = {
+ [382145] = {tier = {[220] = 1}, status = {"haste"}, localized = {STAT_HASTE}}, --Well Fed haste 220
+ [382146] = {tier = {[220] = 1}, status = {"critical"}, localized = {STAT_CRITICAL_STRIKE}}, --Well Fed crit 220
+ [382149] = {tier = {[220] = 1}, status = {"versatility"}, localized = {STAT_VERSATILITY}}, --Well Fed vers 220
+ [382150] = {tier = {[220] = 1}, status = {"mastery"}, localized = {STAT_MASTERY}}, --Well Fed mastery 220
+ [382152] = {tier = {[130] = 1}, status = {"haste", "critical"}, localized = {STAT_HASTE, STAT_CRITICAL_STRIKE}}, --Well Fed haste + crit 130
+ [382153] = {tier = {[130] = 1}, status = {"haste", "versatility"}, localized = {STAT_HASTE, STAT_VERSATILITY}}, --Well Fed haste + vers 130
+ [382154] = {tier = {[130] = 1}, status = {"haste", "mastery"}, localized = {STAT_HASTE, STAT_MASTERY}}, --Well Fed haste + mastery 130
+ [382155] = {tier = {[130] = 1}, status = {"critical", "versatility"}, localized = {STAT_CRITICAL_STRIKE, STAT_VERSATILITY}}, --Well Fed crit + vers 130
+ [382156] = {tier = {[130] = 1}, status = {"critical", "mastery"}, localized = {STAT_CRITICAL_STRIKE, STAT_MASTERY}}, --Well Fed crit + mastery 130
+ [382157] = {tier = {[130] = 1}, status = {"mastery", "versatility"}, localized = {STAT_MASTERY, STAT_VERSATILITY}}, --Well Fed vers + mastery 130
+}
- --use /details auras
- LIB_OPEN_RAID_FLASK_BUFF = {
- --phials
- [371354] = {tier = {[131] = 1, [151] = 2, [174] = 3}}, --Phial of the Eye in the Storm
- [370652] = {tier = {[470] = 1, [541] = 2, [622] = 3}}, --Phial of Static Empowerment
- [371172] = {tier = {[236] = 1, [257] = 2, [279] = 3}}, --Phial of Tepid Versatility
- [371204] = {tier = {[8125] = 1, [9344] = 2, [10746] = 3}}, --Phial of Still Air
- [371036] = {tier = {[-4] = 1, [-5] = 2, [-6] = 3}}, --Phial of Icy Preservation
- [374000] = {tier = {[690] = 1, [752] = 2, [814] = 3}}, --Iced Phial of Corrupting Rage
- [371386] = {tier = {[432] = 1, [497] = 2, [572] = 3}}, --Phial of Charged Isolation
- [373257] = {tier = {[4603] = 2, [3949] = 1, [5365] = 3}}, --Phial of Glacial Fury
- [393700] = {tier = {[45] = 3, [38] = 2, [32] = 1}}, --Aerated Phial of Deftness
- [393717] = {tier = {[45] = 3, [38] = 2, [32] = 1}}, --Steaming Phial of Finesse
- [371186] = {tier = {[558] = 3, [473] = 1, [515] = 2}}, --Charged Phial of Alacrity
- [393714] = {tier = {[45] = 3, [38] = 2, [32] = 1}}, --Crystalline Phial of Perception
- [371339] = {tier = {[562] = 3, [476] = 1, [519] = 2}}, --Phial of Elemental Chaos
- }
+--use /details auras
+LIB_OPEN_RAID_FLASK_BUFF = {
+ --phials
+ [371354] = {tier = {[131] = 1, [151] = 2, [174] = 3}}, --Phial of the Eye in the Storm
+ [370652] = {tier = {[470] = 1, [541] = 2, [622] = 3}}, --Phial of Static Empowerment
+ [371172] = {tier = {[236] = 1, [257] = 2, [279] = 3}}, --Phial of Tepid Versatility
+ [371204] = {tier = {[8125] = 1, [9344] = 2, [10746] = 3}}, --Phial of Still Air
+ [371036] = {tier = {[-4] = 1, [-5] = 2, [-6] = 3}}, --Phial of Icy Preservation
+ [374000] = {tier = {[690] = 1, [752] = 2, [814] = 3}}, --Iced Phial of Corrupting Rage
+ [371386] = {tier = {[432] = 1, [497] = 2, [572] = 3}}, --Phial of Charged Isolation
+ [373257] = {tier = {[4603] = 2, [3949] = 1, [5365] = 3}}, --Phial of Glacial Fury
+ [393700] = {tier = {[45] = 3, [38] = 2, [32] = 1}}, --Aerated Phial of Deftness
+ [393717] = {tier = {[45] = 3, [38] = 2, [32] = 1}}, --Steaming Phial of Finesse
+ [371186] = {tier = {[558] = 3, [473] = 1, [515] = 2}}, --Charged Phial of Alacrity
+ [393714] = {tier = {[45] = 3, [38] = 2, [32] = 1}}, --Crystalline Phial of Perception
+ [371339] = {tier = {[562] = 3, [476] = 1, [519] = 2}}, --Phial of Elemental Chaos
+}
- --spellId of healing from potions
- LIB_OPEN_RAID_HEALING_POTIONS = {
- [370511] = 1, --Refreshing Healing Potion
- [371039] = 1, --Potion of Withering Vitality
- [6262] = 1, --Warlock's Healthstone
- }
-end
+--spellId of healing from potions
+LIB_OPEN_RAID_HEALING_POTIONS = {
+ [370511] = 1, --Refreshing Healing Potion
+ [371039] = 1, --Potion of Withering Vitality
+ [6262] = 1, --Warlock's Healthstone
+}
--end of per expansion content
diff --git a/Libs/LibOpenRaid/ThingsToMantain_Shadowlands.lua b/Libs/LibOpenRaid/ThingsToMantain_Shadowlands.lua
new file mode 100644
index 000000000..77d91dc51
--- /dev/null
+++ b/Libs/LibOpenRaid/ThingsToMantain_Shadowlands.lua
@@ -0,0 +1,678 @@
+
+--data for shadowlands expansion
+
+local versionString, revision, launchDate, gameVersion = GetBuildInfo()
+if (gameVersion >= 100000 or gameVersion < 90000) then
+ return
+end
+
+--localization
+local gameLanguage = GetLocale()
+
+local L = { --default localization
+ ["STRING_EXPLOSION"] = "explosion",
+ ["STRING_MIRROR_IMAGE"] = "Mirror Image",
+ ["STRING_CRITICAL_ONLY"] = "critical",
+ ["STRING_BLOOM"] = "Bloom", --lifebloom 'bloom' healing
+ ["STRING_GLAIVE"] = "Glaive", --DH glaive toss
+ ["STRING_MAINTARGET"] = "Main Target",
+ ["STRING_AOE"] = "AoE", --multi targets
+ ["STRING_SHADOW"] = "Shadow", --the spell school 'shadow'
+ ["STRING_PHYSICAL"] = "Physical", --the spell school 'physical'
+ ["STRING_PASSIVE"] = "Passive", --passive spell
+ ["STRING_TEMPLAR_VINDCATION"] = "Templar's Vindication", --paladin spell
+ ["STRING_PROC"] = "proc", --spell proc
+ ["STRING_TRINKET"] = "Trinket", --trinket
+}
+
+if (gameLanguage == "enUS") then
+ --default language
+
+elseif (gameLanguage == "deDE") then
+ L["STRING_EXPLOSION"] = "Explosion"
+ L["STRING_MIRROR_IMAGE"] = "Bilder spiegeln"
+ L["STRING_CRITICAL_ONLY"] = "kritisch"
+
+elseif (gameLanguage == "esES") then
+ L["STRING_EXPLOSION"] = "explosión"
+ L["STRING_MIRROR_IMAGE"] = "Imagen de espejo"
+ L["STRING_CRITICAL_ONLY"] = "crítico"
+
+elseif (gameLanguage == "esMX") then
+ L["STRING_EXPLOSION"] = "explosión"
+ L["STRING_MIRROR_IMAGE"] = "Imagen de espejo"
+ L["STRING_CRITICAL_ONLY"] = "crítico"
+
+elseif (gameLanguage == "frFR") then
+ L["STRING_EXPLOSION"] = "explosion"
+ L["STRING_MIRROR_IMAGE"] = "Effet miroir"
+ L["STRING_CRITICAL_ONLY"] = "critique"
+
+elseif (gameLanguage == "itIT") then
+ L["STRING_EXPLOSION"] = "esplosione"
+ L["STRING_MIRROR_IMAGE"] = "Immagine Speculare"
+ L["STRING_CRITICAL_ONLY"] = "critico"
+
+elseif (gameLanguage == "koKR") then
+ L["STRING_EXPLOSION"] = "폭발"
+ L["STRING_MIRROR_IMAGE"] = "미러 이미지"
+ L["STRING_CRITICAL_ONLY"] = "치명타"
+
+elseif (gameLanguage == "ptBR") then
+ L["STRING_EXPLOSION"] = "explosão"
+ L["STRING_MIRROR_IMAGE"] = "Imagem Espelhada"
+ L["STRING_CRITICAL_ONLY"] = "critico"
+
+elseif (gameLanguage == "ruRU") then
+ L["STRING_EXPLOSION"] = "взрыв"
+ L["STRING_MIRROR_IMAGE"] = "Зеркальное изображение"
+ L["STRING_CRITICAL_ONLY"] = "критический"
+
+elseif (gameLanguage == "zhCN") then
+ L["STRING_EXPLOSION"] = "爆炸"
+ L["STRING_MIRROR_IMAGE"] = "镜像"
+ L["STRING_CRITICAL_ONLY"] = "爆击"
+
+elseif (gameLanguage == "zhTW") then
+ L["STRING_EXPLOSION"] = "爆炸"
+ L["STRING_MIRROR_IMAGE"] = "鏡像"
+ L["STRING_CRITICAL_ONLY"] = "致命"
+end
+
+
+LIB_OPEN_RAID_BLOODLUST = {
+ [2825] = true, --bloodlust
+ [32182] = true, --heroism
+ [80353] = true, --timewarp
+ [90355] = true, --ancient hysteria
+ [309658] = true, --current exp drums
+}
+
+LIB_OPEN_RAID_MYTHICKEYSTONE_ITEMID = 180653
+LIB_OPEN_RAID_AUGMENTATED_RUNE = 347901
+
+LIB_OPEN_RAID_COVENANT_ICONS = {
+ [[Interface\ICONS\UI_Sigil_Kyrian]], --kyrian
+ [[Interface\ICONS\UI_Sigil_Venthyr]], --venthyr
+ [[Interface\ICONS\UI_Sigil_NightFae]], --nightfae
+ [[Interface\ICONS\UI_Sigil_Necrolord]], --necrolords
+}
+
+--which gear slots can be enchanted on the latest retail version of the game
+--when the value is a number, the slot only receives enchants for a specific attribute
+LIB_OPEN_RAID_ENCHANT_SLOTS = {
+ --[INVSLOT_NECK] = true,
+ [INVSLOT_BACK] = true, --for all
+ [INVSLOT_CHEST] = true, --for all
+ [INVSLOT_FINGER1] = true, --for all
+ [INVSLOT_FINGER2] = true, --for all
+ [INVSLOT_MAINHAND] = true, --for all
+
+ [INVSLOT_FEET] = 2, --agility only
+ [INVSLOT_WRIST] = 1, --intellect only
+ [INVSLOT_HAND] = 3, --strenth only
+}
+
+-- how to get the enchantId:
+-- local itemLink = GetInventoryItemLink("player", slotId)
+-- local enchandId = select(3, strsplit(":", itemLink))
+-- print("enchantId:", enchandId)
+LIB_OPEN_RAID_ENCHANT_IDS = {
+--FEET
+ --[6207] = INVSLOT_FEET, --[Enchant Boots - Speed of Soul]
+ [6211] = INVSLOT_FEET, --[Enchant Boots - Eternal Agility] + 15 agi
+ [6212] = INVSLOT_FEET, --[Enchant Boots - Agile Soulwalker] + 10 agi
+
+--WRIST
+ --[6222] = INVSLOT_WRIST, [Enchant Bracers - Shaded Hearthing]
+ [6219] = INVSLOT_WRIST, --[Enchant Bracers - Illuminated Soul] + 10 int
+ [6220] = INVSLOT_WRIST, --[Enchant Bracers - Eternal Intellect] + 15 int
+
+--HAND
+ --[6205] = INVSLOT_HAND, --[Enchant Gloves - Shadowlands Gathering]
+ [6209] = INVSLOT_HAND, --[Enchant Gloves - Strength of Soul] +10 str
+ [6210] = INVSLOT_HAND, --[Enchant Gloves - Eternal Strength] +15 str
+
+--FINGER
+ [6164] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Critical Strike] +16
+ [6166] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Haste] +16
+ [6168] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Mastery] +16
+ [6170] = INVSLOT_FINGER1, --[Enchant Ring - Tenet of Versatility] +16
+
+--BACK
+ [6202] = INVSLOT_BACK, --[Enchant Cloak - Fortified Speed] +20 stam +30 speed
+ [6203] = INVSLOT_BACK, --[Enchant Cloak - Fortified Avoidance] +20 stam +30 avoidance
+ [6204] = INVSLOT_BACK, --[Enchant Cloak - Fortified Leech]
+ [6208] = INVSLOT_BACK, --[Enchant Cloak - Soul Vitality]
+
+--CHEST
+ [6213] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bulwark] +25 armor +20 agi or str
+ [6214] = INVSLOT_CHEST, --[Enchant Chest - Eternal Skirmish] +20 agi or str +more white damage
+ [6217] = INVSLOT_CHEST, --[Enchant Chest - Eternal Bounds] +20 int + 6% mana
+ [6216] = INVSLOT_CHEST, --[Enchant Chest - Sacred Stats] +20 all stats
+ [6230] = INVSLOT_CHEST, --[Enchant Chest - Eternal Stats] +30 all stats
+
+--MAINHAND
+ [6223] = INVSLOT_MAINHAND, --[Enchant Weapon - Lightless Force] + shadow wave damage
+ [6226] = INVSLOT_MAINHAND, --[Enchant Weapon - Eternal Grace] + burst of healing done
+ [6227] = INVSLOT_MAINHAND, --[Enchant Weapon - Ascended Vigor] + healing received increased
+ [6228] = INVSLOT_MAINHAND, --[Enchant Weapon - Sinful Revelation] + 6% bleed damage
+ [6229] = INVSLOT_MAINHAND, --[Enchant Weapon - Celestial Guidance] + 5% agility
+ [6243] = INVSLOT_MAINHAND, --[Runeforging: Rune of Hysteria]
+ [3370] = INVSLOT_MAINHAND, --[Runeforging: Rune of Razorice]
+ [6241] = INVSLOT_MAINHAND, --[Runeforging: Rune of Sanguination]
+ [6242] = INVSLOT_MAINHAND, --[Runeforging: Rune of Spellwarding]
+ [6245] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Apocalypse]
+ [3368] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Fallen Crusader]
+ [3847] = INVSLOT_MAINHAND, --[Runeforging: Rune of the Stoneskin Gargoyle]
+ [6244] = INVSLOT_MAINHAND, --[Runeforging: Rune of Unending Thirst]
+}
+
+-- how to get the gemId:
+-- local itemLink = GetInventoryItemLink("player", slotId)
+-- local gemId = select(4, strsplit(":", itemLink))
+-- print("gemId:", gemId)
+LIB_OPEN_RAID_GEM_IDS = {
+ [173126] = true, --Straddling Jewel Doublet (green, +12 speed)
+ [173125] = true, --Revitalizing Jewel Doublet (green, +100 health)
+ [173130] = true, --Masterful Jewel Cluster (blue, master)
+ [173129] = true, --Versatile Jewel Cluster (blue, versatility)
+ [173127] = true, --Deadly Jewel Cluster (blue, crit)
+ [173128] = true, --Quick Jewel Cluster (blue, haste)
+ [168636] = true, --Leviathan's Eye of Strength (purple, strength)
+ [168638] = true, --Leviathan's Eye of Intellect (purple, intellect)
+ [169220] = true, --Straddling Sage Agate (blue, movement speed)
+}
+
+--/dump GetWeaponEnchantInfo()
+LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {
+ [6188] = true, --shadowcore oil
+ [6190] = true, --embalmer's oil
+ [6201] = true, --weighted
+ [6200] = true, --sharpened
+ [5400] = true, --flametongue
+ [5401] = true, --windfury
+}
+
+--buff spellId, the value of the food is the tier level
+LIB_OPEN_RAID_FOOD_BUFF = {
+ [259454] = 1, --(agility) Feast of Gluttonous Hedonism
+ [308434] = 1, --(critical) Phantasmal Souffle and Fries
+ [308397] = 1, --(critical +18) Butterscotch Marinated Ribs
+ [308400] = 1, --(critical +30) Spinefin Souffle and Fries
+ [308488] = 1, --(haste) Tenebrous Crown Roast Aspic
+ [308404] = 1, --(haste +18) Cinnamon Bonefish Stew
+ [308405] = 1, --(haste +30) Tenebrous Crown Roast Aspic
+ [308506] = 1, --(mastery) Crawler Ravioli with Apple Sauce
+ [308412] = 1, --(mastery +18) Meaty Apple Dumplings
+ [308413] = 1, --(mastery +30) Iridescent Ravioli with Apple Sauce
+ [308525] = 1, --(stamina) Banana Beef Pudding
+ [308414] = 1, --(stamina +14) Pickled Meat Smoothie
+ [308415] = 1, --(stamina +22) Banana Beef Pudding
+ [308514] = 1, --(versatility) Steak a la Mode
+ [308425] = 1, --(versatility +18) Sweet Silvergill Sausages
+ [308426] = 1, --(versatility +30) Steak a la Mode
+ [308419] = 1, --(periodicaly damage) Smothered Shank
+ [327715] = 1, --(speed) Fried Bonefish
+
+ --feasts
+ [327706] = 2, --strength +20
+ [327707] = 2, --stamina +20
+ [327708] = 2, --intellect +20
+ [327709] = 2, --agility +20
+ [327704] = 2, --intellect +18
+ [327701] = 2, --strength +18
+ [327705] = 2, --agility +18
+}
+
+LIB_OPEN_RAID_FLASK_BUFF = {
+ [307185] = true, --Spectral Flask of Power
+ [307187] = true, --Spectral Stamina Flask
+ [307166] = true, --Eternal Flask
+}
+
+LIB_OPEN_RAID_MELEE_SPECS = {
+ [251] = "DEATHKNIGHT",
+ [252] = "DEATHKNIGHT",
+ [577] = "DEMONHUNTER",
+ [103] = "DRUID",
+ --[255] = "Survival", --not in the list due to the long interrupt time
+ [269] = "MONK",
+ [70] = "PALADIN",
+ [259] = "ROGUE",
+ [260] = "ROGUE",
+ [261] = "ROGUE",
+ [263] = "SHAMAN",
+ [71] = "WARRIOR",
+ [72] = "WARRIOR",
+}
+
+--tells the duration, requirements and cooldown
+--information about a cooldown is mainly get from tooltips
+--if talent is required, use the command:
+--/dump GetTalentInfo (talentTier, talentColumn, 1)
+--example: to get the second talent of the last talent line, use: /dump GetTalentInfo (7, 2, 1)
+
+LIB_OPEN_RAID_COOLDOWNS_INFO = {
+
+ -- Filter Types:
+ -- 1 attack cooldown
+ -- 2 personal defensive cooldown
+ -- 3 targetted defensive cooldown
+ -- 4 raid defensive cooldown
+ -- 5 personal utility cooldown
+ -- 6 interrupt
+
+ --interrupts
+ [6552] = {class = "WARRIOR", specs = {71, 72, 73}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Pummel
+ [2139] = {class = "MAGE", specs = {62, 63, 64}, cooldown = 24, silence = 6, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Counterspell
+ [15487] = {class = "PRIEST", specs = {258}, cooldown = 45, silence = 4, talent = false, cooldownWithTalent = 30, cooldownTalentId = 23137, type = 6, charges = 1}, --Silence (shadow) Last Word Talent to reduce cooldown in 15 seconds
+ [1766] = {class = "ROGUE", specs = {259, 260, 261}, cooldown = 15, silence = 5, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Kick
+ [96231] = {class = "PALADIN", specs = {66, 70}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Rebuke (protection and retribution)
+ [116705] = {class = "MONK", specs = {268, 269}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Spear Hand Strike (brewmaster and windwalker)
+ [57994] = {class = "SHAMAN", specs = {262, 263, 264}, cooldown = 12, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Wind Shear
+ [47528] = {class = "DEATHKNIGHT", specs = {250, 251, 252}, cooldown = 15, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Mind Freeze
+ [106839] = {class = "DRUID", specs = {103, 104}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Skull Bash (feral, guardian)
+ [78675] = {class = "DRUID", specs = {102}, cooldown = 60, silence = 8, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Solar Beam (balance)
+ [147362] = {class = "HUNTER", specs = {253, 254}, cooldown = 24, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Counter Shot (beast mastery, marksmanship)
+ [187707] = {class = "HUNTER", specs = {255}, cooldown = 15, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Muzzle (survival)
+ [183752] = {class = "DEMONHUNTER", specs = {577, 581}, cooldown = 15, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Disrupt
+ [19647] = {class = "WARLOCK", specs = {265, 266, 267}, cooldown = 24, silence = 6, talent = false, cooldownWithTalent = false, cooldownTalentId = false, pet = 417, type = 6, charges = 1}, --Spell Lock (pet felhunter ability)
+ [89766] = {class = "WARLOCK", specs = {266}, cooldown = 30, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, pet = 17252, type = 6, charges = 1}, --Axe Toss (pet felguard ability)
+
+ --paladin
+ -- 65 - Holy
+ -- 66 - Protection
+ -- 70 - Retribution
+
+ [31884] = {cooldown = 120, duration = 20, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 1}, --Avenging Wrath
+ [216331] = {cooldown = 120, duration = 20, specs = {65}, talent =22190, charges = 1, class = "PALADIN", type = 1}, --Avenging Crusader (talent)
+ [498] = {cooldown = 60, duration = 8, specs = {65}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Divine Protection
+ [642] = {cooldown = 300, duration = 8, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Divine Shield
+ [105809] = {cooldown = 90, duration = 20, specs = {65,66,70}, talent =22164, charges = 1, class = "PALADIN", type = 2}, --Holy Avenger (talent)
+ [152262] = {cooldown = 45, duration = 15, specs = {65,66,70}, talent =17601, charges = 1, class = "PALADIN", type = 2}, --Seraphim
+ [633] = {cooldown = 600, duration = false, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 3}, --Lay on Hands
+ [1022] = {cooldown = 300, duration = 10, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Protection
+ [6940] = {cooldown = 120, duration = 12, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Sacrifice
+ [31821] = {cooldown = 180, duration = 8, specs = {65}, talent =false, charges = 1, class = "PALADIN", type = 4}, --Aura Mastery
+ [1044] = {cooldown = 25, duration = 8, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 5}, --Blessing of Freedom
+ [853] = {cooldown = 60, duration = 6, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 5}, --Hammer of Justice
+ [115750] = {cooldown = 90, duration = 6, specs = {65,66,70}, talent =21811, charges = 1, class = "PALADIN", type = 5}, --Blinding Light(talent)
+ [327193] = {cooldown = 90, duration = 15, specs = {66}, talent =23468, charges = 1, class = "PALADIN", type = 1}, --Moment of Glory (talent)
+ [31850] = {cooldown = 120, duration = 8, specs = {66}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Ardent Defender
+ [86659] = {cooldown = 300, duration = 8, specs = {66}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Guardian of Ancient Kings
+ [204018] = {cooldown = 180, duration = 10, specs = {66}, talent =22435, charges = 1, class = "PALADIN", type = 3}, --Blessing of Spellwarding (talent)
+ [231895] = {cooldown = 120, duration = 25, specs = {70}, talent =22215, charges = 1, class = "PALADIN", type = 1}, --Crusade (talent)
+ [205191] = {cooldown = 60, duration = 10, specs = {70}, talent =22183, charges = 1, class = "PALADIN", type = 2}, --Eye for an Eye (talent)
+ [184662] = {cooldown = 120, duration = 15, specs = {70}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Shield of Vengeance
+
+ --warrior
+ -- 71 - Arms
+ -- 72 - Fury
+ -- 73 - Protection
+
+ [107574] = {cooldown = 90, duration = 20, specs = {71,73}, talent =22397, charges = 1, class = "WARRIOR", type = 1}, --Avatar
+ [227847] = {cooldown = 90, duration = 5, specs = {71}, talent =false, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm
+ [46924] = {cooldown = 60, duration = 4, specs = {72}, talent =22400, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm (talent)
+ [152277] = {cooldown = 60, duration = 6, specs = {71}, talent =21667, charges = 1, class = "WARRIOR", type = 1}, --Ravager (talent)
+ [228920] = {cooldown = 60, duration = 6, specs = {73}, talent =23099, charges = 1, class = "WARRIOR", type = 1}, --Ravager (talent)
+ [118038] = {cooldown = 180, duration = 8, specs = {71}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Die by the Sword
+ [97462] = {cooldown = 180, duration = 10, specs = {71,72,73}, talent =false, charges = 1, class = "WARRIOR", type = 4}, --Rallying Cry
+ [1719] = {cooldown = 90, duration = 10, specs = {72}, talent =false, charges = 1, class = "WARRIOR", type = 1}, --Recklessness
+ [184364] = {cooldown = 120, duration = 8, specs = {72}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Enraged Regeneration
+ [12975] = {cooldown = 180, duration = 15, specs = {73}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Last Stand
+ [871] = {cooldown = 8, duration = 240, specs = {73}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Shield Wall
+ [64382] = {cooldown = 180, duration = false, specs = {71,72,73}, talent =false, charges = 1, class = "WARRIOR", type = 5}, --Shattering Throw
+ [5246] = {cooldown = 90, duration = 8, specs = {71,72,73}, talent =false, charges = 1, class = "WARRIOR", type = 5}, --Intimidating Shout
+
+ --warlock
+ -- 265 - Affliction
+ -- 266 - Demonology
+ -- 267 - Destruction
+
+ [205180] = {cooldown = 180, duration = 20, specs = {265}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Summon Darkglare
+ --[342601] = {cooldown = 3600, duration = false, specs = {}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Ritual of Doom
+ [113860] = {cooldown = 120, duration = 20, specs = {265}, talent =19293, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Misery (talent)
+ [104773] = {cooldown = 180, duration = 8, specs = {265,266,267}, talent =false, charges = 1, class = "WARLOCK", type = 2}, --Unending Resolve
+ [108416] = {cooldown = 60, duration = 20, specs = {265,266,267}, talent =19286, charges = 1, class = "WARLOCK", type = 2}, --Dark Pact (talent)
+ [265187] = {cooldown = 90, duration = 15, specs = {266}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Summon Demonic Tyrant
+ [111898] = {cooldown = 120, duration = 15, specs = {266}, talent =21717, charges = 1, class = "WARLOCK", type = 1}, --Grimoire: Felguard (talent)
+ [267171] = {cooldown = 60, duration = false, specs = {266}, talent =23138, charges = 1, class = "WARLOCK", type = 1}, --Demonic Strength (talent)
+ [267217] = {cooldown = 180, duration = 20, specs = {266}, talent =23091, charges = 1, class = "WARLOCK", type = 1}, --Nether Portal
+ [1122] = {cooldown = 180, duration = 30, specs = {267}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Summon Infernal
+ [113858] = {cooldown = 120, duration = 20, specs = {267}, talent =23092, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Instability (talent)
+ [30283] = {cooldown = 60, duration = 3, specs = {265,266,267}, talent =false, charges = 1, class = "WARLOCK", type = 5}, --Shadowfury
+ [333889] = {cooldown = 180, duration = 15, specs = {265,266,267}, talent =false, charges = 1, class = "WARLOCK", type = 5}, --Fel Domination
+ [5484] = {cooldown = 40, duration = 20, specs = {265,266,267}, talent =23465, charges = 1, class = "WARLOCK", type = 5}, --Howl of Terror (talent)
+
+ --shaman
+ -- 262 - Elemental
+ -- 263 - Enchancment
+ -- 264 - Restoration
+
+ [198067] = {cooldown = 150, duration = 30, specs = {262}, talent =false, charges = 1, class = "SHAMAN", type = 1}, --Fire Elemental
+ [192249] = {cooldown = 150, duration = 30, specs = {262}, talent =19272, charges = 1, class = "SHAMAN", type = 1}, --Storm Elemental (talent)
+ [108271] = {cooldown = 90, duration = 8, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 2}, --Astral Shift
+ [108281] = {cooldown = 120, duration = 10, specs = {262,263}, talent =22172, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Guidance (talent)
+ [51533] = {cooldown = 120, duration = 15, specs = {263}, talent =false, charges = 1, class = "SHAMAN", type = 1}, --Feral Spirit
+ [114050] = {cooldown = 180, duration = 15, specs = {262}, talent =21675, charges = 1, class = "SHAMAN", type = 1}, --Ascendance (talent)
+ [114051] = {cooldown = 180, duration = 15, specs = {263}, talent =21972, charges = 1, class = "SHAMAN", type = 1}, --Ascendance (talent)
+ [114052] = {cooldown = 180, duration = 15, specs = {264}, talent =22359, charges = 1, class = "SHAMAN", type = 4}, --Ascendance (talent)
+ [98008] = {cooldown = 180, duration = 6, specs = {264}, talent =false, charges = 1, class = "SHAMAN", type = 4}, --Spirit Link Totem
+ [108280] = {cooldown = 180, duration = 10, specs = {264}, talent =false, charges = 1, class = "SHAMAN", type = 4}, --Healing Tide Totem
+ [207399] = {cooldown = 240, duration = 30, specs = {264}, talent =22323, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Protection Totem (talent)
+ [16191] = {cooldown = 180, duration = 8, specs = {264}, talent =false, charges = 1, class = "SHAMAN", type = 4}, --Mana Tide Totem
+ [198103] = {cooldown = 300, duration = 60, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 2}, --Earth Elemental
+ [192058] = {cooldown = 60, duration = false, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 5}, --Capacitor Totem
+ [8143] = {cooldown = 60, duration = 10, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 5}, --Tremor Totem
+ [192077] = {cooldown = 120, duration = 15, specs = {262,263,264}, talent =21966, charges = 1, class = "SHAMAN", type = 5}, --Wind Rush Totem (talent)
+
+ --monk
+ -- 268 - Brewmaster
+ -- 269 - Windwalker
+ -- 270 - Restoration
+
+ [132578] = {cooldown = 180, duration = 25, specs = {268}, talent =false, charges = 1, class = "MONK", type = 1}, --Invoke Niuzao, the Black Ox
+ [115080] = {cooldown = 180, duration = false, specs = {268,269,270}, talent =false, charges = 1, class = "MONK", type = 1}, --Touch of Death
+ [115203] = {cooldown = 420, duration = 15, specs = {268}, talent =false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
+ [115176] = {cooldown = 300, duration = 8, specs = {268}, talent =false, charges = 1, class = "MONK", type = 2}, --Zen Meditation
+ [115399] = {cooldown = 120, duration = false, specs = {268}, talent =19992, charges = 1, class = "MONK", type = 2}, --Black Ox brew (talent)
+ [122278] = {cooldown = 120, duration = 10, specs = {268,269,270}, talent =20175, charges = 1, class = "MONK", type = 2}, --Dampen Harm (talent)
+ [137639] = {cooldown = 90, duration = 15, specs = {269}, talent =false, charges = 1, class = "MONK", type = 1}, --Storm, Earth, and Fire
+ [123904] = {cooldown = 120, duration = 24, specs = {269}, talent =false, charges = 1, class = "MONK", type = 1}, --Invoke Xuen, the White Tiger
+ [152173] = {cooldown = 90, duration = 12, specs = {269}, talent =21191, charges = 1, class = "MONK", type = 1}, --Serenity (talent)
+ [122470] = {cooldown = 90, duration = 6, specs = {269}, talent =false, charges = 1, class = "MONK", type = 2}, --Touch of Karma
+ [322118] = {cooldown = 180, duration = 25, specs = {270}, talent =false, charges = 1, class = "MONK", type = 4}, --Invoke Yulon, the Jade serpent
+ [243435] = {cooldown = 90, duration = 15, specs = {269,270}, talent =false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
+ [122783] = {cooldown = 90, duration = 6, specs = {269,270}, talent =20173, charges = 1, class = "MONK", type = 2}, --Diffuse Magic (talent)
+ [116849] = {cooldown = 120, duration = 12, specs = {270}, talent =false, charges = 1, class = "MONK", type = 3}, --Life Cocoon
+ [115310] = {cooldown = 180, duration = false, specs = {270}, talent =false, charges = 1, class = "MONK", type = 4}, --Revival
+ [197908] = {cooldown = 90, duration = 10, specs = {270}, talent =22166, charges = 1, class = "MONK", type = 5}, --Mana tea (talent)
+ [116844] = {cooldown = 45, duration = 5, specs = {268,269,270}, talent =19995, charges = 1, class = "MONK", type = 5}, --Ring of peace (talent)
+ [119381] = {cooldown = 50, duration = 3, specs = {268,269,270}, talent =false, charges = 1, class = "MONK", type = 5}, --Leg Sweep
+
+ --hunter
+ -- 253 - Beast Mastery
+ -- 254 - Marksmenship
+ -- 255 - Survival
+
+ [193530] = {cooldown = 120, duration = 20, specs = {253}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Aspect of the Wild
+ [19574] = {cooldown = 90, duration = 12, specs = {253}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Bestial Wrath
+ [201430] = {cooldown = 180, duration = 12, specs = {253}, talent =23044, charges = 1, class = "HUNTER", type = 1}, --Stampede (talent)
+ [288613] = {cooldown = 180, duration = 15, specs = {254}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Trueshot
+ [199483] = {cooldown = 60, duration = 60, specs = {253,254,255}, talent =23100, charges = 1, class = "HUNTER", type = 2}, --Camouflage (talent)
+ [281195] = {cooldown = 180, duration = 6, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest
+ [266779] = {cooldown = 120, duration = 20, specs = {255}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Coordinated Assault
+ [186265] = {cooldown = 180, duration = 8, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 2}, --Aspect of the Turtle
+ [109304] = {cooldown = 120, duration = false, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 2}, --Exhilaration
+ [186257] = {cooldown = 144, duration = 14, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Aspect of the cheetah
+ [19577] = {cooldown = 60, duration = 5, specs = {253,255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Intimidation
+ [109248] = {cooldown = 45, duration = 10, specs = {253,254,255}, talent =22499, charges = 1, class = "HUNTER", type = 5}, --Binding Shot (talent)
+ [187650] = {cooldown = 25, duration = 60, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Freezing Trap
+ [186289] = {cooldown = 72, duration = 15, specs = {255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Aspect of the eagle
+
+ --druid
+ -- 102 - Balance
+ -- 103 - Feral
+ -- 104 - Guardian
+ -- 105 - Restoration
+
+ [77761] = {cooldown = 120, duration = 8, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 4}, --Stampeding Roar
+ [194223] = {cooldown = 180, duration = 20, specs = {102}, talent =false, charges = 1, class = "DRUID", type = 1}, --Celestial Alignment
+ [102560] = {cooldown = 180, duration = 30, specs = {102}, talent =21702, charges = 1, class = "DRUID", type = 1}, --Incarnation: Chosen of Elune (talent)
+ [22812] = {cooldown = 60, duration = 12, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 2}, --Barkskin
+ [108238] = {cooldown = 90, duration = false, specs = {102,103,104,105}, talent =18570, charges = 1, class = "DRUID", type = 2}, --Renewal (talent)
+ [29166] = {cooldown = 180, duration = 12, specs = {102,105}, talent =false, charges = 1, class = "DRUID", type = 3}, --Innervate
+ [106951] = {cooldown = 180, duration = 15, specs = {103,104}, talent =false, charges = 1, class = "DRUID", type = 1}, --Berserk
+ [102543] = {cooldown = 30, duration = 180, specs = {103}, talent =21704, charges = 1, class = "DRUID", type = 1}, --Incarnation: King of the Jungle (talent)
+ [61336] = {cooldown = 120, duration = 6, specs = {103,104}, talent =false, charges = 2, class = "DRUID", type = 2}, --Survival Instincts (2min feral 4min guardian, same spellid)
+ [102558] = {cooldown = 180, duration = 30, specs = {104}, talent =22388, charges = 1, class = "DRUID", type = 2}, --Incarnation: Guardian of Ursoc (talent)
+ [33891] = {cooldown = 180, duration = 30, specs = {105}, talent =22421, charges = 1, class = "DRUID", type = 2}, --Incarnation: Tree of Life (talent)
+ [102342] = {cooldown = 60, duration = 12, specs = {105}, talent =false, charges = 1, class = "DRUID", type = 3}, --Ironbark
+ [203651] = {cooldown = 60, duration = false, specs = {105}, talent =22422, charges = 1, class = "DRUID", type = 3}, --Overgrowth (talent)
+ [740] = {cooldown = 180, duration = 8, specs = {105}, talent =false, charges = 1, class = "DRUID", type = 4}, --Tranquility
+ [197721] = {cooldown = 90, duration = 8, specs = {105}, talent =22404, charges = 1, class = "DRUID", type = 4}, --Flourish (talent)
+ [132469] = {cooldown = 30, duration = false, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 5}, --Typhoon
+ [319454] = {cooldown = 300, duration = 45, specs = {102,103,104,105}, talent =18577, charges = 1, class = "DRUID", type = 5}, --Heart of the Wild (talent)
+ [102793] = {cooldown = 60, duration = 10, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 5}, --Ursol's Vortex
+
+ --death knight
+ -- 252 - Unholy
+ -- 251 - Frost
+ -- 252 - Blood
+
+ [275699] = {cooldown = 90, duration = 15, specs = {252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Apocalypse
+ [42650] = {cooldown = 480, duration = 30, specs = {252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Army of the Dead
+ [49206] = {cooldown = 180, duration = 30, specs = {252}, talent =22110, charges = 1, class = "DEATHKNIGHT", type = 1}, --Summon Gargoyle (talent)
+ [207289] = {cooldown = 78, duration = 12, specs = {252}, talent =22538, charges = 1, class = "DEATHKNIGHT", type = 1}, --Unholy Assault (talent)
+ [48743] = {cooldown = 120, duration = 15, specs = {250,251,252}, talent =23373, charges = 1, class = "DEATHKNIGHT", type = 2}, --Death Pact (talent)
+ [48707] = {cooldown = 60, duration = 10, specs = {250,251,252}, talent =23373, charges = 1, class = "DEATHKNIGHT", type = 2}, --Anti-magic Shell
+ [152279] = {cooldown = 120, duration = 5, specs = {251}, talent =22537, charges = 1, class = "DEATHKNIGHT", type = 1}, --Breath of Sindragosa (talent)
+ [47568] = {cooldown = 120, duration = 20, specs = {251}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Empower Rune Weapon
+ [279302] = {cooldown = 120, duration = 10, specs = {251}, talent =22535, charges = 1, class = "DEATHKNIGHT", type = 1}, --Frostwyrm's Fury (talent)
+ [49028] = {cooldown = 120, duration = 8, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Dancing Rune Weapon
+ [55233] = {cooldown = 90, duration = 10, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Vampiric Blood
+ [48792] = {cooldown = 120, duration = 8, specs = {250,251,252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Icebound Fortitude
+ [51052] = {cooldown = 120, duration = 10, specs = {250,251,252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 4}, --Anti-magic Zone
+ [219809] = {cooldown = 60, duration = 8, specs = {250}, talent =23454, charges = 1, class = "DEATHKNIGHT", type = 2}, --Tombstone (talent)
+ [108199] = {cooldown = 120, duration = false, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Gorefiend's Grasp
+ [207167] = {cooldown = 60, duration = 5, specs = {251}, talent =22519, charges = 1, class = "DEATHKNIGHT", type = 5}, --Blinding Sleet (talent)
+ [108194] = {cooldown = 45, duration = 4, specs = {251,252}, talent =22520, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate (talent)
+ [221562] = {cooldown = 45, duration = 5, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate
+ [212552] = {cooldown = 60, duration = 4, specs = {250,251,252}, talent =19228, charges = 1, class = "DEATHKNIGHT", type = 5}, --Wraith walk (talent)
+
+ --demon hunter
+ -- 577 - Havoc
+ -- 581 - Vengance
+
+ [191427] = {cooldown = 240, duration = 30, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 1}, --Metamorphosis
+ [198589] = {cooldown = 60, duration = 10, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 2}, --Blur
+ [196555] = {cooldown = 120, duration = 5, specs = {577}, talent =21865, charges = 1, class = "DEMONHUNTER", type = 2}, --Netherwalk (talent)
+ [187827] = {cooldown = 180, duration = 15, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 2}, --Metamorphosis
+ [196718] = {cooldown = 180, duration = 8, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 4}, --Darkness
+ [188501] = {cooldown = 30, duration = 10, specs = {577,581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Spectral Sight
+ [179057] = {cooldown = 60, duration = 2, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Chaos Nova
+ [211881] = {cooldown = 30, duration = 4, specs = {577}, talent =22767, charges = 1, class = "DEMONHUNTER", type = 5}, --Fel Eruption (talent)
+ [320341] = {cooldown = 90, duration = false, specs = {581}, talent =21902, charges = 1, class = "DEMONHUNTER", type = 1}, --Bulk Extraction (talent)
+ [204021] = {cooldown = 60, duration = 10, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 2}, --Fiery Brand
+ [263648] = {cooldown = 30, duration = 12, specs = {581}, talent =22768, charges = 1, class = "DEMONHUNTER", type = 2}, --Soul Barrier (talent)
+ [207684] = {cooldown = 90, duration = 12, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Misery
+ [202137] = {cooldown = 60, duration = 8, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Silence
+ [202138] = {cooldown = 90, duration = 6, specs = {581}, talent =22511, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Chains (talent)
+
+ --mage
+ -- 62 - Arcane
+ -- 63 - Fire
+ -- 64 - Frost
+
+ [12042] = {cooldown = 90, duration = 10, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 1}, --Arcane Power
+ [12051] = {cooldown = 90, duration = 6, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 1}, --Evocation
+ [110960] = {cooldown = 120, duration = 20, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 2}, --Greater Invisibility
+ [235450] = {cooldown = 25, duration = 60, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 5}, --Prismatic Barrier
+ [235313] = {cooldown = 25, duration = 60, specs = {63}, talent =false, charges = 1, class = "MAGE", type = 5}, --Blazing Barrier
+ [11426] = {cooldown = 25, duration = 60, specs = {64}, talent =false, charges = 1, class = "MAGE", type = 5}, --Ice Barrier
+ [190319] = {cooldown = 120, duration = 10, specs = {63}, talent =false, charges = 1, class = "MAGE", type = 1}, --Combustion
+ [55342] = {cooldown = 120, duration = 40, specs = {62,63,64}, talent =22445, charges = 1, class = "MAGE", type = 1}, --Mirror Image
+ [66] = {cooldown = 300, duration = 20, specs = {63,64}, talent =false, charges = 1, class = "MAGE", type = 2}, --Invisibility
+ [12472] = {cooldown = 180, duration = 20, specs = {64}, talent =false, charges = 1, class = "MAGE", type = 1}, --Icy Veins
+ [205021] = {cooldown = 78, duration = 5, specs = {64}, talent =22309, charges = 1, class = "MAGE", type = 1}, --Ray of Frost (talent)
+ [45438] = {cooldown = 240, duration = 10, specs = {62,63,64}, talent =false, charges = 1, class = "MAGE", type = 2}, --Ice Block
+ [235219] = {cooldown = 300, duration = false, specs = {64}, talent =false, charges = 1, class = "MAGE", type = 5}, --Cold Snap
+ [113724] = {cooldown = 45, duration = 10, specs = {62,63,64}, talent =22471, charges = 1, class = "MAGE", type = 5}, --Ring of Frost (talent)
+
+ --priest
+ -- 256 - Discipline
+ -- 257 - Holy
+ -- 258 - Shadow
+
+ [10060] = {cooldown = 120, duration = 20, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 1}, --Power Infusion
+ [34433] = {cooldown = 180, duration = 15, specs = {256,258}, talent =false, charges = 1, class = "PRIEST", type = 1, ignoredIfTalent = 21719}, --Shadowfiend
+ [200174] = {cooldown = 60, duration = 15, specs = {258}, talent =21719, charges = 1, class = "PRIEST", type = 1}, --Mindbender (talent)
+ [123040] = {cooldown = 60, duration = 12, specs = {256}, talent =22094, charges = 1, class = "PRIEST", type = 1}, --Mindbender (talent)
+ [33206] = {cooldown = 180, duration = 8, specs = {256}, talent =false, charges = 1, class = "PRIEST", type = 3}, --Pain Suppression
+ [62618] = {cooldown = 180, duration = 10, specs = {256}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Power Word: Barrier
+ [271466] = {cooldown = 180, duration = 10, specs = {256}, talent =21184, charges = 1, class = "PRIEST", type = 4}, --Luminous Barrier (talent)
+ [47536] = {cooldown = 90, duration = 10, specs = {256}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Rapture
+ [19236] = {cooldown = 90, duration = 10, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Desperate Prayer
+ [200183] = {cooldown = 120, duration = 20, specs = {257}, talent =21644, charges = 1, class = "PRIEST", type = 2}, --Apotheosis (talent)
+ [47788] = {cooldown = 180, duration = 10, specs = {257}, talent =false, charges = 1, class = "PRIEST", type = 3}, --Guardian Spirit
+ [64843] = {cooldown = 180, duration = 8, specs = {257}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Divine Hymn
+ [64901] = {cooldown = 300, duration = 6, specs = {257}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Symbol of Hope
+ [265202] = {cooldown = 720, duration = false, specs = {257}, talent =23145, charges = 1, class = "PRIEST", type = 4}, --Holy Word: Salvation (talent)
+ [109964] = {cooldown = 60, duration = 12, specs = {256}, talent =21184, charges = 1, class = "PRIEST", type = 4}, --Spirit Shell (talent)
+ [8122] = {cooldown = 60, duration = 8, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Psychic Scream
+ [193223] = {cooldown = 240, duration = 60, specs = {258}, talent =21979, charges = 1, class = "PRIEST", type = 1}, --Surrender to Madness (talent)
+ [47585] = {cooldown = 120, duration = 6, specs = {258}, talent =false, charges = 1, class = "PRIEST", type = 2}, --Dispersion
+ [15286] = {cooldown = 120, duration = 15, specs = {258}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Vampiric Embrace
+ [64044] = {cooldown = 45, duration = 4, specs = {258}, talent =21752, charges = 1, class = "PRIEST", type = 5}, --Psychic Horror
+ [205369] = {cooldown = 30, duration = 6, specs = {258}, talent =23375, charges = 1, class = "PRIEST", type = 5}, --Mind Bomb
+ [228260] = {cooldown = 90, duration = 15, specs = {258}, talent =false, charges = 1, class = "PRIEST", type = 1}, --Void Erruption
+ [73325] = {cooldown = 90, duration = false, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Leap of Faith
+
+ --rogue
+ -- 259 - Assasination
+ -- 260 - Outlaw
+ -- 261 - Subtlety
+
+ [79140] = {cooldown = 120, duration = 20, specs = {259}, talent =false, charges = 1, class = "ROGUE", type = 1}, --Vendetta
+ [1856] = {cooldown = 120, duration = 3, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Vanish
+ [5277] = {cooldown = 120, duration = 10, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Evasion
+ [31224] = {cooldown = 120, duration = 5, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Cloak of Shadows
+ [2094] = {cooldown = 120, duration = 60, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 5}, --Blind
+ [114018] = {cooldown = 360, duration = 15, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 5}, --Shroud of Concealment
+ [185311] = {cooldown = 30, duration = 15, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 5}, --Crimson Vial
+ [13750] = {cooldown = 180, duration = 20, specs = {260}, talent =false, charges = 1, class = "ROGUE", type = 1}, --Adrenaline Rush
+ [51690] = {cooldown = 120, duration = 2, specs = {260}, talent =23175, charges = 1, class = "ROGUE", type = 1}, --Killing Spree (talent)
+ [199754] = {cooldown = 120, duration = 10, specs = {260}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Riposte
+ [343142] = {cooldown = 90, duration = 10, specs = {260}, talent =19250, charges = 1, class = "ROGUE", type = 5}, --Dreadblades
+ [121471] = {cooldown = 180, duration = 20, specs = {261}, talent =false, charges = 1, class = "ROGUE", type = 1}, --Shadow Blades
+}
+
+LIB_OPEN_RAID_COOLDOWNS_BY_SPEC = {};
+for spellID,spellData in pairs(LIB_OPEN_RAID_COOLDOWNS_INFO) do
+ for _,specID in ipairs(spellData.specs) do
+ LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specID] = LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specID] or {};
+ LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specID][spellID] = spellData.type;
+ end
+end
+
+-- DF Evoker
+LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[1467] = {};
+LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[1468] = {};
+
+--[=[
+Spell customizations:
+ Many times there's spells with the same name which does different effects
+ In here you find a list of spells which has its name changed to give more information to the player
+ you may add into the list any other parameter your addon uses declaring for example 'icon = ' or 'texcoord = ' etc.
+
+Implamentation Example:
+ if (LIB_OPEN_RAID_SPELL_CUSTOM_NAMES) then
+ for spellId, customTable in pairs(LIB_OPEN_RAID_SPELL_CUSTOM_NAMES) do
+ local name = customTable.name
+ if (name) then
+ MyCustomSpellTable[spellId] = name
+ end
+ end
+ end
+--]=]
+
+LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {} --default fallback
+
+if (GetBuildInfo():match ("%d") == "1") then
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {}
+
+elseif (GetBuildInfo():match ("%d") == "2") then
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {}
+
+elseif (GetBuildInfo():match ("%d") == "3") then
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {}
+
+else
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {
+ [44461] = {name = GetSpellInfo(44461) .. " (" .. L["STRING_EXPLOSION"] .. ")"}, --Living Bomb (explosion)
+ [59638] = {name = GetSpellInfo(59638) .. " (" .. L["STRING_MIRROR_IMAGE"] .. ")"}, --Mirror Image's Frost Bolt (mage)
+ [88082] = {name = GetSpellInfo(88082) .. " (" .. L["STRING_MIRROR_IMAGE"] .. ")"}, --Mirror Image's Fireball (mage)
+ [94472] = {name = GetSpellInfo(94472) .. " (" .. L["STRING_CRITICAL_ONLY"] .. ")"}, --Atonement critical hit (priest)
+ [33778] = {name = GetSpellInfo(33778) .. " (" .. L["STRING_BLOOM"] .. ")"}, --lifebloom (bloom)
+ [121414] = {name = GetSpellInfo(121414) .. " (" .. L["STRING_GLAIVE"] .. " #1)"}, --glaive toss (hunter)
+ [120761] = {name = GetSpellInfo(120761) .. " (" .. L["STRING_GLAIVE"] .. " #2)"}, --glaive toss (hunter)
+ [212739] = {name = GetSpellInfo(212739) .. " (" .. L["STRING_MAINTARGET"] .. ")"}, --DK Epidemic
+ [215969] = {name = GetSpellInfo(215969) .. " (" .. L["STRING_AOE"] .. ")"}, --DK Epidemic
+ [70890] = {name = GetSpellInfo(70890) .. " (" .. L["STRING_SHADOW"] .. ")"}, --DK Scourge Strike
+ [55090] = {name = GetSpellInfo(55090) .. " (" .. L["STRING_PHYSICAL"] .. ")"}, --DK Scourge Strike
+ [49184] = {name = GetSpellInfo(49184) .. " (" .. L["STRING_MAINTARGET"] .. ")"}, --DK Howling Blast
+ [237680] = {name = GetSpellInfo(237680) .. " (" .. L["STRING_AOE"] .. ")"}, --DK Howling Blast
+ [228649] = {name = GetSpellInfo(228649) .. " (" .. L["STRING_PASSIVE"] .. ")"}, --Monk Mistweaver Blackout kick - Passive Teachings of the Monastery
+ [339538] = {name = GetSpellInfo(224266) .. " (" .. L["STRING_TEMPLAR_VINDCATION"] .. ")"}, --
+ [343355] = {name = GetSpellInfo(343355) .. " (" .. L["STRING_PROC"] .. ")"}, --shadow priest's void bold proc
+
+ --shadowlands trinkets
+ [345020] = {name = GetSpellInfo(345020) .. " (" .. L["STRING_TRINKET"] .. ")"},
+ }
+end
+
+--interrupt list using proxy from cooldown list
+--this list should be expansion and combatlog safe
+LIB_OPEN_RAID_SPELL_INTERRUPT = {
+ [6552] = LIB_OPEN_RAID_COOLDOWNS_INFO[6552], --Pummel
+
+ [2139] = LIB_OPEN_RAID_COOLDOWNS_INFO[2139], --Counterspell
+
+ [15487] = LIB_OPEN_RAID_COOLDOWNS_INFO[15487], --Silence (shadow) Last Word Talent to reduce cooldown in 15 seconds
+
+ [1766] = LIB_OPEN_RAID_COOLDOWNS_INFO[1766], --Kick
+
+ [96231] = LIB_OPEN_RAID_COOLDOWNS_INFO[96231], --Rebuke (protection and retribution)
+
+ [116705] = LIB_OPEN_RAID_COOLDOWNS_INFO[116705], --Spear Hand Strike (brewmaster and windwalker)
+
+ [57994] = LIB_OPEN_RAID_COOLDOWNS_INFO[57994], --Wind Shear
+
+ [47528] = LIB_OPEN_RAID_COOLDOWNS_INFO[47528], --Mind Freeze
+
+ [106839] = LIB_OPEN_RAID_COOLDOWNS_INFO[106839], --Skull Bash (feral, guardian)
+ [78675] = LIB_OPEN_RAID_COOLDOWNS_INFO[78675], --Solar Beam (balance)
+
+ [147362] = LIB_OPEN_RAID_COOLDOWNS_INFO[147362], --Counter Shot (beast mastery, marksmanship)
+ [187707] = LIB_OPEN_RAID_COOLDOWNS_INFO[187707], --Muzzle (survival)
+
+ [183752] = LIB_OPEN_RAID_COOLDOWNS_INFO[183752], --Disrupt
+
+ [19647] = LIB_OPEN_RAID_COOLDOWNS_INFO[19647], --Spell Lock (pet felhunter ability)
+ [89766] = LIB_OPEN_RAID_COOLDOWNS_INFO[89766], --Axe Toss (pet felguard ability)
+}
+
+--override list of spells with more than one effect, example: multiple types of polymorph
+LIB_OPEN_RAID_SPELL_DEFAULT_IDS = {
+ --stampeding roar (druid)
+ [106898] = 77761,
+ [77764] = 77761, --"Uncategorized" on wowhead, need to test if still exists
+ --spell lock (warlock pet)
+ [119910] = 19647, --"Uncategorized" on wowhead
+ [132409] = 19647, --"Uncategorized" on wowhead
+ --[115781] = 19647, --optical blast used by old talent observer, still a thing?
+ --[251523] = 19647, --wowhead list this spell as sibling spell
+ --[251922] = 19647, --wowhead list this spell as sibling spell
+ --axe toss (warlock pet)
+ [119914] = 89766, --"Uncategorized" on wowhead
+ [347008] = 89766, --"Uncategorized" on wowhead
+ --hex (shaman)
+ [210873] = 51514, --Compy
+ [211004] = 51514, --Spider
+ [211010] = 51514, --Snake
+ [211015] = 51514, --Cockroach
+ [269352] = 51514, --Skeletal Hatchling
+ [277778] = 51514, --Zandalari Tendonripper
+ [277784] = 51514, --Wicker Mongrel
+ [309328] = 51514, --Living Honey
+ --typhoon
+ --[61391] = 132469,
+ --metamorphosis
+ [191427] = 200166,
+ --187827 vengeance need to test these spellIds
+ --191427 havoc
+}
+--need to add mass dispell (32375)
+
+LIB_OPEN_RAID_DATABASE_LOADED = true
\ No newline at end of file
diff --git a/Libs/LibOpenRaid/ThingsToMantain_Wrath.lua b/Libs/LibOpenRaid/ThingsToMantain_Wrath.lua
new file mode 100644
index 000000000..6d6bf1c7c
--- /dev/null
+++ b/Libs/LibOpenRaid/ThingsToMantain_Wrath.lua
@@ -0,0 +1,568 @@
+
+--data for wrath of the lich king expansion
+
+local versionString, revision, launchDate, gameVersion = GetBuildInfo()
+if (gameVersion >= 40000 or gameVersion < 30000) then
+ return
+end
+
+--localization
+local gameLanguage = GetLocale()
+
+local L = { --default localization
+ ["STRING_EXPLOSION"] = "explosion",
+ ["STRING_MIRROR_IMAGE"] = "Mirror Image",
+ ["STRING_CRITICAL_ONLY"] = "critical",
+ ["STRING_BLOOM"] = "Bloom", --lifebloom 'bloom' healing
+ ["STRING_GLAIVE"] = "Glaive", --DH glaive toss
+ ["STRING_MAINTARGET"] = "Main Target",
+ ["STRING_AOE"] = "AoE", --multi targets
+ ["STRING_SHADOW"] = "Shadow", --the spell school 'shadow'
+ ["STRING_PHYSICAL"] = "Physical", --the spell school 'physical'
+ ["STRING_PASSIVE"] = "Passive", --passive spell
+ ["STRING_TEMPLAR_VINDCATION"] = "Templar's Vindication", --paladin spell
+ ["STRING_PROC"] = "proc", --spell proc
+ ["STRING_TRINKET"] = "Trinket", --trinket
+}
+
+if (gameLanguage == "enUS") then
+ --default language
+
+elseif (gameLanguage == "deDE") then
+ L["STRING_EXPLOSION"] = "Explosion"
+ L["STRING_MIRROR_IMAGE"] = "Bilder spiegeln"
+ L["STRING_CRITICAL_ONLY"] = "kritisch"
+
+elseif (gameLanguage == "esES") then
+ L["STRING_EXPLOSION"] = "explosión"
+ L["STRING_MIRROR_IMAGE"] = "Imagen de espejo"
+ L["STRING_CRITICAL_ONLY"] = "crítico"
+
+elseif (gameLanguage == "esMX") then
+ L["STRING_EXPLOSION"] = "explosión"
+ L["STRING_MIRROR_IMAGE"] = "Imagen de espejo"
+ L["STRING_CRITICAL_ONLY"] = "crítico"
+
+elseif (gameLanguage == "frFR") then
+ L["STRING_EXPLOSION"] = "explosion"
+ L["STRING_MIRROR_IMAGE"] = "Effet miroir"
+ L["STRING_CRITICAL_ONLY"] = "critique"
+
+elseif (gameLanguage == "itIT") then
+ L["STRING_EXPLOSION"] = "esplosione"
+ L["STRING_MIRROR_IMAGE"] = "Immagine Speculare"
+ L["STRING_CRITICAL_ONLY"] = "critico"
+
+elseif (gameLanguage == "koKR") then
+ L["STRING_EXPLOSION"] = "폭발"
+ L["STRING_MIRROR_IMAGE"] = "미러 이미지"
+ L["STRING_CRITICAL_ONLY"] = "치명타"
+
+elseif (gameLanguage == "ptBR") then
+ L["STRING_EXPLOSION"] = "explosão"
+ L["STRING_MIRROR_IMAGE"] = "Imagem Espelhada"
+ L["STRING_CRITICAL_ONLY"] = "critico"
+
+elseif (gameLanguage == "ruRU") then
+ L["STRING_EXPLOSION"] = "взрыв"
+ L["STRING_MIRROR_IMAGE"] = "Зеркальное изображение"
+ L["STRING_CRITICAL_ONLY"] = "критический"
+
+elseif (gameLanguage == "zhCN") then
+ L["STRING_EXPLOSION"] = "爆炸"
+ L["STRING_MIRROR_IMAGE"] = "镜像"
+ L["STRING_CRITICAL_ONLY"] = "爆击"
+
+elseif (gameLanguage == "zhTW") then
+ L["STRING_EXPLOSION"] = "爆炸"
+ L["STRING_MIRROR_IMAGE"] = "鏡像"
+ L["STRING_CRITICAL_ONLY"] = "致命"
+end
+
+
+LIB_OPEN_RAID_FOOD_BUFF = {} --default
+LIB_OPEN_RAID_FLASK_BUFF = {} --default
+
+LIB_OPEN_RAID_BLOODLUST = {
+ [2825] = true, --bloodlust
+ [32182] = true, --heroism
+ [80353] = true, --timewarp
+ [90355] = true, --ancient hysteria
+ [309658] = true, --current exp drums
+}
+
+--which gear slots can be enchanted on the latest retail version of the game
+--when the value is a number, the slot only receives enchants for a specific attribute
+LIB_OPEN_RAID_ENCHANT_SLOTS = {
+ --[INVSLOT_NECK] = true,
+ [INVSLOT_BACK] = true, --for all
+ [INVSLOT_CHEST] = true, --for all
+ [INVSLOT_FINGER1] = true, --for all
+ [INVSLOT_FINGER2] = true, --for all
+ [INVSLOT_MAINHAND] = true, --for all
+
+ [INVSLOT_FEET] = 2, --agility only
+ [INVSLOT_WRIST] = 1, --intellect only
+ [INVSLOT_HAND] = 3, --strenth only
+}
+
+LIB_OPEN_RAID_MYTHICKEYSTONE_ITEMID = 180653
+LIB_OPEN_RAID_AUGMENTATED_RUNE = 0
+
+LIB_OPEN_RAID_COVENANT_ICONS = {}
+
+LIB_OPEN_RAID_ENCHANT_IDS = {}
+
+LIB_OPEN_RAID_GEM_IDS = {}
+
+LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {}
+
+LIB_OPEN_RAID_FOOD_BUFF = {}
+
+LIB_OPEN_RAID_FLASK_BUFF = {}
+
+LIB_OPEN_RAID_MELEE_SPECS = {
+ [251] = "DEATHKNIGHT",
+ [252] = "DEATHKNIGHT",
+ [577] = "DEMONHUNTER",
+ [103] = "DRUID",
+ --[255] = "Survival", --not in the list due to the long interrupt time
+ [269] = "MONK",
+ [70] = "PALADIN",
+ [259] = "ROGUE",
+ [260] = "ROGUE",
+ [261] = "ROGUE",
+ [263] = "SHAMAN",
+ [71] = "WARRIOR",
+ [72] = "WARRIOR",
+}
+
+--tells the duration, requirements and cooldown
+--information about a cooldown is mainly get from tooltips
+--if talent is required, use the command:
+--/dump GetTalentInfo (talentTier, talentColumn, 1)
+--example: to get the second talent of the last talent line, use: /dump GetTalentInfo (7, 2, 1)
+
+LIB_OPEN_RAID_COOLDOWNS_INFO = {
+
+ -- Filter Types:
+ -- 1 attack cooldown
+ -- 2 personal defensive cooldown
+ -- 3 targetted defensive cooldown
+ -- 4 raid defensive cooldown
+ -- 5 personal utility cooldown
+ -- 6 interrupt
+
+ --interrupts
+ [6552] = {class = "WARRIOR", specs = {71, 72, 73}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Pummel
+ [2139] = {class = "MAGE", specs = {62, 63, 64}, cooldown = 24, silence = 6, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Counterspell
+ [15487] = {class = "PRIEST", specs = {258}, cooldown = 45, silence = 4, talent = false, cooldownWithTalent = 30, cooldownTalentId = 23137, type = 6, charges = 1}, --Silence (shadow) Last Word Talent to reduce cooldown in 15 seconds
+ [1766] = {class = "ROGUE", specs = {259, 260, 261}, cooldown = 15, silence = 5, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Kick
+ [96231] = {class = "PALADIN", specs = {66, 70}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Rebuke (protection and retribution)
+ [116705] = {class = "MONK", specs = {268, 269}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Spear Hand Strike (brewmaster and windwalker)
+ [57994] = {class = "SHAMAN", specs = {262, 263, 264}, cooldown = 12, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Wind Shear
+ [47528] = {class = "DEATHKNIGHT", specs = {250, 251, 252}, cooldown = 15, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Mind Freeze
+ [106839] = {class = "DRUID", specs = {103, 104}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Skull Bash (feral, guardian)
+ [78675] = {class = "DRUID", specs = {102}, cooldown = 60, silence = 8, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Solar Beam (balance)
+ [147362] = {class = "HUNTER", specs = {253, 254}, cooldown = 24, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Counter Shot (beast mastery, marksmanship)
+ [187707] = {class = "HUNTER", specs = {255}, cooldown = 15, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Muzzle (survival)
+ [183752] = {class = "DEMONHUNTER", specs = {577, 581}, cooldown = 15, silence = 3, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Disrupt
+ [19647] = {class = "WARLOCK", specs = {265, 266, 267}, cooldown = 24, silence = 6, talent = false, cooldownWithTalent = false, cooldownTalentId = false, pet = 417, type = 6, charges = 1}, --Spell Lock (pet felhunter ability)
+ [89766] = {class = "WARLOCK", specs = {266}, cooldown = 30, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, pet = 17252, type = 6, charges = 1}, --Axe Toss (pet felguard ability)
+
+ --paladin
+ -- 65 - Holy
+ -- 66 - Protection
+ -- 70 - Retribution
+
+ [31884] = {cooldown = 120, duration = 20, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 1}, --Avenging Wrath
+ [216331] = {cooldown = 120, duration = 20, specs = {65}, talent =22190, charges = 1, class = "PALADIN", type = 1}, --Avenging Crusader (talent)
+ [498] = {cooldown = 60, duration = 8, specs = {65}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Divine Protection
+ [642] = {cooldown = 300, duration = 8, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Divine Shield
+ [105809] = {cooldown = 90, duration = 20, specs = {65,66,70}, talent =22164, charges = 1, class = "PALADIN", type = 2}, --Holy Avenger (talent)
+ [152262] = {cooldown = 45, duration = 15, specs = {65,66,70}, talent =17601, charges = 1, class = "PALADIN", type = 2}, --Seraphim
+ [633] = {cooldown = 600, duration = false, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 3}, --Lay on Hands
+ [1022] = {cooldown = 300, duration = 10, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Protection
+ [6940] = {cooldown = 120, duration = 12, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Sacrifice
+ [31821] = {cooldown = 180, duration = 8, specs = {65}, talent =false, charges = 1, class = "PALADIN", type = 4}, --Aura Mastery
+ [1044] = {cooldown = 25, duration = 8, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 5}, --Blessing of Freedom
+ [853] = {cooldown = 60, duration = 6, specs = {65,66,70}, talent =false, charges = 1, class = "PALADIN", type = 5}, --Hammer of Justice
+ [115750] = {cooldown = 90, duration = 6, specs = {65,66,70}, talent =21811, charges = 1, class = "PALADIN", type = 5}, --Blinding Light(talent)
+ [327193] = {cooldown = 90, duration = 15, specs = {66}, talent =23468, charges = 1, class = "PALADIN", type = 1}, --Moment of Glory (talent)
+ [31850] = {cooldown = 120, duration = 8, specs = {66}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Ardent Defender
+ [86659] = {cooldown = 300, duration = 8, specs = {66}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Guardian of Ancient Kings
+ [204018] = {cooldown = 180, duration = 10, specs = {66}, talent =22435, charges = 1, class = "PALADIN", type = 3}, --Blessing of Spellwarding (talent)
+ [231895] = {cooldown = 120, duration = 25, specs = {70}, talent =22215, charges = 1, class = "PALADIN", type = 1}, --Crusade (talent)
+ [205191] = {cooldown = 60, duration = 10, specs = {70}, talent =22183, charges = 1, class = "PALADIN", type = 2}, --Eye for an Eye (talent)
+ [184662] = {cooldown = 120, duration = 15, specs = {70}, talent =false, charges = 1, class = "PALADIN", type = 2}, --Shield of Vengeance
+
+ --warrior
+ -- 71 - Arms
+ -- 72 - Fury
+ -- 73 - Protection
+
+ [107574] = {cooldown = 90, duration = 20, specs = {71,73}, talent =22397, charges = 1, class = "WARRIOR", type = 1}, --Avatar
+ [227847] = {cooldown = 90, duration = 5, specs = {71}, talent =false, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm
+ [46924] = {cooldown = 60, duration = 4, specs = {72}, talent =22400, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm (talent)
+ [152277] = {cooldown = 60, duration = 6, specs = {71}, talent =21667, charges = 1, class = "WARRIOR", type = 1}, --Ravager (talent)
+ [228920] = {cooldown = 60, duration = 6, specs = {73}, talent =23099, charges = 1, class = "WARRIOR", type = 1}, --Ravager (talent)
+ [118038] = {cooldown = 180, duration = 8, specs = {71}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Die by the Sword
+ [97462] = {cooldown = 180, duration = 10, specs = {71,72,73}, talent =false, charges = 1, class = "WARRIOR", type = 4}, --Rallying Cry
+ [1719] = {cooldown = 90, duration = 10, specs = {72}, talent =false, charges = 1, class = "WARRIOR", type = 1}, --Recklessness
+ [184364] = {cooldown = 120, duration = 8, specs = {72}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Enraged Regeneration
+ [12975] = {cooldown = 180, duration = 15, specs = {73}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Last Stand
+ [871] = {cooldown = 8, duration = 240, specs = {73}, talent =false, charges = 1, class = "WARRIOR", type = 2}, --Shield Wall
+ [64382] = {cooldown = 180, duration = false, specs = {71,72,73}, talent =false, charges = 1, class = "WARRIOR", type = 5}, --Shattering Throw
+ [5246] = {cooldown = 90, duration = 8, specs = {71,72,73}, talent =false, charges = 1, class = "WARRIOR", type = 5}, --Intimidating Shout
+
+ --warlock
+ -- 265 - Affliction
+ -- 266 - Demonology
+ -- 267 - Destruction
+
+ [205180] = {cooldown = 180, duration = 20, specs = {265}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Summon Darkglare
+ --[342601] = {cooldown = 3600, duration = false, specs = {}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Ritual of Doom
+ [113860] = {cooldown = 120, duration = 20, specs = {265}, talent =19293, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Misery (talent)
+ [104773] = {cooldown = 180, duration = 8, specs = {265,266,267}, talent =false, charges = 1, class = "WARLOCK", type = 2}, --Unending Resolve
+ [108416] = {cooldown = 60, duration = 20, specs = {265,266,267}, talent =19286, charges = 1, class = "WARLOCK", type = 2}, --Dark Pact (talent)
+ [265187] = {cooldown = 90, duration = 15, specs = {266}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Summon Demonic Tyrant
+ [111898] = {cooldown = 120, duration = 15, specs = {266}, talent =21717, charges = 1, class = "WARLOCK", type = 1}, --Grimoire: Felguard (talent)
+ [267171] = {cooldown = 60, duration = false, specs = {266}, talent =23138, charges = 1, class = "WARLOCK", type = 1}, --Demonic Strength (talent)
+ [267217] = {cooldown = 180, duration = 20, specs = {266}, talent =23091, charges = 1, class = "WARLOCK", type = 1}, --Nether Portal
+ [1122] = {cooldown = 180, duration = 30, specs = {267}, talent =false, charges = 1, class = "WARLOCK", type = 1}, --Summon Infernal
+ [113858] = {cooldown = 120, duration = 20, specs = {267}, talent =23092, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Instability (talent)
+ [30283] = {cooldown = 60, duration = 3, specs = {265,266,267}, talent =false, charges = 1, class = "WARLOCK", type = 5}, --Shadowfury
+ [333889] = {cooldown = 180, duration = 15, specs = {265,266,267}, talent =false, charges = 1, class = "WARLOCK", type = 5}, --Fel Domination
+ [5484] = {cooldown = 40, duration = 20, specs = {265,266,267}, talent =23465, charges = 1, class = "WARLOCK", type = 5}, --Howl of Terror (talent)
+
+ --shaman
+ -- 262 - Elemental
+ -- 263 - Enchancment
+ -- 264 - Restoration
+
+ [198067] = {cooldown = 150, duration = 30, specs = {262}, talent =false, charges = 1, class = "SHAMAN", type = 1}, --Fire Elemental
+ [192249] = {cooldown = 150, duration = 30, specs = {262}, talent =19272, charges = 1, class = "SHAMAN", type = 1}, --Storm Elemental (talent)
+ [108271] = {cooldown = 90, duration = 8, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 2}, --Astral Shift
+ [108281] = {cooldown = 120, duration = 10, specs = {262,263}, talent =22172, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Guidance (talent)
+ [51533] = {cooldown = 120, duration = 15, specs = {263}, talent =false, charges = 1, class = "SHAMAN", type = 1}, --Feral Spirit
+ [114050] = {cooldown = 180, duration = 15, specs = {262}, talent =21675, charges = 1, class = "SHAMAN", type = 1}, --Ascendance (talent)
+ [114051] = {cooldown = 180, duration = 15, specs = {263}, talent =21972, charges = 1, class = "SHAMAN", type = 1}, --Ascendance (talent)
+ [114052] = {cooldown = 180, duration = 15, specs = {264}, talent =22359, charges = 1, class = "SHAMAN", type = 4}, --Ascendance (talent)
+ [98008] = {cooldown = 180, duration = 6, specs = {264}, talent =false, charges = 1, class = "SHAMAN", type = 4}, --Spirit Link Totem
+ [108280] = {cooldown = 180, duration = 10, specs = {264}, talent =false, charges = 1, class = "SHAMAN", type = 4}, --Healing Tide Totem
+ [207399] = {cooldown = 240, duration = 30, specs = {264}, talent =22323, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Protection Totem (talent)
+ [16191] = {cooldown = 180, duration = 8, specs = {264}, talent =false, charges = 1, class = "SHAMAN", type = 4}, --Mana Tide Totem
+ [198103] = {cooldown = 300, duration = 60, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 2}, --Earth Elemental
+ [192058] = {cooldown = 60, duration = false, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 5}, --Capacitor Totem
+ [8143] = {cooldown = 60, duration = 10, specs = {262,263,264}, talent =false, charges = 1, class = "SHAMAN", type = 5}, --Tremor Totem
+ [192077] = {cooldown = 120, duration = 15, specs = {262,263,264}, talent =21966, charges = 1, class = "SHAMAN", type = 5}, --Wind Rush Totem (talent)
+
+ --monk
+ -- 268 - Brewmaster
+ -- 269 - Windwalker
+ -- 270 - Restoration
+
+ [132578] = {cooldown = 180, duration = 25, specs = {268}, talent =false, charges = 1, class = "MONK", type = 1}, --Invoke Niuzao, the Black Ox
+ [115080] = {cooldown = 180, duration = false, specs = {268,269,270}, talent =false, charges = 1, class = "MONK", type = 1}, --Touch of Death
+ [115203] = {cooldown = 420, duration = 15, specs = {268}, talent =false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
+ [115176] = {cooldown = 300, duration = 8, specs = {268}, talent =false, charges = 1, class = "MONK", type = 2}, --Zen Meditation
+ [115399] = {cooldown = 120, duration = false, specs = {268}, talent =19992, charges = 1, class = "MONK", type = 2}, --Black Ox brew (talent)
+ [122278] = {cooldown = 120, duration = 10, specs = {268,269,270}, talent =20175, charges = 1, class = "MONK", type = 2}, --Dampen Harm (talent)
+ [137639] = {cooldown = 90, duration = 15, specs = {269}, talent =false, charges = 1, class = "MONK", type = 1}, --Storm, Earth, and Fire
+ [123904] = {cooldown = 120, duration = 24, specs = {269}, talent =false, charges = 1, class = "MONK", type = 1}, --Invoke Xuen, the White Tiger
+ [152173] = {cooldown = 90, duration = 12, specs = {269}, talent =21191, charges = 1, class = "MONK", type = 1}, --Serenity (talent)
+ [122470] = {cooldown = 90, duration = 6, specs = {269}, talent =false, charges = 1, class = "MONK", type = 2}, --Touch of Karma
+ [322118] = {cooldown = 180, duration = 25, specs = {270}, talent =false, charges = 1, class = "MONK", type = 4}, --Invoke Yulon, the Jade serpent
+ [243435] = {cooldown = 90, duration = 15, specs = {269,270}, talent =false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
+ [122783] = {cooldown = 90, duration = 6, specs = {269,270}, talent =20173, charges = 1, class = "MONK", type = 2}, --Diffuse Magic (talent)
+ [116849] = {cooldown = 120, duration = 12, specs = {270}, talent =false, charges = 1, class = "MONK", type = 3}, --Life Cocoon
+ [115310] = {cooldown = 180, duration = false, specs = {270}, talent =false, charges = 1, class = "MONK", type = 4}, --Revival
+ [197908] = {cooldown = 90, duration = 10, specs = {270}, talent =22166, charges = 1, class = "MONK", type = 5}, --Mana tea (talent)
+ [116844] = {cooldown = 45, duration = 5, specs = {268,269,270}, talent =19995, charges = 1, class = "MONK", type = 5}, --Ring of peace (talent)
+ [119381] = {cooldown = 50, duration = 3, specs = {268,269,270}, talent =false, charges = 1, class = "MONK", type = 5}, --Leg Sweep
+
+ --hunter
+ -- 253 - Beast Mastery
+ -- 254 - Marksmenship
+ -- 255 - Survival
+
+ [193530] = {cooldown = 120, duration = 20, specs = {253}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Aspect of the Wild
+ [19574] = {cooldown = 90, duration = 12, specs = {253}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Bestial Wrath
+ [201430] = {cooldown = 180, duration = 12, specs = {253}, talent =23044, charges = 1, class = "HUNTER", type = 1}, --Stampede (talent)
+ [288613] = {cooldown = 180, duration = 15, specs = {254}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Trueshot
+ [199483] = {cooldown = 60, duration = 60, specs = {253,254,255}, talent =23100, charges = 1, class = "HUNTER", type = 2}, --Camouflage (talent)
+ [281195] = {cooldown = 180, duration = 6, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest
+ [266779] = {cooldown = 120, duration = 20, specs = {255}, talent =false, charges = 1, class = "HUNTER", type = 1}, --Coordinated Assault
+ [186265] = {cooldown = 180, duration = 8, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 2}, --Aspect of the Turtle
+ [109304] = {cooldown = 120, duration = false, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 2}, --Exhilaration
+ [186257] = {cooldown = 144, duration = 14, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Aspect of the cheetah
+ [19577] = {cooldown = 60, duration = 5, specs = {253,255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Intimidation
+ [109248] = {cooldown = 45, duration = 10, specs = {253,254,255}, talent =22499, charges = 1, class = "HUNTER", type = 5}, --Binding Shot (talent)
+ [187650] = {cooldown = 25, duration = 60, specs = {253,254,255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Freezing Trap
+ [186289] = {cooldown = 72, duration = 15, specs = {255}, talent =false, charges = 1, class = "HUNTER", type = 5}, --Aspect of the eagle
+
+ --druid
+ -- 102 - Balance
+ -- 103 - Feral
+ -- 104 - Guardian
+ -- 105 - Restoration
+
+ [77761] = {cooldown = 120, duration = 8, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 4}, --Stampeding Roar
+ [194223] = {cooldown = 180, duration = 20, specs = {102}, talent =false, charges = 1, class = "DRUID", type = 1}, --Celestial Alignment
+ [102560] = {cooldown = 180, duration = 30, specs = {102}, talent =21702, charges = 1, class = "DRUID", type = 1}, --Incarnation: Chosen of Elune (talent)
+ [22812] = {cooldown = 60, duration = 12, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 2}, --Barkskin
+ [108238] = {cooldown = 90, duration = false, specs = {102,103,104,105}, talent =18570, charges = 1, class = "DRUID", type = 2}, --Renewal (talent)
+ [29166] = {cooldown = 180, duration = 12, specs = {102,105}, talent =false, charges = 1, class = "DRUID", type = 3}, --Innervate
+ [106951] = {cooldown = 180, duration = 15, specs = {103,104}, talent =false, charges = 1, class = "DRUID", type = 1}, --Berserk
+ [102543] = {cooldown = 30, duration = 180, specs = {103}, talent =21704, charges = 1, class = "DRUID", type = 1}, --Incarnation: King of the Jungle (talent)
+ [61336] = {cooldown = 120, duration = 6, specs = {103,104}, talent =false, charges = 2, class = "DRUID", type = 2}, --Survival Instincts (2min feral 4min guardian, same spellid)
+ [102558] = {cooldown = 180, duration = 30, specs = {104}, talent =22388, charges = 1, class = "DRUID", type = 2}, --Incarnation: Guardian of Ursoc (talent)
+ [33891] = {cooldown = 180, duration = 30, specs = {105}, talent =22421, charges = 1, class = "DRUID", type = 2}, --Incarnation: Tree of Life (talent)
+ [102342] = {cooldown = 60, duration = 12, specs = {105}, talent =false, charges = 1, class = "DRUID", type = 3}, --Ironbark
+ [203651] = {cooldown = 60, duration = false, specs = {105}, talent =22422, charges = 1, class = "DRUID", type = 3}, --Overgrowth (talent)
+ [740] = {cooldown = 180, duration = 8, specs = {105}, talent =false, charges = 1, class = "DRUID", type = 4}, --Tranquility
+ [197721] = {cooldown = 90, duration = 8, specs = {105}, talent =22404, charges = 1, class = "DRUID", type = 4}, --Flourish (talent)
+ [132469] = {cooldown = 30, duration = false, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 5}, --Typhoon
+ [319454] = {cooldown = 300, duration = 45, specs = {102,103,104,105}, talent =18577, charges = 1, class = "DRUID", type = 5}, --Heart of the Wild (talent)
+ [102793] = {cooldown = 60, duration = 10, specs = {102,103,104,105}, talent =false, charges = 1, class = "DRUID", type = 5}, --Ursol's Vortex
+
+ --death knight
+ -- 252 - Unholy
+ -- 251 - Frost
+ -- 252 - Blood
+
+ [275699] = {cooldown = 90, duration = 15, specs = {252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Apocalypse
+ [42650] = {cooldown = 480, duration = 30, specs = {252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Army of the Dead
+ [49206] = {cooldown = 180, duration = 30, specs = {252}, talent =22110, charges = 1, class = "DEATHKNIGHT", type = 1}, --Summon Gargoyle (talent)
+ [207289] = {cooldown = 78, duration = 12, specs = {252}, talent =22538, charges = 1, class = "DEATHKNIGHT", type = 1}, --Unholy Assault (talent)
+ [48743] = {cooldown = 120, duration = 15, specs = {250,251,252}, talent =23373, charges = 1, class = "DEATHKNIGHT", type = 2}, --Death Pact (talent)
+ [48707] = {cooldown = 60, duration = 10, specs = {250,251,252}, talent =23373, charges = 1, class = "DEATHKNIGHT", type = 2}, --Anti-magic Shell
+ [152279] = {cooldown = 120, duration = 5, specs = {251}, talent =22537, charges = 1, class = "DEATHKNIGHT", type = 1}, --Breath of Sindragosa (talent)
+ [47568] = {cooldown = 120, duration = 20, specs = {251}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Empower Rune Weapon
+ [279302] = {cooldown = 120, duration = 10, specs = {251}, talent =22535, charges = 1, class = "DEATHKNIGHT", type = 1}, --Frostwyrm's Fury (talent)
+ [49028] = {cooldown = 120, duration = 8, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Dancing Rune Weapon
+ [55233] = {cooldown = 90, duration = 10, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Vampiric Blood
+ [48792] = {cooldown = 120, duration = 8, specs = {250,251,252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Icebound Fortitude
+ [51052] = {cooldown = 120, duration = 10, specs = {250,251,252}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 4}, --Anti-magic Zone
+ [219809] = {cooldown = 60, duration = 8, specs = {250}, talent =23454, charges = 1, class = "DEATHKNIGHT", type = 2}, --Tombstone (talent)
+ [108199] = {cooldown = 120, duration = false, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Gorefiend's Grasp
+ [207167] = {cooldown = 60, duration = 5, specs = {251}, talent =22519, charges = 1, class = "DEATHKNIGHT", type = 5}, --Blinding Sleet (talent)
+ [108194] = {cooldown = 45, duration = 4, specs = {251,252}, talent =22520, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate (talent)
+ [221562] = {cooldown = 45, duration = 5, specs = {250}, talent =false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate
+ [212552] = {cooldown = 60, duration = 4, specs = {250,251,252}, talent =19228, charges = 1, class = "DEATHKNIGHT", type = 5}, --Wraith walk (talent)
+
+ --demon hunter
+ -- 577 - Havoc
+ -- 581 - Vengance
+
+ [191427] = {cooldown = 240, duration = 30, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 1}, --Metamorphosis
+ [198589] = {cooldown = 60, duration = 10, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 2}, --Blur
+ [196555] = {cooldown = 120, duration = 5, specs = {577}, talent =21865, charges = 1, class = "DEMONHUNTER", type = 2}, --Netherwalk (talent)
+ [187827] = {cooldown = 180, duration = 15, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 2}, --Metamorphosis
+ [196718] = {cooldown = 180, duration = 8, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 4}, --Darkness
+ [188501] = {cooldown = 30, duration = 10, specs = {577,581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Spectral Sight
+ [179057] = {cooldown = 60, duration = 2, specs = {577}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Chaos Nova
+ [211881] = {cooldown = 30, duration = 4, specs = {577}, talent =22767, charges = 1, class = "DEMONHUNTER", type = 5}, --Fel Eruption (talent)
+ [320341] = {cooldown = 90, duration = false, specs = {581}, talent =21902, charges = 1, class = "DEMONHUNTER", type = 1}, --Bulk Extraction (talent)
+ [204021] = {cooldown = 60, duration = 10, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 2}, --Fiery Brand
+ [263648] = {cooldown = 30, duration = 12, specs = {581}, talent =22768, charges = 1, class = "DEMONHUNTER", type = 2}, --Soul Barrier (talent)
+ [207684] = {cooldown = 90, duration = 12, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Misery
+ [202137] = {cooldown = 60, duration = 8, specs = {581}, talent =false, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Silence
+ [202138] = {cooldown = 90, duration = 6, specs = {581}, talent =22511, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Chains (talent)
+
+ --mage
+ -- 62 - Arcane
+ -- 63 - Fire
+ -- 64 - Frost
+
+ [12042] = {cooldown = 90, duration = 10, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 1}, --Arcane Power
+ [12051] = {cooldown = 90, duration = 6, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 1}, --Evocation
+ [110960] = {cooldown = 120, duration = 20, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 2}, --Greater Invisibility
+ [235450] = {cooldown = 25, duration = 60, specs = {62}, talent =false, charges = 1, class = "MAGE", type = 5}, --Prismatic Barrier
+ [235313] = {cooldown = 25, duration = 60, specs = {63}, talent =false, charges = 1, class = "MAGE", type = 5}, --Blazing Barrier
+ [11426] = {cooldown = 25, duration = 60, specs = {64}, talent =false, charges = 1, class = "MAGE", type = 5}, --Ice Barrier
+ [190319] = {cooldown = 120, duration = 10, specs = {63}, talent =false, charges = 1, class = "MAGE", type = 1}, --Combustion
+ [55342] = {cooldown = 120, duration = 40, specs = {62,63,64}, talent =22445, charges = 1, class = "MAGE", type = 1}, --Mirror Image
+ [66] = {cooldown = 300, duration = 20, specs = {63,64}, talent =false, charges = 1, class = "MAGE", type = 2}, --Invisibility
+ [12472] = {cooldown = 180, duration = 20, specs = {64}, talent =false, charges = 1, class = "MAGE", type = 1}, --Icy Veins
+ [205021] = {cooldown = 78, duration = 5, specs = {64}, talent =22309, charges = 1, class = "MAGE", type = 1}, --Ray of Frost (talent)
+ [45438] = {cooldown = 240, duration = 10, specs = {62,63,64}, talent =false, charges = 1, class = "MAGE", type = 2}, --Ice Block
+ [235219] = {cooldown = 300, duration = false, specs = {64}, talent =false, charges = 1, class = "MAGE", type = 5}, --Cold Snap
+ [113724] = {cooldown = 45, duration = 10, specs = {62,63,64}, talent =22471, charges = 1, class = "MAGE", type = 5}, --Ring of Frost (talent)
+
+ --priest
+ -- 256 - Discipline
+ -- 257 - Holy
+ -- 258 - Shadow
+
+ [10060] = {cooldown = 120, duration = 20, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 1}, --Power Infusion
+ [34433] = {cooldown = 180, duration = 15, specs = {256,258}, talent =false, charges = 1, class = "PRIEST", type = 1, ignoredIfTalent = 21719}, --Shadowfiend
+ [200174] = {cooldown = 60, duration = 15, specs = {258}, talent =21719, charges = 1, class = "PRIEST", type = 1}, --Mindbender (talent)
+ [123040] = {cooldown = 60, duration = 12, specs = {256}, talent =22094, charges = 1, class = "PRIEST", type = 1}, --Mindbender (talent)
+ [33206] = {cooldown = 180, duration = 8, specs = {256}, talent =false, charges = 1, class = "PRIEST", type = 3}, --Pain Suppression
+ [62618] = {cooldown = 180, duration = 10, specs = {256}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Power Word: Barrier
+ [271466] = {cooldown = 180, duration = 10, specs = {256}, talent =21184, charges = 1, class = "PRIEST", type = 4}, --Luminous Barrier (talent)
+ [47536] = {cooldown = 90, duration = 10, specs = {256}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Rapture
+ [19236] = {cooldown = 90, duration = 10, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Desperate Prayer
+ [200183] = {cooldown = 120, duration = 20, specs = {257}, talent =21644, charges = 1, class = "PRIEST", type = 2}, --Apotheosis (talent)
+ [47788] = {cooldown = 180, duration = 10, specs = {257}, talent =false, charges = 1, class = "PRIEST", type = 3}, --Guardian Spirit
+ [64843] = {cooldown = 180, duration = 8, specs = {257}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Divine Hymn
+ [64901] = {cooldown = 300, duration = 6, specs = {257}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Symbol of Hope
+ [265202] = {cooldown = 720, duration = false, specs = {257}, talent =23145, charges = 1, class = "PRIEST", type = 4}, --Holy Word: Salvation (talent)
+ [109964] = {cooldown = 60, duration = 12, specs = {256}, talent =21184, charges = 1, class = "PRIEST", type = 4}, --Spirit Shell (talent)
+ [8122] = {cooldown = 60, duration = 8, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Psychic Scream
+ [193223] = {cooldown = 240, duration = 60, specs = {258}, talent =21979, charges = 1, class = "PRIEST", type = 1}, --Surrender to Madness (talent)
+ [47585] = {cooldown = 120, duration = 6, specs = {258}, talent =false, charges = 1, class = "PRIEST", type = 2}, --Dispersion
+ [15286] = {cooldown = 120, duration = 15, specs = {258}, talent =false, charges = 1, class = "PRIEST", type = 4}, --Vampiric Embrace
+ [64044] = {cooldown = 45, duration = 4, specs = {258}, talent =21752, charges = 1, class = "PRIEST", type = 5}, --Psychic Horror
+ [205369] = {cooldown = 30, duration = 6, specs = {258}, talent =23375, charges = 1, class = "PRIEST", type = 5}, --Mind Bomb
+ [228260] = {cooldown = 90, duration = 15, specs = {258}, talent =false, charges = 1, class = "PRIEST", type = 1}, --Void Erruption
+ [73325] = {cooldown = 90, duration = false, specs = {256,257,258}, talent =false, charges = 1, class = "PRIEST", type = 5}, --Leap of Faith
+
+ --rogue
+ -- 259 - Assasination
+ -- 260 - Outlaw
+ -- 261 - Subtlety
+
+ [79140] = {cooldown = 120, duration = 20, specs = {259}, talent =false, charges = 1, class = "ROGUE", type = 1}, --Vendetta
+ [1856] = {cooldown = 120, duration = 3, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Vanish
+ [5277] = {cooldown = 120, duration = 10, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Evasion
+ [31224] = {cooldown = 120, duration = 5, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Cloak of Shadows
+ [2094] = {cooldown = 120, duration = 60, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 5}, --Blind
+ [114018] = {cooldown = 360, duration = 15, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 5}, --Shroud of Concealment
+ [185311] = {cooldown = 30, duration = 15, specs = {259,260,261}, talent =false, charges = 1, class = "ROGUE", type = 5}, --Crimson Vial
+ [13750] = {cooldown = 180, duration = 20, specs = {260}, talent =false, charges = 1, class = "ROGUE", type = 1}, --Adrenaline Rush
+ [51690] = {cooldown = 120, duration = 2, specs = {260}, talent =23175, charges = 1, class = "ROGUE", type = 1}, --Killing Spree (talent)
+ [199754] = {cooldown = 120, duration = 10, specs = {260}, talent =false, charges = 1, class = "ROGUE", type = 2}, --Riposte
+ [343142] = {cooldown = 90, duration = 10, specs = {260}, talent =19250, charges = 1, class = "ROGUE", type = 5}, --Dreadblades
+ [121471] = {cooldown = 180, duration = 20, specs = {261}, talent =false, charges = 1, class = "ROGUE", type = 1}, --Shadow Blades
+}
+
+LIB_OPEN_RAID_COOLDOWNS_BY_SPEC = {};
+for spellID,spellData in pairs(LIB_OPEN_RAID_COOLDOWNS_INFO) do
+ for _,specID in ipairs(spellData.specs) do
+ LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specID] = LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specID] or {};
+ LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specID][spellID] = spellData.type;
+ end
+end
+
+-- DF Evoker
+LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[1467] = {};
+LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[1468] = {};
+
+--[=[
+Spell customizations:
+ Many times there's spells with the same name which does different effects
+ In here you find a list of spells which has its name changed to give more information to the player
+ you may add into the list any other parameter your addon uses declaring for example 'icon = ' or 'texcoord = ' etc.
+
+Implamentation Example:
+ if (LIB_OPEN_RAID_SPELL_CUSTOM_NAMES) then
+ for spellId, customTable in pairs(LIB_OPEN_RAID_SPELL_CUSTOM_NAMES) do
+ local name = customTable.name
+ if (name) then
+ MyCustomSpellTable[spellId] = name
+ end
+ end
+ end
+--]=]
+
+LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {} --default fallback
+
+if (GetBuildInfo():match ("%d") == "1") then
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {}
+
+elseif (GetBuildInfo():match ("%d") == "2") then
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {}
+
+elseif (GetBuildInfo():match ("%d") == "3") then
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {}
+
+else
+ LIB_OPEN_RAID_SPELL_CUSTOM_NAMES = {
+ [44461] = {name = GetSpellInfo(44461) .. " (" .. L["STRING_EXPLOSION"] .. ")"}, --Living Bomb (explosion)
+ [59638] = {name = GetSpellInfo(59638) .. " (" .. L["STRING_MIRROR_IMAGE"] .. ")"}, --Mirror Image's Frost Bolt (mage)
+ [88082] = {name = GetSpellInfo(88082) .. " (" .. L["STRING_MIRROR_IMAGE"] .. ")"}, --Mirror Image's Fireball (mage)
+ [94472] = {name = GetSpellInfo(94472) .. " (" .. L["STRING_CRITICAL_ONLY"] .. ")"}, --Atonement critical hit (priest)
+ [33778] = {name = GetSpellInfo(33778) .. " (" .. L["STRING_BLOOM"] .. ")"}, --lifebloom (bloom)
+ [121414] = {name = GetSpellInfo(121414) .. " (" .. L["STRING_GLAIVE"] .. " #1)"}, --glaive toss (hunter)
+ [120761] = {name = GetSpellInfo(120761) .. " (" .. L["STRING_GLAIVE"] .. " #2)"}, --glaive toss (hunter)
+ [212739] = {name = GetSpellInfo(212739) .. " (" .. L["STRING_MAINTARGET"] .. ")"}, --DK Epidemic
+ [215969] = {name = GetSpellInfo(215969) .. " (" .. L["STRING_AOE"] .. ")"}, --DK Epidemic
+ [70890] = {name = GetSpellInfo(70890) .. " (" .. L["STRING_SHADOW"] .. ")"}, --DK Scourge Strike
+ [55090] = {name = GetSpellInfo(55090) .. " (" .. L["STRING_PHYSICAL"] .. ")"}, --DK Scourge Strike
+ [49184] = {name = GetSpellInfo(49184) .. " (" .. L["STRING_MAINTARGET"] .. ")"}, --DK Howling Blast
+ [237680] = {name = GetSpellInfo(237680) .. " (" .. L["STRING_AOE"] .. ")"}, --DK Howling Blast
+ [228649] = {name = GetSpellInfo(228649) .. " (" .. L["STRING_PASSIVE"] .. ")"}, --Monk Mistweaver Blackout kick - Passive Teachings of the Monastery
+ [339538] = {name = GetSpellInfo(224266) .. " (" .. L["STRING_TEMPLAR_VINDCATION"] .. ")"}, --
+ [343355] = {name = GetSpellInfo(343355) .. " (" .. L["STRING_PROC"] .. ")"}, --shadow priest's void bold proc
+
+ --shadowlands trinkets
+ [345020] = {name = GetSpellInfo(345020) .. " (" .. L["STRING_TRINKET"] .. ")"},
+ }
+end
+
+--interrupt list using proxy from cooldown list
+--this list should be expansion and combatlog safe
+LIB_OPEN_RAID_SPELL_INTERRUPT = {
+ [6552] = LIB_OPEN_RAID_COOLDOWNS_INFO[6552], --Pummel
+
+ [2139] = LIB_OPEN_RAID_COOLDOWNS_INFO[2139], --Counterspell
+
+ [15487] = LIB_OPEN_RAID_COOLDOWNS_INFO[15487], --Silence (shadow) Last Word Talent to reduce cooldown in 15 seconds
+
+ [1766] = LIB_OPEN_RAID_COOLDOWNS_INFO[1766], --Kick
+
+ [96231] = LIB_OPEN_RAID_COOLDOWNS_INFO[96231], --Rebuke (protection and retribution)
+
+ [116705] = LIB_OPEN_RAID_COOLDOWNS_INFO[116705], --Spear Hand Strike (brewmaster and windwalker)
+
+ [57994] = LIB_OPEN_RAID_COOLDOWNS_INFO[57994], --Wind Shear
+
+ [47528] = LIB_OPEN_RAID_COOLDOWNS_INFO[47528], --Mind Freeze
+
+ [106839] = LIB_OPEN_RAID_COOLDOWNS_INFO[106839], --Skull Bash (feral, guardian)
+ [78675] = LIB_OPEN_RAID_COOLDOWNS_INFO[78675], --Solar Beam (balance)
+
+ [147362] = LIB_OPEN_RAID_COOLDOWNS_INFO[147362], --Counter Shot (beast mastery, marksmanship)
+ [187707] = LIB_OPEN_RAID_COOLDOWNS_INFO[187707], --Muzzle (survival)
+
+ [183752] = LIB_OPEN_RAID_COOLDOWNS_INFO[183752], --Disrupt
+
+ [19647] = LIB_OPEN_RAID_COOLDOWNS_INFO[19647], --Spell Lock (pet felhunter ability)
+ [89766] = LIB_OPEN_RAID_COOLDOWNS_INFO[89766], --Axe Toss (pet felguard ability)
+}
+
+--override list of spells with more than one effect, example: multiple types of polymorph
+LIB_OPEN_RAID_SPELL_DEFAULT_IDS = {
+ --stampeding roar (druid)
+ [106898] = 77761,
+ [77764] = 77761, --"Uncategorized" on wowhead, need to test if still exists
+ --spell lock (warlock pet)
+ [119910] = 19647, --"Uncategorized" on wowhead
+ [132409] = 19647, --"Uncategorized" on wowhead
+ --[115781] = 19647, --optical blast used by old talent observer, still a thing?
+ --[251523] = 19647, --wowhead list this spell as sibling spell
+ --[251922] = 19647, --wowhead list this spell as sibling spell
+ --axe toss (warlock pet)
+ [119914] = 89766, --"Uncategorized" on wowhead
+ [347008] = 89766, --"Uncategorized" on wowhead
+ --hex (shaman)
+ [210873] = 51514, --Compy
+ [211004] = 51514, --Spider
+ [211010] = 51514, --Snake
+ [211015] = 51514, --Cockroach
+ [269352] = 51514, --Skeletal Hatchling
+ [277778] = 51514, --Zandalari Tendonripper
+ [277784] = 51514, --Wicker Mongrel
+ [309328] = 51514, --Living Honey
+ --typhoon
+ --[61391] = 132469,
+ --metamorphosis
+ [191427] = 200166,
+ --187827 vengeance need to test these spellIds
+ --191427 havoc
+}
+--need to add mass dispell (32375)
+
+LIB_OPEN_RAID_DATABASE_LOADED = true
diff --git a/Libs/LibOpenRaid/lib.xml b/Libs/LibOpenRaid/lib.xml
index 170559692..af9c4f4c7 100644
--- a/Libs/LibOpenRaid/lib.xml
+++ b/Libs/LibOpenRaid/lib.xml
@@ -3,5 +3,7 @@
-
+
+
+
diff --git a/classes/class_instance.lua b/classes/class_instance.lua
index 013947f1a..06de13b7a 100644
--- a/classes/class_instance.lua
+++ b/classes/class_instance.lua
@@ -3480,7 +3480,7 @@ function _detalhes:envia_relatorio (linhas, custom)
local segmentTime = ""
if (combatObject) then
local combatTime = combatObject:GetCombatTime()
- segmentTime = _detalhes.gump:IntegerToTimer (combatTime or 0)
+ segmentTime = _detalhes.gump:IntegerToTimer(combatTime or 0)
end
--effective ou active time
diff --git a/core/parser.lua b/core/parser.lua
index bfa875387..e3b86ac20 100755
--- a/core/parser.lua
+++ b/core/parser.lua
@@ -4604,7 +4604,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
--soft switch
_detalhes.capture_current [capture_type] = on_off
if (time) then
- local schedule_id = math.random (1, 10000000)
+ local schedule_id = math.random(1, 10000000)
local new_schedule = _detalhes:ScheduleTimer("CaptureTimeout", time, {capture_type, schedule_id})
tinsert(_detalhes.capture_schedules, {new_schedule, schedule_id})
end
diff --git a/core/plugins_statusbar.lua b/core/plugins_statusbar.lua
index aeeb700ba..bac305d4b 100644
--- a/core/plugins_statusbar.lua
+++ b/core/plugins_statusbar.lua
@@ -477,7 +477,7 @@
local text = _detalhes.gump:NewLabel(frame, nil, "$parentText", "text", "0")
text:SetPoint("right", frame, "right", 0, 0)
text:SetJustifyH("right")
- _detalhes:SetFontSize (text, 9.8)
+ _detalhes:SetFontSize(text, 9.8)
frame:SetHook("OnEnter", OnEnter)
frame:SetHook("OnLeave", OnLeave)
@@ -567,7 +567,7 @@
end
child.options.textSize = value or 9
- child:SetFontSize (child.text, child.options.textSize)
+ child:SetFontSize(child.text, child.options.textSize)
elseif (option == "textface") then
@@ -830,8 +830,8 @@ do
-----------------------------------------------------------------------------------------------------------------------------
--now we insert all widgets created on widgets table
- table.insert (widgets, window.segmentOptionLabel)
- table.insert (widgets, window.segmentTypeDropdown)
+ table.insert(widgets, window.segmentOptionLabel)
+ table.insert(widgets, window.segmentTypeDropdown)
--after first call we replace this function with widgets table
PSegment.ExtraOptions = widgets
@@ -1017,8 +1017,8 @@ do
-----------------------------------------------------------------------------------------------------------------------------
--now we insert all widgets created on widgets table
- table.insert (widgets, window.ClockTypeLabel)
- table.insert (widgets, window.ClockTypeDropdown)
+ table.insert(widgets, window.ClockTypeLabel)
+ table.insert(widgets, window.ClockTypeDropdown)
--after first call we replace this function with widgets table
Clock.ExtraOptions = widgets
@@ -1431,8 +1431,8 @@ do
-----------------------------------------------------------------------------------------------------------------------------
--now we insert all widgets created on widgets table
- table.insert (widgets, window.TimeTypeLabel)
- table.insert (widgets, window.TimeTypeDropdown)
+ table.insert(widgets, window.TimeTypeLabel)
+ table.insert(widgets, window.TimeTypeDropdown)
--after first call we replace this function with widgets table
PTime.ExtraOptions = widgets
diff --git a/core/plugins_toolbar.lua b/core/plugins_toolbar.lua
index cae74fc14..16633abe7 100644
--- a/core/plugins_toolbar.lua
+++ b/core/plugins_toolbar.lua
@@ -17,7 +17,7 @@
--random name if nameless
if (not framename) then
- framename = "DetailsToolbarButton" .. math.random (1, 100000)
+ framename = "DetailsToolbarButton" .. math.random(1, 100000)
end
--create button from template
@@ -199,7 +199,7 @@ end
f.icon:SetTexture(button.__icon)
f.title:SetText(button.__name)
f.desc:SetText(plugin_object:GetPluginDescription())
- _detalhes:SetFontSize (f.desc, _detalhes.font_sizes.menus)
+ _detalhes:SetFontSize(f.desc, _detalhes.font_sizes.menus)
_detalhes:SetFontFace (f.desc, _detalhes.font_faces.menus)
--f.background:SetTexture(_detalhes.tooltip.menus_bg_texture)
diff --git a/core/util.lua b/core/util.lua
index 22908c47c..a978499ef 100644
--- a/core/util.lua
+++ b/core/util.lua
@@ -1024,7 +1024,7 @@ end
end
--font size
- function _detalhes:SetFontSize (fontString, ...)
+ function _detalhes:SetFontSize(fontString, ...)
local fonte, _, flags = fontString:GetFont()
fontString:SetFont (fonte, _math_max (...), flags)
end
diff --git a/frames/fw_mods.lua b/frames/fw_mods.lua
index 9ad5ce3b5..e7407adb6 100644
--- a/frames/fw_mods.lua
+++ b/frames/fw_mods.lua
@@ -24,7 +24,7 @@ function gump:NewLabel2 (parent, container, member, text, font, size, color)
newFontString:SetText(text)
if (size) then
- _detalhes:SetFontSize (newFontString, size)
+ _detalhes:SetFontSize(newFontString, size)
end
if (color) then
@@ -491,7 +491,7 @@ end
function gump:NewScrollBar2 (master, slave, x, y)
- local slider_gump = CreateFrame("Slider", master:GetName() and master:GetName() .. "SliderGump" or "DetailsSliderGump" .. math.random (1, 10000000), master)
+ local slider_gump = CreateFrame("Slider", master:GetName() and master:GetName() .. "SliderGump" or "DetailsSliderGump" .. math.random(1, 10000000), master)
slider_gump.scrollMax = 560 --default - tamanho da janela de fundo
-- ///// SLIDER /////
diff --git a/frames/window_currentdps.lua b/frames/window_currentdps.lua
index 15232d2d2..5303551bd 100644
--- a/frames/window_currentdps.lua
+++ b/frames/window_currentdps.lua
@@ -346,7 +346,7 @@ function Details:CreateCurrentDpsFrame(parent, name)
f:SetBackdropColor(unpack(_detalhes.realtime_dps_meter.frame_settings.backdrop_color))
f:EnableMouse(true)
f:SetMovable(true)
- f:SetClampedToScreen (true)
+ f:SetClampedToScreen(true)
f.movemeLabel = f:CreateFontString(nil, "overlay", "GameFontNormal")
f.movemeLabel:SetText("Move-Me")
@@ -467,7 +467,7 @@ function Details:CreateCurrentDpsFrame(parent, name)
local TitleString = f:CreateFontString(nil, "overlay", "GameFontNormal")
TitleString:SetPoint("top", f, "top", 0, -5)
TitleString:SetText("Details! Arena Real Time DPS Tracker")
- DF:SetFontSize (TitleString, 9)
+ DF:SetFontSize(TitleString, 9)
local TitleBackground = f:CreateTexture(nil, "artwork")
TitleBackground:SetTexture([[Interface\Tooltips\UI-Tooltip-Background]])
TitleBackground:SetVertexColor(.1, .1, .1, .9)
@@ -500,7 +500,7 @@ function Details:CreateCurrentDpsFrame(parent, name)
--labels for mythic dungeon / group party
local labelGroupDamage = f:CreateFontString(nil, "overlay", "GameFontNormal")
labelGroupDamage:SetText("Real Time Group DPS")
- DF:SetFontSize (labelGroupDamage, 14)
+ DF:SetFontSize(labelGroupDamage, 14)
DF:SetFontOutline (labelGroupDamage, "NONE")
local labelGroupDamage_DPS = f:CreateFontString(nil, "overlay", "GameFontNormal")
@@ -564,12 +564,12 @@ function Details:CreateCurrentDpsFrame(parent, name)
--update arena labels
DF:SetFontColor(labelPlayerTeam_DPS, _detalhes.realtime_dps_meter.font_color)
DF:SetFontFace (labelPlayerTeam_DPS, _detalhes.realtime_dps_meter.font_face)
- DF:SetFontSize (labelPlayerTeam_DPS, _detalhes.realtime_dps_meter.font_size)
+ DF:SetFontSize(labelPlayerTeam_DPS, _detalhes.realtime_dps_meter.font_size)
DF:SetFontOutline (labelPlayerTeam_DPS, _detalhes.realtime_dps_meter.font_shadow)
DF:SetFontColor(labelYellowTeam_DPS, _detalhes.realtime_dps_meter.font_color)
DF:SetFontFace (labelYellowTeam_DPS, _detalhes.realtime_dps_meter.font_face)
- DF:SetFontSize (labelYellowTeam_DPS, _detalhes.realtime_dps_meter.font_size)
+ DF:SetFontSize(labelYellowTeam_DPS, _detalhes.realtime_dps_meter.font_size)
DF:SetFontOutline (labelYellowTeam_DPS, _detalhes.realtime_dps_meter.font_shadow)
--wipe current data for arena
@@ -608,7 +608,7 @@ function Details:CreateCurrentDpsFrame(parent, name)
DF:SetFontColor(labelGroupDamage_DPS, _detalhes.realtime_dps_meter.font_color)
DF:SetFontFace (labelGroupDamage_DPS, _detalhes.realtime_dps_meter.font_face)
- DF:SetFontSize (labelGroupDamage_DPS, _detalhes.realtime_dps_meter.font_size)
+ DF:SetFontSize(labelGroupDamage_DPS, _detalhes.realtime_dps_meter.font_size)
DF:SetFontOutline (labelGroupDamage_DPS, _detalhes.realtime_dps_meter.font_shadow)
--wipe current data for mythic dungeon
diff --git a/frames/window_custom.lua b/frames/window_custom.lua
index 7b8ba64f1..51939f3b5 100644
--- a/frames/window_custom.lua
+++ b/frames/window_custom.lua
@@ -1248,7 +1248,7 @@
line:SetDrawLayer("background")
line:SetPoint("left", thisButton.button, "right", -110, -3)
- table.insert (actorsFrameButtons, #actorsFrameButtons+1, thisButton)
+ table.insert(actorsFrameButtons, #actorsFrameButtons+1, thisButton)
end
y = y + 20
@@ -1456,7 +1456,7 @@
line:SetDrawLayer("background")
line:SetPoint("left", thisButton.button, "right", -110, -3)
- table.insert (actorsFrameButtons, #actorsFrameButtons+1, thisButton)
+ table.insert(actorsFrameButtons, #actorsFrameButtons+1, thisButton)
end
y = y + 20
@@ -1617,7 +1617,7 @@
line:SetDrawLayer("background")
line:SetPoint("left", thisButton.button, "right", -60, -3)
- table.insert (spellsFrameButtons, #spellsFrameButtons+1, thisButton)
+ table.insert(spellsFrameButtons, #spellsFrameButtons+1, thisButton)
end
y = y + 20
diff --git a/frames/window_dump.lua b/frames/window_dump.lua
index ebc3a8c7b..f538cf414 100644
--- a/frames/window_dump.lua
+++ b/frames/window_dump.lua
@@ -21,7 +21,7 @@ function Details:Dump (...)
if (not DetailsDumpFrame) then
DetailsDumpFrame = DetailsFramework:CreateSimplePanel(_G.UIParent)
DetailsDumpFrame:SetSize(700, 600)
- DetailsDumpFrame:SetTitle ("Details! Dump Table [|cFFFF3333Ready Only|r]")
+ DetailsDumpFrame:SetTitle("Details! Dump Table [|cFFFF3333Ready Only|r]")
local text_editor = DetailsFramework:NewSpecialLuaEditorEntry (DetailsDumpFrame, 680, 560, "Editbox", "$parentEntry", true)
text_editor:SetPoint("topleft", DetailsDumpFrame, "topleft", 10, -30)
diff --git a/frames/window_eventtracker.lua b/frames/window_eventtracker.lua
index b101611a5..a59ee0682 100644
--- a/frames/window_eventtracker.lua
+++ b/frames/window_eventtracker.lua
@@ -253,7 +253,7 @@ function Details:CreateEventTrackerFrame(parent, name)
f:EnableMouse(true)
f:SetMovable(true)
f:SetResizable(true)
- f:SetClampedToScreen (true)
+ f:SetClampedToScreen(true)
local LibWindow = LibStub("LibWindow-1.1")
LibWindow.RegisterConfig(f, _detalhes.event_tracker.frame)
@@ -363,11 +363,11 @@ function Details:CreateEventTrackerFrame(parent, name)
righticon:SetPoint("right", line, "right", 0, 0)
local lefttext = statusbar:CreateFontString("$parentLeftText", "overlay", "GameFontNormal")
- DF:SetFontSize (lefttext, 9)
+ DF:SetFontSize(lefttext, 9)
lefttext:SetPoint("left", lefticon, "right", 2, 0)
local righttext = statusbar:CreateFontString("$parentRightText", "overlay", "GameFontNormal")
- DF:SetFontSize (righttext, 9)
+ DF:SetFontSize(righttext, 9)
righttext:SetPoint("right", righticon, "left", -2, 0)
lefttext:SetJustifyH("left")
@@ -620,13 +620,13 @@ function Details:CreateEventTrackerFrame(parent, name)
--update left text
DF:SetFontColor(line.LeftText, _detalhes.event_tracker.font_color)
DF:SetFontFace (line.LeftText, _detalhes.event_tracker.font_face)
- DF:SetFontSize (line.LeftText, _detalhes.event_tracker.font_size)
+ DF:SetFontSize(line.LeftText, _detalhes.event_tracker.font_size)
DF:SetFontOutline (line.LeftText, _detalhes.event_tracker.font_shadow)
--update right text
DF:SetFontColor(line.RightText, _detalhes.event_tracker.font_color)
DF:SetFontFace (line.RightText, _detalhes.event_tracker.font_face)
- DF:SetFontSize (line.RightText, _detalhes.event_tracker.font_size)
+ DF:SetFontSize(line.RightText, _detalhes.event_tracker.font_size)
DF:SetFontOutline (line.RightText, _detalhes.event_tracker.font_shadow)
--adjust where the line is anchored
diff --git a/frames/window_main.lua b/frames/window_main.lua
index 02a6f3810..4c2d64061 100644
--- a/frames/window_main.lua
+++ b/frames/window_main.lua
@@ -3309,7 +3309,7 @@ do
tooltip_anchor:SetSize(140, 20)
tooltip_anchor:SetAlpha(0)
tooltip_anchor:SetMovable(false)
- tooltip_anchor:SetClampedToScreen (true)
+ tooltip_anchor:SetClampedToScreen(true)
tooltip_anchor.locked = true
tooltip_anchor:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], edgeSize = 10, insets = {left = 1, right = 1, top = 2, bottom = 1}})
tooltip_anchor:SetBackdropColor(0, 0, 0, 1)
@@ -3592,7 +3592,7 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando)
-- main window config -------------------------------------------------------------------------------------------------------------------------------------------------
- baseframe:SetClampedToScreen (true)
+ baseframe:SetClampedToScreen(true)
baseframe:SetSize(Details.new_window_size.width, Details.new_window_size.height)
baseframe:SetPoint("center", UIParent)
@@ -6224,7 +6224,7 @@ function Details:GetSegmentInfo(index)
end
- local p = Details:GetBossPortrait (combat.is_boss.mapid, combat.is_boss.index)
+ local p = Details:GetBossPortrait(combat.is_boss.mapid, combat.is_boss.index)
if (p) then
portrait = p
end
@@ -6357,17 +6357,17 @@ local buildSegmentTooltip = function(self, deltaTime)
if (isMythicOverallSegment) then
--mostrar o tempo da dungeon
local totalTime = combat_time
- gameCooltip:AddLine(zoneName .. " +" .. mythicLevel .. " (" .. Loc["STRING_SEGMENTS_LIST_OVERALL"] .. ")", Details.gump:IntegerToTimer (endedAt - startedAt), 1, dungeon_color)
+ gameCooltip:AddLine(zoneName .. " +" .. mythicLevel .. " (" .. Loc["STRING_SEGMENTS_LIST_OVERALL"] .. ")", Details.gump:IntegerToTimer(endedAt - startedAt), 1, dungeon_color)
gameCooltip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 14, 10, 479/512, 510/512, 24/512, 51/512)
gameCooltip:AddLine(zoneName .. " +" .. mythicLevel .. " (" .. Loc["STRING_SEGMENTS_LIST_OVERALL"] .. ")", nil, 2, "white", "white")
else
if (segmentID == "trashoverall") then
local trashIcon = "|TInterface\\AddOns\\Details\\images\\icons:16:16:0:0:512:512:14:58:98:160|t"
- gameCooltip:AddLine(trashIcon .. "" .. (encounterName or Loc["STRING_UNKNOW"]) .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", Details.gump:IntegerToTimer (endedAt - startedAt), 1, dungeon_color, "gray")
+ gameCooltip:AddLine(trashIcon .. "" .. (encounterName or Loc["STRING_UNKNOW"]) .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", Details.gump:IntegerToTimer(endedAt - startedAt), 1, dungeon_color, "gray")
gameCooltip:AddLine((encounterName or Loc["STRING_UNKNOW"]) .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", nil, 2, "white", "white")
else
local skull = "|TInterface\\AddOns\\Details\\images\\icons:16:16:0:0:512:512:496:512:0:16|t"
- gameCooltip:AddLine(skull .. "" .. (encounterName or Loc["STRING_UNKNOW"]) .. " (" .. Loc["STRING_SEGMENTS_LIST_BOSS"] .. ")", Details.gump:IntegerToTimer (combat_time), 1, dungeon_color, "gray")
+ gameCooltip:AddLine(skull .. "" .. (encounterName or Loc["STRING_UNKNOW"]) .. " (" .. Loc["STRING_SEGMENTS_LIST_BOSS"] .. ")", Details.gump:IntegerToTimer(combat_time), 1, dungeon_color, "gray")
gameCooltip:AddLine((encounterName or Loc["STRING_UNKNOW"]) .. " (" .. Loc["STRING_SEGMENTS_LIST_BOSS"] .. ")", nil, 2, "white", "white")
end
gameCooltip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 14, 10, 479/512, 510/512, 24/512, 51/512)
@@ -6388,27 +6388,27 @@ local buildSegmentTooltip = function(self, deltaTime)
local minutos, segundos = floor(decorrido/60), floor(decorrido%60)
if (segmentID == "trashoverall") then
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer (decorrido), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer(decorrido), 2, "white", "white")
local totalRealTime = endedAt - startedAt
local wasted = totalRealTime - decorrido
--wasted time
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer (wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer(wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
gameCooltip:AddStatusBar(100, 2, 0, 0, 0, 0.35, false, false, "Skyline")
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer (endedAt - startedAt), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer(endedAt - startedAt), 2, "white", "white")
elseif (isMythicOverallSegment) then
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer (decorrido), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer(decorrido), 2, "white", "white")
local totalRealTime = endedAt - startedAt
local wasted = totalRealTime - decorrido
--wasted time
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer (wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer(wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
gameCooltip:AddStatusBar(100, 2, 0, 0, 0, 0.35, false, false, "Skyline")
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer (totalRealTime), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer(totalRealTime), 2, "white", "white")
else
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer (decorrido), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer(decorrido), 2, "white", "white")
end
if (thisCombat.is_boss) then
@@ -6422,12 +6422,12 @@ local buildSegmentTooltip = function(self, deltaTime)
--the combat has mythic dungeon tag but doesn't have a mythic dungeon table information
--so this is a trash cleanup segment
local trashInfo = thisCombat:GetMythicDungeonTrashInfo()
- gameCooltip:AddLine(Loc["STRING_SEGMENT_TRASH"] .. " (#" .. i .. ")", Details.gump:IntegerToTimer (thisCombat:GetCombatTime()), 1, dungeon_color_trash, "gray")
+ gameCooltip:AddLine(Loc["STRING_SEGMENT_TRASH"] .. " (#" .. i .. ")", Details.gump:IntegerToTimer(thisCombat:GetCombatTime()), 1, dungeon_color_trash, "gray")
gameCooltip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 14, 10, 479/512, 510/512, 24/512, 51/512, nil, nil, true)
--submenu
gameCooltip:AddLine(Loc["STRING_SEGMENT_TRASH"], nil, 2, "white", "white")
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer (thisCombat:GetCombatTime()), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer(thisCombat:GetCombatTime()), 2, "white", "white")
gameCooltip:AddLine("", "", 2, "white", "white")
gameCooltip:AddLine(Loc["STRING_SEGMENT_START"] .. ":", thisCombat.data_inicio, 2, "white", "white")
gameCooltip:AddLine(Loc["STRING_SEGMENT_END"] .. ":", thisCombat.data_fim or "in progress", 2, "white", "white")
@@ -6471,7 +6471,7 @@ local buildSegmentTooltip = function(self, deltaTime)
end
end
- local portrait = Details:GetBossPortrait (thisCombat.is_boss.mapid, thisCombat.is_boss.index) or thisCombat.is_boss.bossimage
+ local portrait = Details:GetBossPortrait(thisCombat.is_boss.mapid, thisCombat.is_boss.index) or thisCombat.is_boss.bossimage
if (portrait) then
gameCooltip:AddIcon(portrait, 2, "top", 128, 64)
else
@@ -6646,24 +6646,24 @@ local buildSegmentTooltip = function(self, deltaTime)
if (isMythicOverallSegment) then
--mostrar o tempo da dungeon
local totalTime = combat_time
- --CoolTip:AddLine(zoneName .. " +" .. mythicLevel .. " (overall)", _detalhes.gump:IntegerToTimer (totalTime), 1, dungeon_color)
- --CoolTip:AddLine(zoneName .. " +" .. mythicLevel .. " (overall)", _detalhes.gump:IntegerToTimer (endedAt - startedAt), 1, dungeon_color)
+ --CoolTip:AddLine(zoneName .. " +" .. mythicLevel .. " (overall)", _detalhes.gump:IntegerToTimer(totalTime), 1, dungeon_color)
+ --CoolTip:AddLine(zoneName .. " +" .. mythicLevel .. " (overall)", _detalhes.gump:IntegerToTimer(endedAt - startedAt), 1, dungeon_color)
--CoolTip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 14, 10, 479/512, 510/512, 24/512, 51/512)
gameCooltip:AddLine(zoneName .. " +" .. mythicLevel .. " (" .. Loc["STRING_SEGMENTS_LIST_OVERALL"] .. ")", nil, 2, "white", "white")
else
if (segmentID == "trashoverall") then
- --CoolTip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", _detalhes.gump:IntegerToTimer (combat_time), 1, dungeon_color, "gray")
- --CoolTip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", _detalhes.gump:IntegerToTimer (endedAt - startedAt), 1, dungeon_color, "gray")
+ --CoolTip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", _detalhes.gump:IntegerToTimer(combat_time), 1, dungeon_color, "gray")
+ --CoolTip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", _detalhes.gump:IntegerToTimer(endedAt - startedAt), 1, dungeon_color, "gray")
gameCooltip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_TRASH"] .. ")", nil, 2, "white", "white")
else
- --CoolTip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_BOSS"] .. ")", _detalhes.gump:IntegerToTimer (combat_time), 1, dungeon_color, "gray")
+ --CoolTip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_BOSS"] .. ")", _detalhes.gump:IntegerToTimer(combat_time), 1, dungeon_color, "gray")
gameCooltip:AddLine(encounterName .. " (" .. Loc["STRING_SEGMENTS_LIST_BOSS"] .. ")", nil, 2, "white", "white")
end
--CoolTip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 14, 10, 479/512, 510/512, 24/512, 51/512)
end
- local portrait = (thisCombat.is_boss and thisCombat.is_boss.bossimage) or Details:GetBossPortrait (nil, nil, encounterName, EJID)
+ local portrait = (thisCombat.is_boss and thisCombat.is_boss.bossimage) or Details:GetBossPortrait(nil, nil, encounterName, EJID)
if (portrait) then
gameCooltip:AddIcon(portrait, 2, "top", 128, 64, 0, 1, 0, 0.96)
end
@@ -6682,28 +6682,28 @@ local buildSegmentTooltip = function(self, deltaTime)
local totalRealTime = endedAt - startedAt
local wasted = totalRealTime - decorrido
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer (decorrido), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer(decorrido), 2, "white", "white")
--wasted time
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer (wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer(wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
gameCooltip:AddStatusBar (100, 2, 0, 0, 0, 0.35, false, false, "Skyline")
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer (endedAt - startedAt) .. " [|cFFFF3300" .. Details.gump:IntegerToTimer (totalRealTime - decorrido) .. "|r]", 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer(endedAt - startedAt) .. " [|cFFFF3300" .. Details.gump:IntegerToTimer(totalRealTime - decorrido) .. "|r]", 2, "white", "white")
elseif (isMythicOverallSegment) then
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer (decorrido), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TIMEINCOMBAT"] .. ":", Details.gump:IntegerToTimer(decorrido), 2, "white", "white")
local totalRealTime = endedAt - startedAt
local wasted = totalRealTime - decorrido
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer (totalRealTime), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_TOTALTIME"] .. ":", Details.gump:IntegerToTimer(totalRealTime), 2, "white", "white")
--wasted time
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer (wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_WASTED_TIME"] .. ":", "|cFFFF3300" .. Details.gump:IntegerToTimer(wasted) .. " (" .. floor(wasted / totalRealTime * 100) .. "%)|r", 2, "white", "white")
gameCooltip:AddStatusBar (100, 2, 0, 0, 0, 0.35, false, false, "Skyline")
else
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer (decorrido), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer(decorrido), 2, "white", "white")
end
if (thisCombat.is_boss) then
@@ -6719,13 +6719,13 @@ local buildSegmentTooltip = function(self, deltaTime)
local trashInfo = thisCombat:GetMythicDungeonTrashInfo()
- --CoolTip:AddLine(Loc["STRING_SEGMENT_TRASH"], _detalhes.gump:IntegerToTimer (thisCombat:GetCombatTime()), 1, dungeon_color_trash, "gray")
+ --CoolTip:AddLine(Loc["STRING_SEGMENT_TRASH"], _detalhes.gump:IntegerToTimer(thisCombat:GetCombatTime()), 1, dungeon_color_trash, "gray")
--CoolTip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 16, 12, 0.02734375, 0.11328125, 0.19140625, 0.3125, "red")
--CoolTip:AddIcon([[Interface\AddOns\Details\images\icons]], "main", "left", 14, 10, 479/512, 510/512, 24/512, 51/512, nil, nil, true)
--submenu
gameCooltip:AddLine(Loc["STRING_SEGMENT_TRASH"], nil, 2, "white", "white")
- gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer (thisCombat:GetCombatTime()), 2, "white", "white")
+ gameCooltip:AddLine(Loc["STRING_SEGMENTS_LIST_COMBATTIME"] .. ":", Details.gump:IntegerToTimer(thisCombat:GetCombatTime()), 2, "white", "white")
gameCooltip:AddLine("", "", 2, "white", "white")
gameCooltip:AddLine(Loc["STRING_SEGMENT_START"] .. ":", thisCombat.data_inicio, 2, "white", "white")
gameCooltip:AddLine(Loc["STRING_SEGMENT_END"] .. ":", thisCombat.data_fim or "in progress", 2, "white", "white")
@@ -6741,7 +6741,7 @@ local buildSegmentTooltip = function(self, deltaTime)
segment_info_added = true
elseif (Details.tabela_vigente.is_boss and Details.tabela_vigente.is_boss.name) then
- local portrait = Details:GetBossPortrait (Details.tabela_vigente.is_boss.mapid, Details.tabela_vigente.is_boss.index) or Details.tabela_vigente.is_boss.bossimage
+ local portrait = Details:GetBossPortrait(Details.tabela_vigente.is_boss.mapid, Details.tabela_vigente.is_boss.index) or Details.tabela_vigente.is_boss.bossimage
if (portrait) then
gameCooltip:AddIcon(portrait, 2, "top", 128, 64)
else
diff --git a/frames/window_options2_sections.lua b/frames/window_options2_sections.lua
index 12cf66973..d305b46b9 100644
--- a/frames/window_options2_sections.lua
+++ b/frames/window_options2_sections.lua
@@ -6377,7 +6377,7 @@ do
end
sectionFrame.ConsolidadeSpellsSwitch:SetPoint(startX, startY - 20)
- _detalhes:SetFontSize (sectionFrame.ConsolidadeSpellsLabel, 12)
+ _detalhes:SetFontSize(sectionFrame.ConsolidadeSpellsLabel, 12)
local sectionOptions = {
diff --git a/frames/window_playerbreakdown.lua b/frames/window_playerbreakdown.lua
index b872785f7..a746eb1f7 100644
--- a/frames/window_playerbreakdown.lua
+++ b/frames/window_playerbreakdown.lua
@@ -1747,12 +1747,12 @@ function gump:CriaJanelaInfo()
este_gump.topright_text1 = este_gump:CreateFontString(nil, "overlay", "GameFontNormal")
este_gump.topright_text1:SetPoint("bottomright", este_gump, "topright", -18 - (94 * (1-1)), -36)
este_gump.topright_text1:SetJustifyH("right")
- _detalhes.gump:SetFontSize (este_gump.topright_text1, 10)
+ _detalhes.gump:SetFontSize(este_gump.topright_text1, 10)
este_gump.topright_text2 = este_gump:CreateFontString(nil, "overlay", "GameFontNormal")
este_gump.topright_text2:SetPoint("bottomright", este_gump, "topright", -18 - (94 * (1-1)), -48)
este_gump.topright_text2:SetJustifyH("right")
- _detalhes.gump:SetFontSize (este_gump.topright_text2, 10)
+ _detalhes.gump:SetFontSize(este_gump.topright_text2, 10)
function este_gump:SetTopRightTexts (text1, text2, size, color, font)
if (text1) then
@@ -1767,8 +1767,8 @@ function gump:CriaJanelaInfo()
end
if (size and type(size) == "number") then
- _detalhes.gump:SetFontSize (este_gump.topright_text1, size)
- _detalhes.gump:SetFontSize (este_gump.topright_text2, size)
+ _detalhes.gump:SetFontSize(este_gump.topright_text1, size)
+ _detalhes.gump:SetFontSize(este_gump.topright_text2, size)
end
if (color) then
_detalhes.gump:SetFontColor(este_gump.topright_text1, color)
@@ -2762,10 +2762,10 @@ function gump:CriaJanelaInfo()
--local waButton = DF:CreateButton(line, wa_button, 18, 18)
--waButton:SetIcon ([[Interface\AddOns\WeakAuras\Media\Textures\icon]])
- DF:SetFontSize (name, text_size)
- DF:SetFontSize (uptime, text_size)
- DF:SetFontSize (apply, text_size)
- DF:SetFontSize (refresh, text_size)
+ DF:SetFontSize(name, text_size)
+ DF:SetFontSize(uptime, text_size)
+ DF:SetFontSize(apply, text_size)
+ DF:SetFontSize(refresh, text_size)
icon:SetPoint("left", line, "left", 2, 0)
name:SetPoint("left", icon, "right", 2, 0)
@@ -2810,7 +2810,7 @@ function gump:CriaJanelaInfo()
line.Icon:SetTexCoord(.1, .9, .1, .9)
line.Name:SetText(aura [2])
- line.Uptime:SetText(DF:IntegerToTimer (aura [3]) .. " (|cFFBBAAAA" .. floor(aura [6]) .. "%|r)")
+ line.Uptime:SetText(DF:IntegerToTimer(aura [3]) .. " (|cFFBBAAAA" .. floor(aura [6]) .. "%|r)")
line.Apply:SetText(aura [4])
line.Refresh:SetText(aura [5])
@@ -4777,7 +4777,7 @@ function gump:CriaJanelaInfo()
noPLayersToShow:SetSize(spell_compare_frame_width[2] - 10, spell_compare_frame_height)
noPLayersToShow:SetJustifyH("center")
noPLayersToShow:SetJustifyV ("center")
- _detalhes.gump:SetFontSize (noPLayersToShow, 14)
+ _detalhes.gump:SetFontSize(noPLayersToShow, 14)
_detalhes.gump:SetFontColor(noPLayersToShow, "gray")
frame2.NoPLayersToShow = noPLayersToShow
@@ -4841,7 +4841,7 @@ function gump:CriaJanelaInfo()
noPLayersToShow:SetSize(spell_compare_frame_width[2] - 10, spell_compare_frame_height)
noPLayersToShow:SetJustifyH("center")
noPLayersToShow:SetJustifyV ("center")
- _detalhes.gump:SetFontSize (noPLayersToShow, 14)
+ _detalhes.gump:SetFontSize(noPLayersToShow, 14)
_detalhes.gump:SetFontColor(noPLayersToShow, "gray")
frame3.NoPLayersToShow = noPLayersToShow
diff --git a/frames/window_profiler.lua b/frames/window_profiler.lua
index 0dad992bb..55a5f8bc1 100644
--- a/frames/window_profiler.lua
+++ b/frames/window_profiler.lua
@@ -42,7 +42,7 @@ function Details:OpenProfiler()
string_profiler:SetPoint("topleft", f, "topleft", 10, -130)
string_profiler:SetText(L["STRING_OPTIONS_PROFILE_SELECTEXISTING"])
string_profiler:SetWidth(230)
- Details:SetFontSize (string_profiler, 11)
+ Details:SetFontSize(string_profiler, 11)
Details:SetFontColor(string_profiler, "white")
--get the new profile name
diff --git a/frames/window_rowtexteditor.lua b/frames/window_rowtexteditor.lua
index d886bed7e..0126d92f2 100644
--- a/frames/window_rowtexteditor.lua
+++ b/frames/window_rowtexteditor.lua
@@ -36,7 +36,7 @@ local buttonTemplate = DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")
local textentry = DF:NewSpecialLuaEditorEntry (panel, scrollWidth, 555, "editbox", "$parentEntry")
textentry:SetPoint("topleft", panel, "topleft", 10, y)
DF:ApplyStandardBackdrop(textentry)
-DF:SetFontSize (textentry.editbox, 14)
+DF:SetFontSize(textentry.editbox, 14)
DF:ReskinSlider(textentry.scroll)
local arg1_button = DF:NewButton(panel, nil, "$parentButton1", nil, 80, 20, function() textentry.editbox:Insert ("{data1}") end, nil, nil, nil, string.format(Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "1"), 1)
diff --git a/frames/window_scrolldamage.lua b/frames/window_scrolldamage.lua
index 1c240a09f..5221e7fae 100644
--- a/frames/window_scrolldamage.lua
+++ b/frames/window_scrolldamage.lua
@@ -8,7 +8,7 @@ function Details:ScrollDamage()
if (not DetailsScrollDamage) then
DetailsScrollDamage = DetailsFramework:CreateSimplePanel(UIParent)
DetailsScrollDamage:SetSize(427 - 40 - 20 - 20, 505 - 150 + 20 + 40)
- DetailsScrollDamage:SetTitle ("Details! Scroll Damage (/details scroll)")
+ DetailsScrollDamage:SetTitle("Details! Scroll Damage (/details scroll)")
DetailsScrollDamage.Data = {}
DetailsScrollDamage:ClearAllPoints()
DetailsScrollDamage:SetPoint("left", UIParent, "left", 10, 0)
diff --git a/frames/window_statistics.lua b/frames/window_statistics.lua
index b31b20885..9e498fe2c 100644
--- a/frames/window_statistics.lua
+++ b/frames/window_statistics.lua
@@ -32,12 +32,12 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
if (not DetailsRaidHistoryWindow or not DetailsRaidHistoryWindow.Initialized) then
DetailsRaidHistoryWindow.Initialized = true
-
+
local f = DetailsRaidHistoryWindow or CreateFrame("frame", "DetailsRaidHistoryWindow", UIParent,"BackdropTemplate") --, "ButtonFrameTemplate"
f:SetPoint("center", UIParent, "center")
f:SetFrameStrata("HIGH")
f:SetToplevel (true)
-
+
f:SetMovable(true)
f:SetWidth(850)
f:SetHeight(500)
@@ -73,13 +73,13 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
f.bg1:SetHorizTile(true)
f.bg1:SetSize(790, 454)
f.bg1:SetAllPoints()
-
+
f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true})
f:SetBackdropColor(.5, .5, .5, .5)
f:SetBackdropBorderColor(0, 0, 0, 1)
local titlebar = DF:CreateTitleBar(f, "Details! " .. Loc ["STRING_STATISTICS"])
-
+
if (not Details:GetTutorialCVar("HISTORYPANEL_TUTORIAL")) then
local tutorialFrame = CreateFrame("frame", "$parentTutorialFrame",f,"BackdropTemplate")
tutorialFrame:SetPoint("center", f, "center")
@@ -88,19 +88,19 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
tutorialFrame:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16,
insets = {left = 0, right = 0, top = 0, bottom = 0}, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize=1})
tutorialFrame:SetBackdropColor(0, 0, 0, 1)
-
+
tutorialFrame.Title = DF:CreateLabel(tutorialFrame, "Statistics" , 12, "orange") --curse localization isn't adding new strings (and I deleted the old one)
tutorialFrame.Title:SetPoint("top", tutorialFrame, "top", 0, -5)
-
+
tutorialFrame.Desc = DF:CreateLabel(tutorialFrame, Loc ["STRING_GUILDDAMAGERANK_TUTORIAL_DESC"], 12)
tutorialFrame.Desc.width = 370
tutorialFrame.Desc:SetPoint("topleft", tutorialFrame, "topleft", 10, -45)
-
+
local closeButton = DF:CreateButton(tutorialFrame, function() Details:SetTutorialCVar ("HISTORYPANEL_TUTORIAL", true); tutorialFrame:Hide() end, 80, 20, Loc ["STRING_OPTIONS_CHART_CLOSE"])
closeButton:SetPoint("bottom", tutorialFrame, "bottom", 0, 10)
closeButton:SetTemplate(DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE"))
end
-
+
--background
local background = f:CreateTexture("$parentBackgroundImage", "border")
background:SetAlpha(0.3)
@@ -292,7 +292,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
local ReportButton = DF:CreateButton(f, f.BuildReport, 130, 20, Loc ["STRING_OPTIONS_REPORT_ANCHOR"]:gsub(":", ""), nil, nil, nil, "ReportButton", nil, nil, options_button_template, options_text_template)
ReportButton:SetPoint("right", GuildSyncButton, "left", -2, 0)
- ReportButton:SetIcon ([[Interface\GLUES\CharacterSelect\RestoreButton]], 12, 12, "overlay", {0.2, .8, 0.2, .8}, nil, 4)
+ ReportButton:SetIcon ([[Interface\GLUES\CharacterSelect\RestoreButton]], 12, 12, "overlay", {0.2, .8, 0.2, .8}, nil, 4)
--
function f:SetBackgroundImage (encounterId)
@@ -321,7 +321,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
if (button == "RightButton") then
self:Hide()
else
- self:StartMoving()
+ self:StartMoving()
self.isMoving = true
end
end)
@@ -531,15 +531,15 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select})
bossRepeated [encounterId] = true
end
-
+
if (not raidRepeated [instance.name]) then
tinsert(raidList, {value = instance.id, label = instance.name, icon = icon, onclick = onRaidSelect})
raidRepeated [instance.name] = true
end
-
+
end
end
-
+
for index, encounter in ipairs(encounterTable) do
local guild = encounter.guild
if (not guildRepeated [guild]) then
@@ -550,10 +550,10 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
end
end
end
-
+
table.sort (bossList, function(t1, t2) return t1.label < t2.label end)
-
-
+
+
diff_dropdown:Refresh()
diff_dropdown:Select(1, true)
boss_dropdown:Refresh()
@@ -562,7 +562,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
raid_dropdown:Refresh()
raid_dropdown:Select(1, true)
end
-
+
guild_dropdown:Refresh()
if (currentGuild) then
guild_dropdown:Select(currentGuild)
@@ -570,13 +570,13 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
guild_dropdown:Select(1, true)
end
end
-
+
function f.UpdateBossDropdown()
-
+
local raidSelected = DetailsRaidHistoryWindow.select_raid:GetValue()
local boss_repeated = {}
wipe (bossList)
-
+
for difficulty, encounterIdTable in pairs(db) do
if (type(difficulty) == "number") then
if (difficulty == 14) then
@@ -604,7 +604,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
end
end
- for encounterId, encounterTable in pairs(encounterIdTable) do
+ for encounterId, encounterTable in pairs(encounterIdTable) do
if (not boss_repeated [encounterId]) then
local encounter, instance = Details:GetBossEncounterDetailsFromEncounterId (_, encounterId)
if (encounter) then
@@ -621,7 +621,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
end
else
tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select})
- end
+ end
--]=]
tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select})
boss_repeated [encounterId] = true
@@ -631,65 +631,64 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
end
end
end
-
+
table.sort (bossList, function(t1, t2) return t1.label < t2.label end)
boss_dropdown:Refresh()
end
-
+
--anchors:
raid_string:SetPoint("topleft", f, "topleft", 10, -70)
raid_dropdown:SetPoint("topleft", f, "topleft", 10, -85)
-
+
boss_string:SetPoint("topleft", f, "topleft", 10, -110)
boss_dropdown:SetPoint("topleft", f, "topleft", 10, -125)
-
+
diff_string:SetPoint("topleft", f, "topleft", 10, -150)
diff_dropdown:SetPoint("topleft", f, "topleft", 10, -165)
-
+
role_string:SetPoint("topleft", f, "topleft", 10, -190)
role_dropdown:SetPoint("topleft", f, "topleft", 10, -205)
-
+
guild_string:SetPoint("topleft", f, "topleft", 10, -230)
guild_dropdown:SetPoint("topleft", f, "topleft", 10, -245)
-
+
player_string:SetPoint("topleft", f, "topleft", 10, -270)
player_dropdown:SetPoint("topleft", f, "topleft", 10, -285)
-
+
player2_string:SetPoint("topleft", f, "topleft", 10, -310)
player2_dropdown:SetPoint("topleft", f, "topleft", 10, -325)
player2_string:Hide()
player2_dropdown:Hide()
-
+
--refresh the window:
-
+
function f:BuildPlayerTable (playerName)
-
+
local encounterTable, guild, role = unpack(f.build_player2_data or {})
local data = {}
-
+
if (type(playerName) == "string" and string.len(playerName) > 1) then
for encounterIndex, encounter in ipairs(encounterTable) do
-
+
if (encounter.guild == guild) then
local roleTable = encounter [role]
-
+
local date = encounter.date
date = date:gsub(".*%s", "")
date = date:sub (1, -4)
local player = roleTable [playerName]
-
+
if (player) then
-
+
--tinsert(data, {text = date, value = player[1], data = player, fulldate = encounter.date, elapsed = encounter.elapsed})
tinsert(data, {text = date, value = player[1]/encounter.elapsed, utext = Details:ToK2 (player[1]/encounter.elapsed), data = player, fulldate = encounter.date, elapsed = encounter.elapsed})
end
end
end
-
+
--update graphic
if (not f.gframe) then
-
local onenter = function(self)
GameCooltip:Reset()
GameCooltip:SetType ("tooltip")
@@ -703,42 +702,43 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
GameCooltip:SetOwner(self.ball.tooltip_anchor)
GameCooltip:Show()
end
+
local onleave = function(self)
GameCooltip:Hide()
end
+
f.gframe = DF:CreateGFrame (f, 650, 400, 35, onenter, onleave, "gframe", "$parentGF")
f.gframe:SetPoint("topleft", f, "topleft", 190, -65)
end
-
+
f.gframe:Reset()
- f.gframe:UpdateLines (data)
-
+ f.gframe:UpdateLines(data)
end
end
-
+
local fillpanel = DF:NewFillPanel (f, {}, "$parentFP", "fillpanel", 710, 501, false, false, true, nil)
fillpanel:SetPoint("topleft", f, "topleft", 195, -65)
-
+
function f:BuildGuildRankTable (encounterTable, guild, role)
-
+
local header = {{name = "Player Name", type = "text"}, {name = "Per Second", type = "text"}, {name = "Total", type = "text"}, {name = "Length", type = "text"}, {name = "Item Level", type = "text"}, {name = "Date", type = "text"}}
local players = {}
local players_index = {}
-
+
local playerScore = {}
-
+
--get the best of each player
for encounterIndex, encounter in ipairs(encounterTable) do
if (encounter.guild == guild) then
local roleTable = encounter [role]
-
+
local date = encounter.date
date = date:gsub(".*%s", "")
date = date:sub (1, -4)
-
+
for playerName, playerTable in pairs(roleTable) do
-
+
if (not playerScore [playerName]) then
playerScore [playerName] = {
total = 0,
@@ -749,10 +749,10 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
length = 0,
}
end
-
+
local total = playerTable [1]
local dps = total / encounter.elapsed
-
+
--if (total > playerScore [playerName].total) then
if (dps > playerScore [playerName].ps) then
playerScore [playerName].total = total
@@ -765,7 +765,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
end
end
end
-
+
local sortTable = {}
for playerName, t in pairs(playerScore) do
local className = select(2, GetClassInfo (t.class or 0))
@@ -773,64 +773,64 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
if (className) then
classColor = RAID_CLASS_COLORS [className] and RAID_CLASS_COLORS [className].colorStr
end
-
+
local playerNameFormated = Details:GetOnlyName(playerName)
tinsert(sortTable, {
"|c" .. classColor .. playerNameFormated .. "|r",
Details:comma_value (t.ps),
Details:ToK2 (t.total),
- DF:IntegerToTimer (t.length),
+ DF:IntegerToTimer(t.length),
floor(t.ilvl),
t.date,
t.total,
t.ps,
})
end
-
+
table.sort (sortTable, function(a, b) return a[8] > b[8] end)
-
+
--add the number before the player name
for i = 1, #sortTable do
local t = sortTable [i]
t [1] = i .. ". " .. t [1]
end
-
+
fillpanel:SetFillFunction (function(index) return sortTable [index] end)
fillpanel:SetTotalFunction (function() return #sortTable end)
fillpanel:UpdateRows (header)
fillpanel:Refresh()
-
+
f.LatestResourceTable = sortTable
end
-
+
function f:BuildRaidTable (encounterTable, guild, role)
-
+
if (f.Mode == 2) then
f:BuildGuildRankTable (encounterTable, guild, role)
return
end
-
+
local header = {{name = "Player Name", type = "text"}} -- , width = 90
local players = {}
local players_index = {}
local player_class = {}
local amt_encounters = 0
-
+
for encounterIndex, encounter in ipairs(encounterTable) do
if (encounter.guild == guild) then
local roleTable = encounter [role]
-
+
local date = encounter.date
date = date:gsub(".*%s", "")
date = date:sub (1, -4)
amt_encounters = amt_encounters + 1
-
+
tinsert(header, {name = date, type = "text"})
-
+
for playerName, playerTable in pairs(roleTable) do
local index = players_index [playerName]
local player
-
+
if (not index) then
player = {playerName}
player_class [playerName] = playerTable [3]
@@ -840,7 +840,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
tinsert(player, Details:ToK2 (playerTable [1] / encounter.elapsed))
tinsert(players, player)
players_index [playerName] = #players
-
+
--print("not index", playerName, amt_encounters, date, 2, amt_encounters-1)
else
player = players [index]
@@ -849,14 +849,14 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
end
tinsert(player, Details:ToK2 (playerTable [1] / encounter.elapsed))
end
-
+
end
end
end
-
+
--sort alphabetical
table.sort (players, function(a, b) return a[1] < b[1] end)
-
+
for index, playerTable in ipairs(players) do
for i = #playerTable, amt_encounters do
tinsert(playerTable, "")
@@ -869,16 +869,16 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
playerTable [1] = "|c" .. classColor .. playerNameFormated .. "|r"
end
end
-
+
fillpanel:SetFillFunction (function(index) return players [index] end)
fillpanel:SetTotalFunction (function() return #players end)
-
+
fillpanel:UpdateRows (header)
-
+
fillpanel:Refresh()
fillpanel:SetPoint("topleft", f, "topleft", 200, -65)
end
-
+
function f:Refresh (player_name)
--build the main table
local diff = diff_dropdown.value
@@ -886,12 +886,12 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
local role = role_dropdown.value
local guild = guild_dropdown.value
local player = player_dropdown.value
-
+
local diffTable = db [diff]
-
+
f:SetBackgroundImage (boss)
--Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild, _player_base, _player_name)
-
+
if (diffTable) then
local encounters = diffTable [boss]
if (encounters) then
@@ -913,15 +913,15 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild
player2_dropdown:Show()
f.build_player2_data = {encounters, guild, role}
player2_dropdown:Refresh()
-
+
player_name = f.latest_player_selected or player_name
-
+
if (player_name) then
player2_dropdown:Select(player_name)
else
player2_dropdown:Select(1, true)
end
-
+
f:BuildPlayerTable (player2_dropdown.value)
end
else
diff --git a/frames/window_switch.lua b/frames/window_switch.lua
index c0021091f..f80b1f95b 100644
--- a/frames/window_switch.lua
+++ b/frames/window_switch.lua
@@ -523,7 +523,7 @@ function Details.switch:ShowMe(instancia)
function Details.switch:CreateSegmentBlock()
local s = gump:CreateLabel(Details.switch.frame)
- Details:SetFontSize (s, 9)
+ Details:SetFontSize(s, 9)
local index = #Details.switch.segments_blocks
if (index == 1) then --overall button
diff --git a/frames/window_welcome.lua b/frames/window_welcome.lua
index d1af96ea4..ecd0cba99 100644
--- a/frames/window_welcome.lua
+++ b/frames/window_welcome.lua
@@ -1387,11 +1387,11 @@ local window_openned_at = time()
local joe = current_combat[1]:PegarCombatente ("0x0000000000001", "Joe", 0x114, true)
joe.grupo = true
- joe.classe = actors_classes [math.random (1, #actors_classes)]
+ joe.classe = actors_classes [math.random(1, #actors_classes)]
joe.total = 7500000
joe.total_without_pet = 7500000
- joe.damage_taken = math.random (100000, 600000)
- joe.friendlyfire_total = math.random (100000, 600000)
+ joe.damage_taken = math.random(100000, 600000)
+ joe.friendlyfire_total = math.random(100000, 600000)
total_damage = total_damage + joe.total
@@ -1400,7 +1400,7 @@ local window_openned_at = time()
--joe_death.classe = joe.classe
--local esta_morte = {{true, 96648, 100000, time(), 0, "Lady Holenna"}, {true, 96648, 100000, time()-52, 100000, "Lady Holenna"}, {true, 96648, 100000, time()-86, 200000, "Lady Holenna"}, {true, 96648, 100000, time()-101, 300000, "Lady Holenna"}, {false, 55296, 400000, time()-54, 400000, "King Djoffrey"}, {true, 14185, 0, time()-59, 400000, "Lady Holenna"}, {false, 87351, 400000, time()-154, 400000, "King Djoffrey"}, {false, 56236, 400000, time()-158, 400000, "King Djoffrey"} }
--local t = {esta_morte, time(), joe.nome, joe.classe, 400000, "52m 12s", ["dead"] = true}
- --table.insert (current_combat.last_events_tables, #current_combat.last_events_tables+1, t)
+ --table.insert(current_combat.last_events_tables, #current_combat.last_events_tables+1, t)
rawset (_detalhes.spellcache, 300000, {"A Gun in Your Hand", 300000, [[Interface\ICONS\INV_Legendary_Gun]]})
rawset (_detalhes.spellcache, 300001, {"Shot", 300001, [[Interface\ICONS\INV_Archaeology_Ogres_HarGunn_Eye]]})
diff --git a/functions/boss.lua b/functions/boss.lua
index 8f9941233..026c3731e 100644
--- a/functions/boss.lua
+++ b/functions/boss.lua
@@ -281,7 +281,7 @@ do
end
--return the boss portrit
- function _detalhes:GetBossPortrait (mapid, bossindex, encounterName, ejID)
+ function _detalhes:GetBossPortrait(mapid, bossindex, encounterName, ejID)
if (mapid and bossindex) then
local haveIcon = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] and _detalhes.EncounterInformation [mapid].encounters [bossindex].portrait
if (haveIcon) then
@@ -317,8 +317,8 @@ do
if (displayInfo ~= 0 and abilityIcon == "") then
actors [title] = {model = displayInfo, info = description}
end
- table.insert (stack, siblingID)
- table.insert (stack, nextSectionID)
+ table.insert(stack, siblingID)
+ table.insert(stack, nextSectionID)
curSectionID = table.remove (stack)
until not curSectionID
diff --git a/functions/coach.lua b/functions/coach.lua
index 24333ebe4..aa3f80b9f 100644
--- a/functions/coach.lua
+++ b/functions/coach.lua
@@ -445,7 +445,7 @@ function Details.Coach.WelcomePanel()
if (not welcomePanel) then
welcomePanel = DetailsFramework:CreateSimplePanel(UIParent)
welcomePanel:SetSize(400, 280)
- welcomePanel:SetTitle ("Details! Coach")
+ welcomePanel:SetTitle("Details! Coach")
welcomePanel:ClearAllPoints()
welcomePanel:SetPoint("left", UIParent, "left", 10, 0)
welcomePanel:Hide()
diff --git a/functions/deathmenu.lua b/functions/deathmenu.lua
index 5dee383ee..4aebfab2d 100644
--- a/functions/deathmenu.lua
+++ b/functions/deathmenu.lua
@@ -283,7 +283,7 @@ function detailsOnDeathMenu.ShowPanel()
detailsOnDeathMenu.disableLabel.alpha = 0.5
detailsOnDeathMenu:SetHeight(detailsOnDeathMenu:GetHeight() + 10)
- if (math.random (1, 3) == 3) then
+ if (math.random(1, 3) == 3) then
Details:SetTutorialCVar ("DISABLE_ONDEATH_PANEL", true)
end
end
diff --git a/functions/deathrecap.lua b/functions/deathrecap.lua
index f117e2c11..0b79540f8 100644
--- a/functions/deathrecap.lua
+++ b/functions/deathrecap.lua
@@ -76,7 +76,7 @@ local create_deathrecap_line = function(parent, n)
Details.gump:SetFontColor(timeAt, "gray")
Details.gump:SetFontColor(sourceName, "yellow")
- Details.gump:SetFontSize (sourceName, 10)
+ Details.gump:SetFontSize(sourceName, 10)
--text alpha
timeAt:SetAlpha(textAlpha)
@@ -120,8 +120,8 @@ local create_deathrecap_line = function(parent, n)
backgroundTexture2:SetPoint("topright", backgroundTexture, "bottomright", 0, 0)
backgroundTexture2:SetHeight(32)
- Details.gump:SetFontSize (amount, 14)
- Details.gump:SetFontSize (lifePercent, 14)
+ Details.gump:SetFontSize(amount, 14)
+ Details.gump:SetFontSize(lifePercent, 14)
backgroundTexture:SetVertexColor(.2, .1, .1, .3)
end
diff --git a/functions/dungeon.lua b/functions/dungeon.lua
index 739474be0..15035a824 100644
--- a/functions/dungeon.lua
+++ b/functions/dungeon.lua
@@ -2,7 +2,7 @@
--local pointer to details object
local Details = _G._detalhes
-local debugmode = false --print debug lines
+local debugmode = true --print debug lines
local verbosemode = false --auto open the chart panel
local _
@@ -22,6 +22,8 @@ Should the chart data be volatile?
local mythicDungeonCharts = Details:CreateEventListener()
_G.DetailsMythicDungeonChartHandler = mythicDungeonCharts
+--DetailsMythicDungeonChartHandler.ChartTable.Players["playername"].ChartData = {max_value = 0}
+
function mythicDungeonCharts:Debug(...)
if (debugmode or verbosemode) then
print("Details! DungeonCharts: ", ...)
@@ -38,7 +40,7 @@ local addPlayerDamage = function(unitName, unitRealm)
end
--get the player data
- local playerData = mythicDungeonCharts.ChartTable.Players [CLName]
+ local playerData = mythicDungeonCharts.ChartTable.Players[CLName]
--if this is the first tick for the player, ignore the damage done on this tick
--this is done to prevent a tick tick with all the damage the player did on the previous segment
@@ -61,7 +63,7 @@ local addPlayerDamage = function(unitName, unitRealm)
LastCombatID = -1,
}
- mythicDungeonCharts.ChartTable.Players [CLName] = playerData
+ mythicDungeonCharts.ChartTable.Players[CLName] = playerData
bIsFirstTick = true
end
@@ -569,12 +571,12 @@ function mythicDungeonCharts.ShowChart()
bossWidget:SetPoint("bottomright", dungeonChartFrame.ChartFrame.Graphic, "bottomleft", xPosition, 0)
- bossWidget.TimeText:SetText(Details:GetFramework():IntegerToTimer (bossTable[1]))
+ bossWidget.TimeText:SetText(Details:GetFramework():IntegerToTimer(bossTable[1]))
if (bossTable[2].bossimage) then
bossWidget.AvatarTexture:SetTexture(bossTable[2].bossimage)
else
- local bossAvatar = Details:GetBossPortrait (nil, nil, bossTable[2].name, bossTable[2].ej_instance_id)
+ local bossAvatar = Details:GetBossPortrait(nil, nil, bossTable[2].name, bossTable[2].ej_instance_id)
bossWidget.AvatarTexture:SetTexture(bossAvatar)
end
end
@@ -616,15 +618,14 @@ function mythicDungeonCharts.ShowChart()
mythicDungeonCharts.PlayerGraphIndex = {}
for playerName, playerTable in pairs(charts) do
-
local chartData = playerTable.ChartData
local lineName = playerTable.Name
- classDuplicated [playerTable.Class] = (classDuplicated [playerTable.Class] or 0) + 1
+ classDuplicated[playerTable.Class] = (classDuplicated[playerTable.Class] or 0) + 1
local lineColor
if (playerTable.Class) then
- local classColor = mythicDungeonCharts.ClassColors [playerTable.Class .. classDuplicated [playerTable.Class]]
+ local classColor = mythicDungeonCharts.ClassColors[playerTable.Class .. classDuplicated[playerTable.Class]]
if (classColor) then
lineColor = {classColor.r, classColor.g, classColor.b}
else
@@ -639,12 +640,12 @@ function mythicDungeonCharts.ShowChart()
--lowess smooth
--chartData = mythicDungeonCharts.LowessSmoothing (chartData, 75)
- chartData = mythicDungeonCharts.Frame.ChartFrame:CalcLowessSmoothing (chartData, 75)
+ chartData = mythicDungeonCharts.Frame.ChartFrame:CalcLowessSmoothing(chartData, 75)
local maxValue = 0
for i = 1, #chartData do
if (chartData [i] > maxValue) then
- maxValue = chartData [i]
+ maxValue = chartData[i]
end
end
chartData.max_value = maxValue
@@ -653,24 +654,24 @@ function mythicDungeonCharts.ShowChart()
tinsert(mythicDungeonCharts.PlayerGraphIndex, playerName)
end
- mythicDungeonCharts.Frame.ChartFrame:RefreshBossTimeline (mythicDungeonCharts.ChartTable.BossDefeated, mythicDungeonCharts.ChartTable.ElapsedTime)
+ mythicDungeonCharts.Frame.ChartFrame:RefreshBossTimeline(mythicDungeonCharts.ChartTable.BossDefeated, mythicDungeonCharts.ChartTable.ElapsedTime)
--generate boss time table
local bossTimeTable = {}
for i, bossTable in ipairs(mythicDungeonCharts.ChartTable.BossDefeated) do
- local combatTime = bossTable [3] or math.random (10, 30)
+ local combatTime = bossTable [3] or math.random(10, 30)
tinsert(bossTimeTable, bossTable[1])
tinsert(bossTimeTable, bossTable[1] - combatTime)
end
- mythicDungeonCharts.Frame.ChartFrame:AddOverlay (bossTimeTable, {1, 1, 1, 0.05}, "Show Boss", "")
+ mythicDungeonCharts.Frame.ChartFrame:AddOverlay(bossTimeTable, {1, 1, 1, 0.05}, "Show Boss", "")
--local phrase = " Average Dps (under development)\npress Escape to hide, Details! Alpha Build." .. _detalhes.build_counter .. "." .. _detalhes.realversion
local phrase = "Details!: Average Dps for "
- mythicDungeonCharts.Frame.ChartFrame:SetTitle ("")
- Details:GetFramework():SetFontSize (mythicDungeonCharts.Frame.ChartFrame.chart_title, 14)
+ mythicDungeonCharts.Frame.ChartFrame:SetTitle("")
+ Details:GetFramework():SetFontSize(mythicDungeonCharts.Frame.ChartFrame.chart_title, 14)
mythicDungeonCharts.Frame.TitleText:SetText(mythicDungeonCharts.ChartTable.DungeonName and phrase .. mythicDungeonCharts.ChartTable.DungeonName or phrase)
@@ -890,8 +891,12 @@ mythicDungeonCharts.ClassColors = {
["DEMONHUNTER1"] = { r = 0.64, g = 0.19, b = 0.79, colorStr = "ffa330c9" },
["DEMONHUNTER2"] = { r = 0.44, g = 0.09, b = 0.59, colorStr = "ffa330c9" },
["DEMONHUNTER3"] = { r = 0.24, g = 0.09, b = 0.39, colorStr = "ffa330c9" },
+
+ ["EVOKER1"] = { r = 0.0, g = 1.00 , b = 0.59, colorStr = "FF205F45" },
+ ["EVOKER2"] = { r = 0.0, g = 0.8 , b = 0.39, colorStr = "FF126442" },
+ ["EVOKER3"] = { r = 0.0, g = 0.6 , b = 0.19, colorStr = "FF274B3C" },
};
if (debugmode) then
- C_Timer.After(1, mythicDungeonCharts.ShowChart)
+ --C_Timer.After(1, mythicDungeonCharts.ShowChart)
end
\ No newline at end of file
diff --git a/functions/slash.lua b/functions/slash.lua
index a1e98010e..41ba60cb3 100644
--- a/functions/slash.lua
+++ b/functions/slash.lua
@@ -515,7 +515,7 @@ function SlashCmdList.DETAILS (msg, editbox)
elseif (msg == "garbage") then
local a = {}
for i = 1, 10000 do
- a [i] = {math.random (50000)}
+ a [i] = {math.random(50000)}
end
table.wipe(a)
@@ -1303,8 +1303,8 @@ function SlashCmdList.DETAILS (msg, editbox)
a:SetScript("OnUpdate", function(self, deltaTime)
elapsedTime = elapsedTime + deltaTime
- --texture:SetSize(math.random (50, 300), math.random (50, 300))
- --local spec = allspecs [math.random (#allspecs)]
+ --texture:SetSize(math.random(50, 300), math.random(50, 300))
+ --local spec = allspecs [math.random(#allspecs)]
texture:SetTexture([[Interface\AddOns\Details\images\options_window]])
--texture:SetTexture([[Interface\Store\Store-Splash]])
--texture:SetTexture([[Interface\AddOns\Details\images\options_window]])
@@ -1428,7 +1428,7 @@ function SlashCmdList.DETAILS (msg, editbox)
end
newCombat.is_trash = false
- _detalhes:Msg("done merging, segments: " .. segmentsAdded .. ", total time: " .. DetailsFramework:IntegerToTimer (totalTime))
+ _detalhes:Msg("done merging, segments: " .. segmentsAdded .. ", total time: " .. DetailsFramework:IntegerToTimer(totalTime))
--[[ --mythic+ debug
--tag the segment as mythic overall segment
@@ -1760,7 +1760,7 @@ function Details:UpdateUserPanel (usersTable)
if (not Details.UserPanel) then
DetailsUserPanel = DetailsFramework:CreateSimplePanel(UIParent)
DetailsUserPanel:SetSize(707, 505)
- DetailsUserPanel:SetTitle ("Details! Version Check")
+ DetailsUserPanel:SetTitle("Details! Version Check")
DetailsUserPanel.Data = {}
DetailsUserPanel:ClearAllPoints()
DetailsUserPanel:SetPoint("left", UIParent, "left", 10, 0)
diff --git a/functions/testbars.lua b/functions/testbars.lua
index 62e46a4db..985828263 100644
--- a/functions/testbars.lua
+++ b/functions/testbars.lua
@@ -5,12 +5,12 @@ local Details = _G.Details
function Details:TestBarsUpdate()
local current_combat = Details:GetCombat("current")
for index, actor in current_combat[1]:ListActors() do
- actor.total = actor.total + (actor.total / 100 * math.random (1, 10))
- actor.total = actor.total - (actor.total / 100 * math.random (1, 10))
+ actor.total = actor.total + (actor.total / 100 * math.random(1, 10))
+ actor.total = actor.total - (actor.total / 100 * math.random(1, 10))
end
for index, actor in current_combat[2]:ListActors() do
- actor.total = actor.total + (actor.total / 100 * math.random (1, 10))
- actor.total = actor.total - (actor.total / 100 * math.random (1, 10))
+ actor.total = actor.total + (actor.total / 100 * math.random(1, 10))
+ actor.total = actor.total - (actor.total / 100 * math.random(1, 10))
end
current_combat[1].need_refresh = true
current_combat[2].need_refresh = true
@@ -181,7 +181,7 @@ function Details:CreateTestBars (alphabet, isArena)
for i = 1, 10 do
- local who = actors_name [math.random (1, #actors_name)]
+ local who = actors_name [math.random(1, #actors_name)]
local robot = current_combat[1]:PegarCombatente ("0x0000-0000-0000", who[1], 0x114, true)
robot.grupo = true
@@ -204,42 +204,42 @@ function Details:CreateTestBars (alphabet, isArena)
robot:SetSpecId(who[3])
elseif (robot.classe == "DEATHKNIGHT") then
local specs = {250, 251, 252}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "DRUID") then
local specs = {102, 103, 104, 105}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "HUNTER") then
local specs = {253, 254, 255}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "MAGE") then
local specs = {62, 63, 64}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "MONK") then
local specs = {268, 269, 270}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "PALADIN") then
local specs = {65, 66, 70}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "PRIEST") then
local specs = {256, 257, 258}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "ROGUE") then
local specs = {259, 260, 261}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "SHAMAN") then
local specs = {262, 263, 264}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "WARLOCK") then
local specs = {265, 266, 267}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "WARRIOR") then
local specs = {71, 72, 73}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
end
- robot.total = math.random (10000000, 60000000)
- robot.damage_taken = math.random (10000000, 60000000)
- robot.friendlyfire_total = math.random (10000000, 60000000)
+ robot.total = math.random(10000000, 60000000)
+ robot.damage_taken = math.random(10000000, 60000000)
+ robot.friendlyfire_total = math.random(10000000, 60000000)
total_damage = total_damage + robot.total
@@ -249,7 +249,7 @@ function Details:CreateTestBars (alphabet, isArena)
robot_death.classe = robot.classe
local esta_morte = {{true, 96648, 100000, time(), 0, "Lady Holenna"}, {true, 96648, 100000, time()-52, 100000, "Lady Holenna"}, {true, 96648, 100000, time()-86, 200000, "Lady Holenna"}, {true, 96648, 100000, time()-101, 300000, "Lady Holenna"}, {false, 55296, 400000, time()-54, 400000, "King Djoffrey"}, {true, 14185, 0, time()-59, 400000, "Lady Holenna"}, {false, 87351, 400000, time()-154, 400000, "King Djoffrey"}, {false, 56236, 400000, time()-158, 400000, "King Djoffrey"} }
local t = {esta_morte, time(), robot.nome, robot.classe, 400000, "52m 12s", ["dead"] = true}
- table.insert (current_combat.last_events_tables, #current_combat.last_events_tables+1, t)
+ table.insert(current_combat.last_events_tables, #current_combat.last_events_tables+1, t)
elseif (robot.nome == "Mr. President") then
rawset (Details.spellcache, 56488, {"Nuke", 56488, [[Interface\ICONS\inv_gizmo_supersappercharge]]})
@@ -257,7 +257,7 @@ function Details:CreateTestBars (alphabet, isArena)
robot.spells._ActorTable [56488].total = robot.total
end
- local who = actors_name [math.random (1, #actors_name)]
+ local who = actors_name [math.random(1, #actors_name)]
local robot = current_combat[2]:PegarCombatente ("0x0000-0000-0000", who[1], 0x114, true)
robot.grupo = true
robot.classe = who[2]
@@ -266,43 +266,43 @@ function Details:CreateTestBars (alphabet, isArena)
robot:SetSpecId(who[3])
elseif (robot.classe == "DEATHKNIGHT") then
local specs = {250, 251, 252}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "DRUID") then
local specs = {102, 103, 104, 105}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "HUNTER") then
local specs = {253, 254, 255}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "MAGE") then
local specs = {62, 63, 64}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "MONK") then
local specs = {268, 269, 270}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "PALADIN") then
local specs = {65, 66, 70}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "PRIEST") then
local specs = {256, 257, 258}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "ROGUE") then
local specs = {259, 260, 261}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "SHAMAN") then
local specs = {262, 263, 264}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "WARLOCK") then
local specs = {265, 266, 267}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
elseif (robot.classe == "WARRIOR") then
local specs = {71, 72, 73}
- robot:SetSpecId(specs [math.random (1, #specs)])
+ robot:SetSpecId(specs [math.random(1, #specs)])
end
- robot.total = math.random (10000000, 60000000)
- robot.totalover = math.random (10000000, 60000000)
- robot.totalabsorb = math.random (10000000, 60000000)
- robot.healing_taken = math.random (10000000, 60000000)
+ robot.total = math.random(10000000, 60000000)
+ robot.totalover = math.random(10000000, 60000000)
+ robot.totalabsorb = math.random(10000000, 60000000)
+ robot.healing_taken = math.random(10000000, 60000000)
total_heal = total_heal + robot.total
diff --git a/plugins/Details_EncounterDetails/Details_EncounterDetails.lua b/plugins/Details_EncounterDetails/Details_EncounterDetails.lua
index 942c20b88..a5fb2b1f6 100644
--- a/plugins/Details_EncounterDetails/Details_EncounterDetails.lua
+++ b/plugins/Details_EncounterDetails/Details_EncounterDetails.lua
@@ -400,7 +400,7 @@ local function CreatePluginFrames (data)
alert:SetFrameLevel(302)
alert.label = "Click here (on the skull icon) to bring the Encounter Breakdown panel"
alert.Text:SetSpacing (4)
- alert:SetClampedToScreen (true)
+ alert:SetClampedToScreen(true)
MicroButtonAlert_SetText (alert, alert.label)
alert:SetPoint("bottom", EncounterDetails.ToolbarButton, "top", 0, 22)
alert.CloseButton:HookScript ("OnClick", hook_AlertButtonCloseButton)
@@ -1300,8 +1300,8 @@ function EncounterDetails:OpenAndRefresh (_, segment)
local barra = container.barras [index]
if (not barra) then
barra = EncounterDetails:CreateRow (index, container, 1, 0, -1)
- _detalhes:SetFontSize (barra.lineText1, CONST_FONT_SIZE)
- _detalhes:SetFontSize (barra.lineText4, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText1, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText4, CONST_FONT_SIZE)
barra.TTT = "damage_taken" -- tool tip type --damage taken
barra.report_text = Loc ["STRING_PLUGIN_NAME"].."! "..Loc ["STRING_DAMAGE_TAKEN_REPORT"]
end
@@ -1520,8 +1520,8 @@ function EncounterDetails:OpenAndRefresh (_, segment)
barra = EncounterDetails:CreateRow (index, container, 1, 0, -1)
barra.TTT = "habilidades_inimigas" -- tool tip type --enemy abilities
barra.report_text = Loc ["STRING_PLUGIN_NAME"].."! " .. Loc ["STRING_ABILITY_DAMAGE"]
- _detalhes:SetFontSize (barra.lineText1, CONST_FONT_SIZE)
- _detalhes:SetFontSize (barra.lineText4, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText1, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText4, CONST_FONT_SIZE)
barra.t:SetVertexColor(1, .8, .8, .8)
end
@@ -1809,8 +1809,8 @@ function EncounterDetails:OpenAndRefresh (_, segment)
barra.lineText1:SetPoint("left", add_damage_done, "right", 2, 0)
barra.textura:SetStatusBarTexture(nil)
- _detalhes:SetFontSize (barra.lineText1, CONST_FONT_SIZE)
- _detalhes:SetFontSize (barra.lineText4, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText1, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText4, CONST_FONT_SIZE)
barra.TTT = "add"
add_damage_done.TTT = "add"
@@ -1896,8 +1896,8 @@ function EncounterDetails:OpenAndRefresh (_, segment)
local barra = container.barras [index]
if (not barra) then
barra = EncounterDetails:CreateRow (index, container, 3, 0, -6)
- _detalhes:SetFontSize (barra.lineText1, CONST_FONT_SIZE)
- _detalhes:SetFontSize (barra.lineText4, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText1, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText4, CONST_FONT_SIZE)
barra.TTT = "total_interrupt" -- tool tip type
barra.report_text = "Details! ".. Loc ["STRING_INTERRUPTS_OF"]
barra:SetWidth(155)
@@ -2010,8 +2010,8 @@ function EncounterDetails:OpenAndRefresh (_, segment)
local barra = container.barras [index]
if (not barra) then
barra = EncounterDetails:CreateRow (index, container, 3, 3, -6)
- _detalhes:SetFontSize (barra.lineText1, CONST_FONT_SIZE)
- _detalhes:SetFontSize (barra.lineText4, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText1, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText4, CONST_FONT_SIZE)
barra.TTT = "dispell" -- tool tip type
barra.report_text = "Details! ".. Loc ["STRING_DISPELLS_OF"]
barra:SetWidth(160)
@@ -2072,8 +2072,8 @@ function EncounterDetails:OpenAndRefresh (_, segment)
barra = EncounterDetails:CreateRow (index, container, 3, 0, 1)
barra.TTT = "morte" -- tool tip type
barra.report_text = "Details! " .. Loc ["STRING_DEAD_LOG"]
- _detalhes:SetFontSize (barra.lineText1, CONST_FONT_SIZE)
- _detalhes:SetFontSize (barra.lineText4, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText1, CONST_FONT_SIZE)
+ _detalhes:SetFontSize(barra.lineText4, CONST_FONT_SIZE)
barra:SetWidth(169)
local overlayTexture = barra:CreateTexture(nil, "overlay")
diff --git a/plugins/Details_EncounterDetails/frames.lua b/plugins/Details_EncounterDetails/frames.lua
index 6edbbc4c7..be1cdc557 100644
--- a/plugins/Details_EncounterDetails/frames.lua
+++ b/plugins/Details_EncounterDetails/frames.lua
@@ -956,7 +956,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails)
end
end
- table.insert (self.Data, 1, {Points=data;Color=color})
+ table.insert(self.Data, 1, {Points=data;Color=color})
self.NeedsUpdate=true
end
@@ -2381,13 +2381,13 @@ local ScrollCreateLine = function(self, index)
icon:SetSize(ScrollLineHeight, ScrollLineHeight)
local name = statusBar:CreateFontString("$parentName", "overlay", "GameFontNormal")
- _detalhes.gump:SetFontSize (name, 10)
+ _detalhes.gump:SetFontSize(name, 10)
icon:SetPoint("left", line, "left", 2, 0)
name:SetPoint("left", icon, "right", 2, 0)
_detalhes.gump:SetFontColor(name, "white")
local done = statusBar:CreateFontString("$parentDone", "overlay", "GameFontNormal")
- _detalhes.gump:SetFontSize (done, 10)
+ _detalhes.gump:SetFontSize(done, 10)
_detalhes.gump:SetFontColor(done, "white")
done:SetPoint("right", line, "right", -2, 0)
@@ -2457,9 +2457,9 @@ for i = 1, 10 do
icon:SetSize(16, 16)
icon:SetTexture([[Interface\AddOns\Details\images\clock]])
local name = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
- _detalhes.gump:SetFontSize (name, 10)
+ _detalhes.gump:SetFontSize(name, 10)
local done = line:CreateFontString("$parentDone", "overlay", "GameFontNormal")
- _detalhes.gump:SetFontSize (done, 10)
+ _detalhes.gump:SetFontSize(done, 10)
icon:SetPoint("left", line, "left", 2, 0)
name:SetPoint("left", icon, "right", 2, 0)
@@ -2485,11 +2485,11 @@ for i = 1, 20 do
line:SetBackdropColor(unpack(BGColorDefault))
line:Hide()
local name = line:CreateFontString("$parentName", "overlay", "GameFontNormal")
- _detalhes.gump:SetFontSize (name, 9)
+ _detalhes.gump:SetFontSize(name, 9)
name:SetPoint("left", line, "left", 2, 0)
local done = line:CreateFontString("$parentDone", "overlay", "GameFontNormal")
- _detalhes.gump:SetFontSize (done, 9)
+ _detalhes.gump:SetFontSize(done, 9)
done:SetPoint("right", line, "right", -2, 0)
line.name = name
@@ -2546,7 +2546,7 @@ function PhaseFrame:UpdatePhaseBars()
for index, phase in ipairs(timers) do
local timer = hash [phase]
PhaseFrame.PhasesBars [i].name:SetText("|cFFC0C0C0Phase:|r |cFFFFFFFF" .. phase)
- PhaseFrame.PhasesBars [i].done:SetText(_detalhes.gump:IntegerToTimer (timer))
+ PhaseFrame.PhasesBars [i].done:SetText(_detalhes.gump:IntegerToTimer(timer))
PhaseFrame.PhasesBars [i].phase = phase
PhaseFrame.PhasesBars [i]:Show()
i = i + 1
@@ -2571,12 +2571,12 @@ function PhaseFrame:UpdateSegmentCompareBars (phase)
if (segment ~= segmentTable) then
bar.name:SetText("Segment " .. i .. ":")
_detalhes.gump:SetFontColor(bar.name, "orange")
- bar.done:SetText(_detalhes.gump:IntegerToTimer (timers [phase]))
+ bar.done:SetText(_detalhes.gump:IntegerToTimer(timers [phase]))
_detalhes.gump:SetFontColor(bar.done, "orange")
else
bar.name:SetText("Segment " .. i .. ":")
_detalhes.gump:SetFontColor(bar.name, "white")
- bar.done:SetText(_detalhes.gump:IntegerToTimer (timers [phase]))
+ bar.done:SetText(_detalhes.gump:IntegerToTimer(timers [phase]))
_detalhes.gump:SetFontColor(bar.done, "white")
end
else
diff --git a/plugins/Details_Streamer/Details_Streamer.lua b/plugins/Details_Streamer/Details_Streamer.lua
index f7863103b..978e8a2c7 100644
--- a/plugins/Details_Streamer/Details_Streamer.lua
+++ b/plugins/Details_Streamer/Details_Streamer.lua
@@ -207,7 +207,7 @@ local function CreatePluginFrames()
SOF:EnableMouse(true)
SOF:SetMovable(true)
SOF:SetResizable(true)
- SOF:SetClampedToScreen (true)
+ SOF:SetClampedToScreen(true)
pcall(function()
if (DetailsFramework.IsDragonflight()) then
@@ -566,7 +566,7 @@ local function CreatePluginFrames()
end
--CastStart from the cast_send
- table.insert (StreamOverlay.battle_content, 1, {icon1, text1, color1, icon2, icon2coords, text2, color2, backgroundcolor, bordercolor, CastID = ID, CastStart = CastStart, startTime = startTime, endTime = endTime})
+ table.insert(StreamOverlay.battle_content, 1, {icon1, text1, color1, icon2, icon2coords, text2, color2, backgroundcolor, bordercolor, CastID = ID, CastStart = CastStart, startTime = startTime, endTime = endTime})
table.remove (StreamOverlay.battle_content, StreamOverlay.total_lines+1)
if (StreamOverlay.db.use_square_mode) then
@@ -681,8 +681,8 @@ local function CreatePluginFrames()
row:SetPoint("topright", SOF, "topright", 0, h)
end
- StreamOverlay:SetFontSize (row.text1, StreamOverlay.db.font_size)
- StreamOverlay:SetFontSize (row.text2, StreamOverlay.db.font_size)
+ StreamOverlay:SetFontSize(row.text1, StreamOverlay.db.font_size)
+ StreamOverlay:SetFontSize(row.text2, StreamOverlay.db.font_size)
local font = SharedMedia:Fetch ("font", StreamOverlay.db.font_face)
StreamOverlay:SetFontFace (row.text1, font)
@@ -1630,7 +1630,7 @@ function StreamOverlay:UpdateDpsHpsFrameConfig (PluginDisabled)
local db = StreamOverlay.db.per_second
- StreamOverlay:SetFontSize (screen_frame.text, db.size)
+ StreamOverlay:SetFontSize(screen_frame.text, db.size)
StreamOverlay:SetFontOutline (screen_frame.text, db.font_shadow)
screen_frame:SetScale(db.scale)
@@ -2458,7 +2458,7 @@ function StreamOverlay:OnEvent (_, event, ...)
icon:SetTexture([[Interface\MINIMAP\MOVIERECORDINGICON]])
local title = welcomeWindow:CreateFontString(nil, "overlay", "GameFontNormal")
title:SetText("Details!: Action Tracker (plugin)")
- StreamOverlay:SetFontSize (title, 20)
+ StreamOverlay:SetFontSize(title, 20)
local youtubeTwitchIcons = welcomeWindow:CreateTexture(nil, "overlay")
youtubeTwitchIcons:SetTexture([[Interface\AddOns\Details\images\icons2]])