This commit is contained in:
Tercio Jose
2022-09-13 20:10:37 -03:00
parent 10a55d2fbe
commit 74d6114546
15 changed files with 703 additions and 978 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
local dversion = 348
local dversion = 350
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary (major, minor)
+148 -204
View File
@@ -1495,18 +1495,17 @@ function DF:IconPick (callback, close_when_select, param1, param2)
DF.IconPickFrame = CreateFrame ("frame", "DetailsFrameworkIconPickFrame", UIParent, "BackdropTemplate")
tinsert (UISpecialFrames, "DetailsFrameworkIconPickFrame")
DF.IconPickFrame:SetFrameStrata ("TOOLTIP")
DF.IconPickFrame:SetFrameStrata ("FULLSCREEN")
DF.IconPickFrame:SetPoint ("center", UIParent, "center")
DF.IconPickFrame:SetWidth (350)
DF.IconPickFrame:SetHeight (277)
DF.IconPickFrame:SetWidth (416)
DF.IconPickFrame:SetHeight (350)
DF.IconPickFrame:EnableMouse (true)
DF.IconPickFrame:SetMovable (true)
DF:CreateTitleBar (DF.IconPickFrame, "Icon Picker")
DF:CreateTitleBar (DF.IconPickFrame, "Details! Framework Icon Picker")
DF.IconPickFrame:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
DF.IconPickFrame:SetBackdropBorderColor (0, 0, 0)
DF.IconPickFrame:SetBackdropColor (24/255, 24/255, 24/255, .8)
DF.IconPickFrame:SetFrameLevel (5000)
@@ -1559,12 +1558,12 @@ function DF:IconPick (callback, close_when_select, param1, param2)
if (DF.IconPickFrame.searching == "") then
DF.IconPickFrameScroll:Show()
DF.IconPickFrame.searching = nil
DF.IconPickFrame.updateFunc()
DF.IconPickFrameScroll.RefreshIcons()
else
DF.IconPickFrameScroll:Hide()
FauxScrollFrame_SetOffset (DF.IconPickFrame, 1)
DF.IconPickFrame.last_filter_index = 1
DF.IconPickFrame.updateFunc()
DF.IconPickFrameScroll.RefreshIcons()
end
end)
@@ -1611,51 +1610,46 @@ function DF:IconPick (callback, close_when_select, param1, param2)
DF.IconPickFrame.customIconAccept:SetPoint ("left", DF.IconPickFrame.customIconEntry, "right", 2, 0)
--fill with icons
local MACRO_ICON_FILENAMES = {}
local SPELLNAMES_CACHE = {}
local texturePathGetter = DF.IconPickFrame:CreateTexture(nil, "overlay")
DF.IconPickFrame:SetScript ("OnShow", function()
MACRO_ICON_FILENAMES [1] = "INV_MISC_QUESTIONMARK"
DF.IconPickFrame:SetScript("OnShow", function()
MACRO_ICON_FILENAMES[1] = "INV_MISC_QUESTIONMARK"
local index = 2
for i = 1, GetNumSpellTabs() do
local tab, tabTex, offset, numSpells, _ = GetSpellTabInfo (i)
local tab, tabTex, offset, numSpells, _ = GetSpellTabInfo(i)
offset = offset + 1
local tabEnd = offset + numSpells
for j = offset, tabEnd - 1 do
--to get spell info by slot, you have to pass in a pet argument
local spellType, ID = GetSpellBookItemInfo (j, "player")
local spellType, ID = GetSpellBookItemInfo(j, "player")
if (spellType ~= "FLYOUT") then
MACRO_ICON_FILENAMES [index] = GetSpellBookItemTexture (j, "player") or 0
SPELLNAMES_CACHE [index] = GetSpellInfo (ID)
MACRO_ICON_FILENAMES [index] = GetSpellBookItemTexture(j, "player") or 0
SPELLNAMES_CACHE [index] = GetSpellInfo(ID)
index = index + 1
elseif (spellType == "FLYOUT") then
local _, _, numSlots, isKnown = GetFlyoutInfo (ID)
local _, _, numSlots, isKnown = GetFlyoutInfo(ID)
if (isKnown and numSlots > 0) then
for k = 1, numSlots do
local spellID, overrideSpellID, isKnown = GetFlyoutSlotInfo (ID, k)
local spellID, overrideSpellID, isKnown = GetFlyoutSlotInfo(ID, k)
if (isKnown) then
MACRO_ICON_FILENAMES [index] = GetSpellTexture (spellID) or 0
SPELLNAMES_CACHE [index] = GetSpellInfo (spellID)
MACRO_ICON_FILENAMES [index] = GetSpellTexture(spellID) or 0
SPELLNAMES_CACHE [index] = GetSpellInfo(spellID)
index = index + 1
end
end
end
end
end
end
GetLooseMacroItemIcons (MACRO_ICON_FILENAMES)
GetLooseMacroIcons (MACRO_ICON_FILENAMES)
GetMacroIcons (MACRO_ICON_FILENAMES)
GetMacroItemIcons (MACRO_ICON_FILENAMES)
GetLooseMacroItemIcons(MACRO_ICON_FILENAMES)
GetLooseMacroIcons(MACRO_ICON_FILENAMES)
GetMacroIcons(MACRO_ICON_FILENAMES)
GetMacroItemIcons(MACRO_ICON_FILENAMES)
--reset the custom icon text entry
DF.IconPickFrame.customIconEntry:SetText ("")
@@ -1663,16 +1657,16 @@ function DF:IconPick (callback, close_when_select, param1, param2)
DF.IconPickFrame.search:SetText ("")
end)
DF.IconPickFrame:SetScript ("OnHide", function()
wipe (MACRO_ICON_FILENAMES)
wipe (SPELLNAMES_CACHE)
DF.IconPickFrame:SetScript("OnHide", function()
wipe(MACRO_ICON_FILENAMES)
wipe(SPELLNAMES_CACHE)
DF.IconPickFrame.preview:Hide()
collectgarbage()
end)
DF.IconPickFrame.buttons = {}
local OnClickFunction = function (self)
local onClickFunction = function(self)
DF:QuickDispatch (DF.IconPickFrame.callback, self.icon:GetTexture(), DF.IconPickFrame.param1, DF.IconPickFrame.param2)
@@ -1681,208 +1675,158 @@ function DF:IconPick (callback, close_when_select, param1, param2)
end
end
local onenter = function (self)
local onEnter = function (self)
DF.IconPickFrame.preview:SetPoint ("bottom", self, "top", 0, 2)
DF.IconPickFrame.preview.icon:SetTexture (self.icon:GetTexture())
DF.IconPickFrame.preview.icon:SetTexture(self.icon:GetTexture())
DF.IconPickFrame.preview:Show()
self.icon:SetBlendMode ("ADD")
end
local onleave = function (self)
local onLeave = function (self)
DF.IconPickFrame.preview:Hide()
self.icon:SetBlendMode ("BLEND")
end
local backdrop = {bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16,
insets = {left = 0, right = 0, top = 0, bottom = 0}, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}
for i = 0, 9 do
local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..(i+1), DF.IconPickFrame, "BackdropTemplate")
local image = newcheck:CreateTexture ("DetailsFrameworkIconPickFrameButton"..(i+1).."Icon", "overlay")
newcheck.icon = image
image:SetPoint ("topleft", newcheck, "topleft", 2, -2) image:SetPoint ("bottomright", newcheck, "bottomright", -2, 2)
newcheck:SetSize (30, 28)
newcheck:SetBackdrop (backdrop)
newcheck:SetScript ("OnClick", OnClickFunction)
newcheck.param1 = i+1
newcheck:SetPoint ("topleft", DF.IconPickFrame, "topleft", 12 + (i*30), -60)
newcheck:SetID (i+1)
DF.IconPickFrame.buttons [#DF.IconPickFrame.buttons+1] = newcheck
newcheck:SetScript ("OnEnter", onenter)
newcheck:SetScript ("OnLeave", onleave)
end
for i = 11, 20 do
local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..i, DF.IconPickFrame, "BackdropTemplate")
local image = newcheck:CreateTexture ("DetailsFrameworkIconPickFrameButton"..i.."Icon", "overlay")
newcheck.icon = image
image:SetPoint ("topleft", newcheck, "topleft", 2, -2) image:SetPoint ("bottomright", newcheck, "bottomright", -2, 2)
newcheck:SetSize (30, 28)
newcheck:SetBackdrop (backdrop)
newcheck:SetScript ("OnClick", OnClickFunction)
newcheck.param1 = i
newcheck:SetPoint ("topleft", "DetailsFrameworkIconPickFrameButton"..(i-10), "bottomleft", 0, -1)
newcheck:SetID (i)
DF.IconPickFrame.buttons [#DF.IconPickFrame.buttons+1] = newcheck
newcheck:SetScript ("OnEnter", onenter)
newcheck:SetScript ("OnLeave", onleave)
end
for i = 21, 30 do
local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..i, DF.IconPickFrame, "BackdropTemplate")
local image = newcheck:CreateTexture ("DetailsFrameworkIconPickFrameButton"..i.."Icon", "overlay")
newcheck.icon = image
image:SetPoint ("topleft", newcheck, "topleft", 2, -2) image:SetPoint ("bottomright", newcheck, "bottomright", -2, 2)
newcheck:SetSize (30, 28)
newcheck:SetBackdrop (backdrop)
newcheck:SetScript ("OnClick", OnClickFunction)
newcheck.param1 = i
newcheck:SetPoint ("topleft", "DetailsFrameworkIconPickFrameButton"..(i-10), "bottomleft", 0, -1)
newcheck:SetID (i)
DF.IconPickFrame.buttons [#DF.IconPickFrame.buttons+1] = newcheck
newcheck:SetScript ("OnEnter", onenter)
newcheck:SetScript ("OnLeave", onleave)
end
for i = 31, 40 do
local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..i, DF.IconPickFrame, "BackdropTemplate")
local image = newcheck:CreateTexture ("DetailsFrameworkIconPickFrameButton"..i.."Icon", "overlay")
newcheck.icon = image
image:SetPoint ("topleft", newcheck, "topleft", 2, -2) image:SetPoint ("bottomright", newcheck, "bottomright", -2, 2)
newcheck:SetSize (30, 28)
newcheck:SetBackdrop (backdrop)
newcheck:SetScript ("OnClick", OnClickFunction)
newcheck.param1 = i
newcheck:SetPoint ("topleft", "DetailsFrameworkIconPickFrameButton"..(i-10), "bottomleft", 0, -1)
newcheck:SetID (i)
DF.IconPickFrame.buttons [#DF.IconPickFrame.buttons+1] = newcheck
newcheck:SetScript ("OnEnter", onenter)
newcheck:SetScript ("OnLeave", onleave)
end
for i = 41, 50 do
local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..i, DF.IconPickFrame, "BackdropTemplate")
local image = newcheck:CreateTexture ("DetailsFrameworkIconPickFrameButton"..i.."Icon", "overlay")
newcheck.icon = image
image:SetPoint ("topleft", newcheck, "topleft", 2, -2) image:SetPoint ("bottomright", newcheck, "bottomright", -2, 2)
newcheck:SetSize (30, 28)
newcheck:SetBackdrop (backdrop)
newcheck:SetScript ("OnClick", OnClickFunction)
newcheck.param1 = i
newcheck:SetPoint ("topleft", "DetailsFrameworkIconPickFrameButton"..(i-10), "bottomleft", 0, -1)
newcheck:SetID (i)
DF.IconPickFrame.buttons [#DF.IconPickFrame.buttons+1] = newcheck
newcheck:SetScript ("OnEnter", onenter)
newcheck:SetScript ("OnLeave", onleave)
end
for i = 51, 60 do
local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..i, DF.IconPickFrame, "BackdropTemplate")
local image = newcheck:CreateTexture ("DetailsFrameworkIconPickFrameButton"..i.."Icon", "overlay")
newcheck.icon = image
image:SetPoint ("topleft", newcheck, "topleft", 2, -2) image:SetPoint ("bottomright", newcheck, "bottomright", -2, 2)
newcheck:SetSize (30, 28)
newcheck:SetBackdrop (backdrop)
newcheck:SetScript ("OnClick", OnClickFunction)
newcheck.param1 = i
newcheck:SetPoint ("topleft", "DetailsFrameworkIconPickFrameButton"..(i-10), "bottomleft", 0, -1)
newcheck:SetID (i)
DF.IconPickFrame.buttons [#DF.IconPickFrame.buttons+1] = newcheck
newcheck:SetScript ("OnEnter", onenter)
newcheck:SetScript ("OnLeave", onleave)
end
for _, button in ipairs(DF.IconPickFrame.buttons) do
button:SetBackdropBorderColor(0, 0, 0, 1)
end
local scroll = CreateFrame ("ScrollFrame", "DetailsFrameworkIconPickFrameScroll", DF.IconPickFrame, "ListScrollFrameTemplate", "BackdropTemplate")
DF:ReskinSlider (scroll)
local width = 412
local height = 248
local linesAmount = 6
local lineHeight = 40
local ChecksFrame_Update = function (self)
local numMacroIcons = #MACRO_ICON_FILENAMES
local macroPopupIcon, macroPopupButton
local macroPopupOffset = FauxScrollFrame_GetOffset (scroll)
local index
local texture
local filter
if (DF.IconPickFrame.searching) then
filter = string_lower (DF.IconPickFrame.searching)
end
local pool
local shown = 0
if (filter and filter ~= "") then
--do the filter
pool = {}
for i = 1, #SPELLNAMES_CACHE do
if (SPELLNAMES_CACHE [i] and SPELLNAMES_CACHE [i]:lower():find (filter)) then
pool [#pool+1] = MACRO_ICON_FILENAMES [i]
shown = shown + 1
local updateIconScroll = function(self, data, offset, totalLines)
for i = 1, totalLines do
local index = i + offset
local iconsInThisLine = data[index]
if (iconsInThisLine) then
local line = self:GetLine(i)
for o = 1, #iconsInThisLine do
local _, _, texture = GetSpellInfo(iconsInThisLine[o])
if (texture) then
line.buttons[o].icon:SetTexture(texture)
line.buttons[o].texture = texture
else
line.buttons[o].icon:SetTexture(iconsInThisLine[o])
line.buttons[o].texture = iconsInThisLine[o]
end
end
end
else
shown = nil
end
if (not pool) then
pool = MACRO_ICON_FILENAMES
end
for i = 1, 60 do
macroPopupIcon = _G ["DetailsFrameworkIconPickFrameButton"..i.."Icon"]
macroPopupButton = _G ["DetailsFrameworkIconPickFrameButton"..i]
index = (macroPopupOffset * 10) + i
texture = pool [index]
if ( index <= numMacroIcons and texture ) then
if (type (texture) == "number") then
macroPopupIcon:SetTexture (texture)
else
macroPopupIcon:SetTexture ("INTERFACE\\ICONS\\" .. texture)
end
macroPopupIcon:SetTexCoord (4/64, 60/64, 4/64, 60/64)
macroPopupButton.IconID = index
macroPopupButton:Show()
else
macroPopupButton:Hide()
end
end
pool = nil
-- Scrollbar stuff
FauxScrollFrame_Update (scroll, ceil ((shown or numMacroIcons) / 10) , 5, 20 )
end
DF.IconPickFrame.updateFunc = ChecksFrame_Update
scroll:SetPoint ("topleft", DF.IconPickFrame, "topleft", -18, -58)
scroll:SetWidth (330)
scroll:SetHeight (178)
scroll:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (scroll, offset, 20, ChecksFrame_Update) end)
scroll.update = ChecksFrame_Update
local lower = string.lower
local scroll = DF:CreateScrollBox(DF.IconPickFrame, "DetailsFrameworkIconPickFrameScroll", updateIconScroll, {}, width, height, linesAmount, lineHeight)
DF:ReskinSlider(scroll)
scroll:SetPoint ("topleft", DF.IconPickFrame, "topleft", 2, -58)
function scroll.RefreshIcons()
--build icon list
local iconList = {}
local numMacroIcons = #MACRO_ICON_FILENAMES
local filter
if (DF.IconPickFrame.searching) then
filter = lower(DF.IconPickFrame.searching)
end
if (filter and filter ~= "") then
local index
local currentTable
for i = 1, #SPELLNAMES_CACHE do
if (SPELLNAMES_CACHE[i] and SPELLNAMES_CACHE[i]:lower():find(filter)) then
if (not index) then
index = 1
local t = {}
iconList[#iconList+1] = t
currentTable = t
end
currentTable[index] = SPELLNAMES_CACHE[i]
index = index + 1
if (index == 11) then
index = nil
end
end
end
else
for i = 1, #SPELLNAMES_CACHE, 10 do
local t = {}
iconList[#iconList+1] = t
for o = i, i+9 do
if (SPELLNAMES_CACHE[o]) then
t[#t+1] = SPELLNAMES_CACHE[o]
end
end
end
for i = 1, #MACRO_ICON_FILENAMES, 10 do
local t = {}
iconList[#iconList+1] = t
for o = i, i+9 do
if (MACRO_ICON_FILENAMES[o]) then
t[#t+1] = MACRO_ICON_FILENAMES[o]
end
end
end
end
--set data and refresh
scroll:SetData(iconList)
scroll:Refresh()
end
--create the lines and button of the scroll box
for i = 1, linesAmount do
scroll:CreateLine(function(self, index)
local line = CreateFrame("button", "$parentLine" .. index, self, "BackdropTemplate")
line:SetPoint("topleft", self, "topleft", 1, -((index-1)*(lineHeight+1)) - 1)
line:SetSize(width - 2, lineHeight)
line:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
line:SetBackdropColor(.2, .2, .2, .5)
line.buttons = {}
local lastButton
for o = 1, 10 do
local button = CreateFrame("button", "$parentIcon" .. o, line)
if (not lastButton) then
button:SetPoint("left", line, "left", 0, 0)
else
button:SetPoint("left", lastButton, "right", 1, 0)
end
button:SetSize(lineHeight, lineHeight)
button.icon = button:CreateTexture("$parentIcon", "overlay")
button.icon:SetAllPoints()
button.icon:SetTexCoord(.1, .9, .1, .9)
line.buttons[o] = button
button:SetScript("OnEnter", onEnter)
button:SetScript("OnLeave", onLeave)
button:SetScript("OnClick", onClickFunction)
lastButton = button
end
return line
end)
end
DF.IconPickFrameScroll = scroll
DF.IconPickFrame:Hide()
end
DF.IconPickFrame.param1, DF.IconPickFrame.param2 = param1, param2
DF.IconPickFrame:Show()
DF.IconPickFrameScroll.update (DF.IconPickFrameScroll)
DF.IconPickFrame.callback = callback or DF.IconPickFrame.emptyFunction
DF.IconPickFrame.click_close = close_when_select
DF.IconPickFrameScroll.RefreshIcons()
end
+2 -1
View File
@@ -313,7 +313,8 @@ DF.TextEntryCounter = DF.TextEntryCounter or 1
self.editbox:SetBackdropColor (unpack (self.enabled_backdrop_color))
self.editbox:SetTextColor (unpack (self.enabled_text_color))
if (self.editbox.borderframe) then
self.editbox.borderframe:SetBackdropColor (unpack (self.editbox.borderframe.onleave_backdrop))
local r, g, b, a = DF:ParseColors(unpack(self.editbox.borderframe.onleave_backdrop))
self.editbox.borderframe:SetBackdropColor(r, g, b, a)
end
end
end
+88 -20
View File
@@ -11,6 +11,10 @@ end
local openRaidLib = LibStub:GetLibrary("LibOpenRaid-1.0")
local CONST_TALENT_VERSION_CLASSIC = 1
local CONST_TALENT_VERSION_LEGION = 4
local CONST_TALENT_VERSION_DRAGONFLIGHT = 5
local isTimewalkWoW = function()
local _, _, _, buildInfo = GetBuildInfo()
if (buildInfo < 40000) then
@@ -22,19 +26,79 @@ local IsDragonflight = function()
return select(4, GetBuildInfo()) >= 100000
end
--creates two tables, one with indexed talents and another with pairs values ([talentId] = true)
function openRaidLib.UnitInfoManager.GetPlayerTalentsAsPairsTable()
if (IsDragonflight()) then
return {}
function openRaidLib.GetTalentVersion()
local _, _, _, buildInfo = GetBuildInfo()
local gamePatch = buildInfo / 10000
if (gamePatch >= 1 and gamePatch <= 4) then --vanilla tbc wotlk cataclysm
return CONST_TALENT_VERSION_CLASSIC
end
if (gamePatch >= 7 and gamePatch <= 9) then --legion bfa shadowlands
return CONST_TALENT_VERSION_LEGION
end
if (gamePatch >= 10 and gamePatch <= 20) then --dragonflight
return CONST_TALENT_VERSION_DRAGONFLIGHT
end
end
local getDradonflightTalentsAsIndexTable = function()
local allTalents = {}
local configId = C_ClassTalents.GetActiveConfigID()
local configInfo = C_Traits.GetConfigInfo(configId)
for treeIndex, treeId in ipairs(configInfo.treeIDs) do
local treeNodes = C_Traits.GetTreeNodes(treeId)
for nodeIdIndex, treeNodeID in ipairs(treeNodes) do
local traitNodeInfo = C_Traits.GetNodeInfo(configId, treeNodeID)
if (traitNodeInfo) then
local activeEntry = traitNodeInfo.activeEntry
if (activeEntry) then
local entryId = activeEntry.entryID
local rank = activeEntry.rank
if (rank > 0) then
--get the entry info
local traitEntryInfo = C_Traits.GetEntryInfo(configId, entryId)
local definitionId = traitEntryInfo.definitionID
--definition info
local traitDefinitionInfo = C_Traits.GetDefinitionInfo(definitionId)
local spellId = traitDefinitionInfo.overriddenSpellID or traitDefinitionInfo.spellID
local spellName, _, spellTexture = GetSpellInfo(spellId)
if (spellName) then
allTalents[#allTalents+1] = spellId
end
end
end
end
end
end
return allTalents
end
--creates two tables, one with indexed talents and another with pairs values ([talentId] = true)
function openRaidLib.UnitInfoManager.GetPlayerTalentsAsPairsTable()
local talentsPairs = {}
for i = 1, 7 do
for o = 1, 3 do
local talentId, _, _, selected = GetTalentInfo(i, o, 1)
if (selected) then
talentsPairs[talentId] = true
break
local talentVersion = openRaidLib.GetTalentVersion()
if (talentVersion == CONST_TALENT_VERSION_DRAGONFLIGHT) then
local allTalents = getDradonflightTalentsAsIndexTable()
for i = 1, #allTalents do
local spellId = allTalents[i]
talentsPairs[spellId] = true
end
elseif (talentVersion == CONST_TALENT_VERSION_LEGION) then
for i = 1, 7 do
for o = 1, 3 do
local talentId, _, _, selected = GetTalentInfo(i, o, 1)
if (selected) then
talentsPairs[talentId] = true
break
end
end
end
end
@@ -43,17 +107,21 @@ function openRaidLib.UnitInfoManager.GetPlayerTalentsAsPairsTable()
end
function openRaidLib.UnitInfoManager.GetPlayerTalents()
if (IsDragonflight()) then
return {}
end
local talents = {}
local talentVersion = openRaidLib.GetTalentVersion()
local talents = {0, 0, 0, 0, 0, 0, 0}
for talentTier = 1, 7 do
for talentColumn = 1, 3 do
local talentId, name, texture, selected, available = GetTalentInfo(talentTier, talentColumn, 1)
if (selected) then
talents[talentTier] = talentId
break
if (talentVersion == CONST_TALENT_VERSION_DRAGONFLIGHT) then
talents = getDradonflightTalentsAsIndexTable()
elseif (talentVersion == CONST_TALENT_VERSION_LEGION) then
talents = {0, 0, 0, 0, 0, 0, 0}
for talentTier = 1, 7 do
for talentColumn = 1, 3 do
local talentId, name, texture, selected, available = GetTalentInfo(talentTier, talentColumn, 1)
if (selected) then
talents[talentTier] = talentId
break
end
end
end
end
+40 -29
View File
@@ -15,6 +15,10 @@ Code Rules:
- Public callbacks are callbacks registered by an external addon.
Change Log:
- added dragonflight talents support
- ensure to register events after 'PLAYER_ENTERING_WORLD' has triggered
- added openRaidLib.RequestCooldownInfo(spellId)
- added openRaidLib.AddCooldownFilter(filterName, spells)
- if Ace Comm is installed, use it
- added "KeystoneWipe" callback
- finished keystone info, see docs
@@ -50,7 +54,7 @@ if (WOW_PROJECT_ID ~= WOW_PROJECT_MAINLINE and not IsDragonflight()) then
end
local major = "LibOpenRaid-1.0"
local CONST_LIB_VERSION = 48
local CONST_LIB_VERSION = 50
LIB_OPEN_RAID_CAN_LOAD = false
--declae the library within the LibStub
@@ -564,8 +568,11 @@ LIB_OPEN_RAID_CAN_LOAD = false
end,
["PLAYER_ENTERING_WORLD"] = function(...)
--has the selected character just loaded?
if (not openRaidLib.firstEnteringWorld) then
--player logon
--register events
openRaidLib.OnEnterWorldRegisterEvents()
if (IsInGroup()) then
openRaidLib.RequestAllData()
end
@@ -604,7 +611,7 @@ LIB_OPEN_RAID_CAN_LOAD = false
openRaidLib.firstEnteringWorld = true
end
openRaidLib.internalCallback.TriggerEvent("onEnterWorld")
end,
@@ -660,7 +667,7 @@ LIB_OPEN_RAID_CAN_LOAD = false
["UNIT_PET"] = function(unitId)
if (UnitIsUnit(unitId, "player")) then
openRaidLib.Schedules.NewUniqueTimer(0.5, function() openRaidLib.internalCallback.TriggerEvent("playerPetChange") end, "mainControl", "petStatus_Schedule")
openRaidLib.Schedules.NewUniqueTimer(1.1, function() openRaidLib.internalCallback.TriggerEvent("playerPetChange") end, "mainControl", "petStatus_Schedule")
--if the pet is alive, register to know when it dies
if (UnitExists("pet") and UnitHealth("pet") >= 1) then
eventFrame:RegisterUnitEvent("UNIT_FLAGS", "pet")
@@ -682,33 +689,36 @@ LIB_OPEN_RAID_CAN_LOAD = false
}
openRaidLib.eventFunctions = eventFunctions
eventFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
eventFrame:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", "player", "pet")
eventFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
eventFrame:RegisterEvent("PLAYER_REGEN_DISABLED")
eventFrame:RegisterEvent("PLAYER_REGEN_ENABLED")
eventFrame:RegisterEvent("UPDATE_INVENTORY_DURABILITY")
eventFrame:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
eventFrame:RegisterEvent("UNIT_PET")
eventFrame:RegisterEvent("PLAYER_DEAD")
eventFrame:RegisterEvent("PLAYER_ALIVE")
eventFrame:RegisterEvent("PLAYER_UNGHOST")
if (checkClientVersion("retail")) then
eventFrame:RegisterEvent("PLAYER_TALENT_UPDATE")
eventFrame:RegisterEvent("PLAYER_PVP_TALENT_UPDATE")
eventFrame:RegisterEvent("ENCOUNTER_END")
eventFrame:RegisterEvent("CHALLENGE_MODE_START")
eventFrame:RegisterEvent("CHALLENGE_MODE_COMPLETED")
--eventFrame:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
end
eventFrame:SetScript("OnEvent", function(self, event, ...)
eventFunctions[event](...)
end)
--run when PLAYER_ENTERING_WORLD triggers, this avoid any attempt of getting information without the game has completed the load process
function openRaidLib.OnEnterWorldRegisterEvents()
eventFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
eventFrame:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", "player", "pet")
eventFrame:RegisterEvent("PLAYER_REGEN_DISABLED")
eventFrame:RegisterEvent("PLAYER_REGEN_ENABLED")
eventFrame:RegisterEvent("UPDATE_INVENTORY_DURABILITY")
eventFrame:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
eventFrame:RegisterEvent("UNIT_PET")
eventFrame:RegisterEvent("PLAYER_DEAD")
eventFrame:RegisterEvent("PLAYER_ALIVE")
eventFrame:RegisterEvent("PLAYER_UNGHOST")
if (checkClientVersion("retail")) then
eventFrame:RegisterEvent("PLAYER_TALENT_UPDATE")
eventFrame:RegisterEvent("PLAYER_PVP_TALENT_UPDATE")
eventFrame:RegisterEvent("ENCOUNTER_END")
eventFrame:RegisterEvent("CHALLENGE_MODE_START")
eventFrame:RegisterEvent("CHALLENGE_MODE_COMPLETED")
--eventFrame:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
end
end
--------------------------------------------------------------------------------------------------------------------------------
--> ~main ~control
@@ -1048,11 +1058,11 @@ function openRaidLib.UnitInfoManager.GetPlayerFullInfo()
end
playerInfo[1] = specId
--renown
--shadowlands-renown
local renown = C_CovenantSanctumUI.GetRenownLevel() or 1
playerInfo[2] = renown
--covenant
--shadowlands-covenant
local covenant = C_Covenants.GetActiveCovenantID()
playerInfo[3] = covenant
@@ -1060,13 +1070,13 @@ function openRaidLib.UnitInfoManager.GetPlayerFullInfo()
local talents = openRaidLib.UnitInfoManager.GetPlayerTalents()
playerInfo[4] = talents
--conduits
--shadowlands-conduits
local conduits = openRaidLib.UnitInfoManager.GetPlayerConduits()
playerInfo[5] = conduits
--pvp talents
local pvpTalents = openRaidLib.UnitInfoManager.GetPlayerPvPTalents()
playerInfo[6] = pvpTalents
playerInfo[6] = pvpTalents
return playerInfo
end
@@ -1804,6 +1814,7 @@ openRaidLib.commHandler.RegisterComm(CONST_COMM_COOLDOWNCHANGES_PREFIX, openRaid
function openRaidLib.CooldownManager.CheckForSpellsAdeedOrRemoved()
local playerName = UnitName("player")
local currentCooldowns = openRaidLib.CooldownManager.UnitData[playerName]
local _, newCooldownList = openRaidLib.CooldownManager.GetPlayerCooldownList()
local spellsAdded, spellsRemoved = {}, {}
+264 -690
View File
@@ -211,7 +211,14 @@ LIB_OPEN_RAID_WEAPON_ENCHANT_IDS = {
[5401] = true, --windfury
}
LIB_OPEN_RAID_COOLDOWNS_BY_SPEC = {
--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
@@ -219,501 +226,7 @@ LIB_OPEN_RAID_COOLDOWNS_BY_SPEC = {
-- 5 personal utility cooldown
-- 6 interrupt
--Shadowlands 9.0.2 revision by Juliana Maison
--> MAGE
--arcane
[62] = {
[12042] = 1, --Arcane Power
[55342] = 1, --Mirror Image
[45438] = 2, --Ice Block
[12051] = 5, --Evocation
[110960] = 5, --Greater Invisibility
[235450] = 5, --Prismatic Barrier
[2139] = 6, --Counterspell (interrupt)
},
--fire
[63] = {
[190319] = 1, --Combustion
[55342] = 1, --Mirror Image
[45438] = 2, --Ice Block
[66] = 5, --Invisibility
[235313] = 5, --Blazing Barrier
[2139] = 6, --Counterspell (interrupt)
},
--frost
[64] = {
[12472] = 1, --Icy Veins
[205021] = 1, --Ray of Frost (talent)
[55342] = 1, --Mirror Image
[45438] = 2, --Ice Block
[66] = 5, --Invisibility
[235219] = 5, --Cold Snap
[11426] = 5, --Ice Barrier
[113724] = 5, --Ring of Frost (talent)
[2139] = 6, --Counterspell (interrupt)
},
--> PRIEST
--discipline
[256] = {
[10060] = 1, --Power Infusion
[34433] = 1, --Shadowfiend
[123040] = 1, --Mindbender
[33206] = 3, --Pain Suppression
[62618] = 4, --Power Word: Barrier
[271466] = 4, --Luminous Barrier (talent)
[109964] = 4, --Spirit Shell (talent)
[47536] = 5, --Rapture
[19236] = 5, --Desperate Prayer
[8122] = 5, --Psychic Scream
},
--holy
[257] = {
[10060] = 1, --Power Infusion
[200183] = 2, --Apotheosis
[47788] = 3, --Guardian Spirit
[64843] = 4, --Divine Hymn
[64901] = 4, --Symbol of Hope
[265202] = 4, --Holy Word: Salvation (talent)
--[88625] = 5, --Holy Word: Chastise
--[34861] = 5, --Holy Word: Sanctify
[19236] = 5, --Desperate Prayer
[8122] = 5, --Psychic Scream
},
--shadow priest
[258] = {
[10060] = 1, --Power Infusion
[34433] = 1, --Shadowfiend
[200174] = 1, --Mindbender
[193223] = 1, --Surrender to Madness (talent)
[47585] = 2, --Dispersion
[15286] = 4, --Vampiric Embrace
[19236] = 5, --Desperate Prayer
[64044] = 5, --Psychic Horror
[8122] = 5, --Psychic Scream
[205369] = 5, --Mind Bomb
[228260] = 1, --Void Erruption
[15487] = 6, --Silence (interrupt)
},
--> ROGUE
--assassination
[259] = {
[79140] = 1, --Vendetta
[1856] = 2, --Vanish
[5277] = 2, --Evasion
[31224] = 2, --Cloak of Shadows
[2094] = 5, --Blind
[185311] = 5, --Crimson Vial
[114018] = 5, --Shroud of Concealment
[1766] = 6, --Kick
},
--outlaw
[260] = {
[13750] = 1, --Adrenaline Rush
[51690] = 1, --Killing Spree (talent)
[199754] = 2, --Riposte
[31224] = 2, --Cloak of Shadows
[5277] = 2, --Evasion
[1856] = 2, --Vanish
[2094] = 5, --Blind
[185311] = 5, --Crimson Vial
[114018] = 5, --Shroud of Concealment
[343142] = 5, --Dreadblades
[1766] = 6, --Kick
},
--subtlety
[261] = {
[121471] = 1, --Shadow Blades
[31224] = 2, --Cloak of Shadows
[1856] = 2, --Vanish
[5277] = 2, --Evasion
[2094] = 5, --Blind
[185311] = 5, --Crimson Vial
[114018] = 5, --Shroud of Concealment
[1766] = 6, --Kick
},
--> WARLOCK
--affliction
[265] = {
[205180] = 1, --Summon Darkglare
--[342601] = 1, --Ritual of Doom
[113860] = 1, --Dark Soul: Misery (talent)
[104773] = 2, --Unending Resolve
[108416] = 2, --Dark Pact (talent)
[30283] = 5, --Shadowfury
[333889] = 5, --Fel Domination
[19647] = 6, --Spell Lock (pet interrupt)
},
--demonology
[266] = {
[265187] = 1, --Summon Demonic Tyrant
--[342601] = 1, --Ritual of Doom
[267171] = 1, --Demonic Strength (talent)
[111898] = 1, --Grimoire: Felguard (talent)
[267217] = 1, --Nether Portal (talent)
[104773] = 2, --Unending Resolve
[108416] = 2, --Dark Pact (talent)
[30283] = 5, --Shadowfury
[5484] = 5, --Howl of Terror (talent)
[333889] = 5, --Fel Domination
[19647] = 6, --Spell Lock (pet interrupt)
[89766] = 6, --Axe Toss (pet interrupt)
},
--destruction
[267] = {
[1122] = 1, --Summon Infernal
--[342601] = 1, --Ritual of Doom
[113858] = 1, --Dark Soul: Instability (talent)
[104773] = 2, --Unending Resolve
[108416] = 2, --Dark Pact (talent)
[30283] = 5, --Shadowfury
[333889] = 5, --Fel Domination
[19647] = 6, --Spell Lock (pet interrupt)
},
--> WARRIOR
--Arms
[71] = {
[107574] = 1, --Avatar (talent)
[227847] = 1, --Bladestorm
[152277] = 1, --Ravager (talent)
[118038] = 2, --Die by the Sword
[97462] = 4, --Rallying Cry
[64382] = 5, --Shattering Throw
[5246] = 5, --Intimidating Shout
[6552] = 6, --Pummel
},
--Fury
[72] = {
[1719] = 1, --Recklessness
[46924] = 1, --Bladestorm (talent)
[184364] = 2, --Enraged Regeneration
[97462] = 4, --Rallying Cry
[64382] = 5, --Shattering Throw
[5246] = 5, --Intimidating Shout
[6552] = 6, --Pummel
},
--Protection
[73] = {
[228920] = 1, --Ravager (talent)
[107574] = 1, --Avatar
[12975] = 2, --Last Stand
[871] = 2, --Shield Wall
[97462] = 4, --Rallying Cry
[64382] = 5, --Shattering Throw
[5246] = 5, --Intimidating Shout
[6552] = 6, --Pummel
},
--> PALADIN
--holy
[65] = {
[31884] = 1, --Avenging Wrath
[216331] = 1, --Avenging Crusader (talent)
[498] = 2, --Divine Protection
[642] = 2, --Divine Shield
[105809] = 2, --Holy Avenger (talent)
[152262] = 2, --Seraphim
[633] = 3, --Lay on Hands
[1022] = 3, --Blessing of Protection
[6940] = 3, --Blessing of Sacrifice
[31821] = 4, --Aura Mastery
[1044] = 5, --Blessing of Freedom
[853] = 5, --Hammer of Justice
[115750] = 5, --Blinding Light (talent)
},
--protection
[66] = {
[31884] = 1, --Avenging Wrath
[327193] = 1, --Moment of Glory (talent)
[31850] = 2, --Ardent Defender
[86659] = 2, --Guardian of Ancient Kings
[105809] = 2, --Holy Avenger (talent)
[152262] = 2, --Seraphim
[1022] = 3, --Blessing of Protection
[204018] = 3, --Blessing of Spellwarding (talent)
[6940] = 3, --Blessing of Sacrifice
[1044] = 5, --Blessing of Freedom
[853] = 5, --Hammer of Justice
[115750] = 5, --Blinding Light (talent)
[96231] = 6, --Rebuke (interrupt)
},
--retribution
[70] = {
[31884] = 1, --Avenging Wrath
[231895] = 1, --Crusade (talent)
[205191] = 2, --Eye for an Eye (talent)
[184662] = 2, --Shield of Vengeance
[642] = 2, --Divine Shield
[1022] = 3, --Blessing of Protection
[6940] = 3, --Blessing of Sacrifice
[633] = 3, --Lay on Hands
[1044] = 5, --Blessing of Freedom
[853] = 5, --Hammer of Justice
[115750] = 5, --Blinding Light (talent)
[96231] = 6, --Rebuke (interrupt)
},
--> DEMON HUNTER
--havoc
[577] = {
[191427] = 1, --Metamorphosis
[198589] = 2, --Blur
[196555] = 2, --Netherwalk (talent)
[196718] = 4, --Darkness
[188501] = 5, --Spectral Sight
[179057] = 5, --Chaos Nova
[211881] = 5, --Fel Eruption (talent)
[183752] = 6, --Disrupt (interrupt)
},
--vengeance
[581] = {
[320341] = 1, --Bulk Extraction (talent)
[187827] = 2, --Metamorphosis
[204021] = 2, --Fiery Brand
[263648] = 2, --Soul Barrier (talent)
[207684] = 5, --Sigil of Misery
[202137] = 5, --Sigil of Silence
[202138] = 5, --Sigil of Chains (talent)
[188501] = 5, --Spectral Sight
[183752] = 6, --Disrupt (interrupt)
},
--> DEATH KNIGHT
--unholy
[252] = {
[275699] = 1, --Apocalypse
[42650] = 1, --Army of the Dead
[49206] = 1, --Summon Gargoyle (talent)
[207289] = 1, --Unholy Assault (talent)
[48707] = 2, --Anti-magic Shell
[48792] = 2, --Icebound Fortitude
[48743] = 2, --Death Pact (talent)
[51052] = 4, --Anti-magic Zone
[108194] = 5, --Asphyxiate (talent)
[287081] = 5, --Lichborne
[212552] = 5, --Wraith walk (talent)
[47528] = 6, --Mind Freeze (interrupt)
},
--frost
[251] = {
[152279] = 1, --Breath of Sindragosa (talent)
[47568] = 1, --Empower Rune Weapon
[279302] = 1, --Frostwyrm's Fury
[48707] = 2, --Anti-magic Shell
[48792] = 2, --Icebound Fortitude
[48743] = 2, --Death Pact (talent)
[51052] = 4, --Anti-magic Zone
[207167] = 5, --Blinding Sleet (talent)
[108194] = 5, --Asphyxiate (talent)
[287081] = 5, --Lichborne
[212552] = 5, --Wraith walk (talent)
[47528] = 6, --Mind Freeze (interrupt)
},
--blood
[250] = {
[49028] = 1, --Dancing Rune Weapon
[48707] = 2, --Anti-magic Shell
[48743] = 2, --Death Pact (talent)
[219809] = 2, --Tombstone (talent)
[55233] = 2, --Vampiric Blood
[48792] = 2, --Icebound Fortitude
[51052] = 4, --Anti-magic Zone
[108199] = 5, --Gorefiend's Grasp
[221562] = 5, --Asphyxiate
[212552] = 5, --Wraith walk (talent)
[47528] = 6, --Mind Freeze (interrupt)
},
--> DRUID
--Balance
[102] = {
[194223] = 1, --Celestial Alignment
[102560] = 1, --Incarnation: Chosen of Elune (talent)
[22812] = 2, --Barkskin
[108238] = 2, --Renewal (talent)
[29166] = 3, --Innervate
[77761] = 4, --Stampeding Roar
[319454] = 5, --Heart of the Wild (talent)
[132469] = 5, --Typhoon
[78675] = 6, --Solar Beam (interrupt)
},
--Feral
[103] = {
[106951] = 1, --Berserk
[102543] = 1, --Incarnation: King of the Jungle (talent)
[22812] = 2, --Barkskin
[61336] = 2, --Survival Instincts
[108238] = 2, --Renewal (talent)
[77761] = 4, --Stampeding Roar
[132469] = 5, --Typhoon
[319454] = 5, --Heart of the Wild (talent)
[106839] = 6, --Skull Bash (interrupt)
},
--Guardian
[104] = {
[106951] = 1, --Berserk
[204066] = 1, --Lunar Beam
[22812] = 2, --Barkskin
[61336] = 2, --Survival Instincts
[102558] = 2, --Incarnation: Guardian of Ursoc (talent)
[108238] = 2, --Renewal (talent)
[77761] = 4, --Stampeding Roar
[132469] = 5, --Typhoon
[319454] = 5, --Heart of the Wild (talent)
[106839] = 6, --Skull Bash (interrupt)
},
--Restoration
[105] = {
[22812] = 2, --Barkskin
[108238] = 2, --Renewal (talent)
[33891] = 2, --Incarnation: Tree of Life (talent)
[102342] = 3, --Ironbark
[29166] = 3, --Innervate
[203651] = 3, --Overgrowth (talent)
[740] = 4, --Tranquility
[197721] = 4, --Flourish (talent)
[77761] = 4, --Stampeding Roar
[319454] = 5, --Heart of the Wild (talent)
[102793] = 5, --Ursol's Vortex
},
--> HUNTER
--beast mastery
[253] = {
[193530] = 1, --Aspect of the Wild
[19574] = 1, --Bestial Wrath
[201430] = 1, --Stampede (talent)
[186265] = 2, --Aspect of the Turtle
[109304] = 2, --Exhilaration
[199483] = 2, --Camouflage (talent)
[186257] = 5, --Aspect of the cheetah
[19577] = 5, --Intimidation
[109248] = 5, --Binding Shot (talent)
[187650] = 5, --Freezing Trap
[147362] = 6, --Counter Shot (interrupt)
},
--marksmanship
[254] = {
[288613] = 1, --Trueshot
[186265] = 2, --Aspect of the Turtle
[199483] = 2, --Camouflage (talent)
[109304] = 2, --Exhilaration
[281195] = 2, --Survival of the Fittest
[186257] = 5, --Aspect of the cheetah
[187650] = 5, --Freezing Trap
[147362] = 6, --Counter Shot (interrupt)
},
--survival
[255] = {
[266779] = 1, --Coordinated Assault
[186265] = 2, --Aspect of the Turtle
[199483] = 2, --Camouflage (talent)
[109304] = 2, --Exhilaration
[186289] = 5, --Aspect of the eagle
[19577] = 5, --Intimidation
[187650] = 5, --Freezing Trap
[187707] = 6, --Muzzle (interrupt)
},
--> MONK
--brewmaster
[268] = {
[132578] = 1, --Invoke Niuzao, the Black Ox
[115080] = 1, --Touch of Death
[115203] = 2, --Fortifying Brew
[115399] = 2, --Black Ox brew (talent)
[115176] = 2, --Zen Meditation
[122278] = 2, --Dampen Harm (talent)
[116844] = 5, --Ring of peace (talent)
[119381] = 5, --Leg Sweep
[116705] = 6, --Spear Hand Strike (interrupt)
},
--windwalker
[269] = {
[137639] = 1, --Storm, Earth, and Fire
[123904] = 1, --Invoke Xuen, the White Tiger
[152173] = 1, --Serenity (talent)
[115080] = 1, --Touch of Death
[115203] = 2, --Fortifying Brew
[122470] = 2, --Touch of Karma
[122278] = 2, --Dampen Harm (talent)
[122783] = 2, --Diffuse Magic (talent)
[116844] = 5, --Ring of peace (talent)
[119381] = 5, --Leg Sweep
[116705] = 6, --Spear Hand Strike (interrupt)
},
--mistweaver
[270] = {
[115080] = 1, --Touch of Death
[122278] = 2, --Dampen Harm (talent)
[243435] = 2, --Fortifying Brew
[122783] = 2, --Diffuse Magic (talent)
[116849] = 3, --Life Cocoon
[322118] = 4, --Invoke Yulon, the Jade serpent
[115310] = 4, --Revival
[116844] = 5, --Ring of peace (talent)
[197908] = 5, --Mana tea (talent)
[119381] = 5, --Leg Sweep
},
--> SHAMAN
--elemental
[262] = {
[198067] = 1, --Fire Elemental
[192249] = 1, --Storm Elemental (talent)
[114050] = 1, --Ascendance (talent)
[108271] = 2, --Astral Shift
[108281] = 4, --Ancestral Guidance (talent)
[198103] = 2, --Earth Elemental
--[79206] = 5, --Spiritwalkers grace
[8143] = 5, --Tremor Totem
[192058] = 5, --Capacitor Totem
[192077] = 5, --Wind Rush Totem (talent)
[57994] = 6, --Wind Shear (interrupt)
},
--enhancement
[263] = {
[51533] = 1, --Feral Spirit
[114051] = 1, --Ascendance (talent)
[108271] = 2, --Astral Shift
[198103] = 2, --Earth Elemental
[8143] = 5, --Tremor Totem
[192058] = 5, --Capacitor Totem
[57994] = 6, --Wind Shear (interrupt)
},
--restoration
[264] = {
[108271] = 2, --Astral Shift
[114052] = 4, --Ascendance (talent)
[98008] = 4, --Spirit Link Totem
[108280] = 4, --Healing Tide Totem
[16191] = 4, --Mana Tide Totem
[207399] = 4, --Ancestral Protection Totem (talent)
[198103] = 2, --Earth Elemental
[8143] = 5, --Tremor Totem
[57994] = 6, --Wind Shear (interrupt)
},
--> EVOKER
--Devastation
[1467] = {},
--Preservation
[1468] = {},
}
--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 = {
--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
@@ -732,224 +245,285 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
[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
[31884] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "PALADIN", type = 1}, --Avenging Wrath
[216331] = {cooldown = 120, duration = 20, talent = 22190, charges = 1, class = "PALADIN", type = 1}, --Avenging Crusader (talent)
[498] = {cooldown = 60, duration = 8, talent = false, charges = 1, class = "PALADIN", type = 2}, --Divine Protection
[642] = {cooldown = 300, duration = 8, talent = false, charges = 1, class = "PALADIN", type = 2}, --Divine Shield
[105809] = {cooldown = 90, duration = 20, talent = 22164, charges = 1, class = "PALADIN", type = 2}, --Holy Avenger (talent)
[152262] = { cooldown = 45, duration = 15, talent = 17601, charges = 1, class = "PALADIN", type = 2}, --Seraphim
[633] = {cooldown = 600, duration = false, talent = false, charges = 1, class = "PALADIN", type = 3}, --Lay on Hands
[1022] = {cooldown = 300, duration = 10, talent = false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Protection
[6940] = {cooldown = 120, duration = 12, talent = false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Sacrifice
[31821] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "PALADIN", type = 4}, --Aura Mastery
[1044] = {cooldown = 25, duration = 8, talent = false, charges = 1, class = "PALADIN", type = 5}, --Blessing of Freedom
[853] = {cooldown = 60, duration = 6, talent = false, charges = 1, class = "PALADIN", type = 5}, --Hammer of Justice
[115750] = {cooldown = 90, duration = 6, talent = 21811, charges = 1, class = "PALADIN", type = 5}, --Blinding Light(talent)
[327193] = {cooldown = 90, duration = 15, talent = 23468, charges = 1, class = "PALADIN", type = 1}, --Moment of Glory (talent)
[31850] = {cooldown = 120, duration = 8, talent = false, charges = 1, class = "PALADIN", type = 2}, --Ardent Defender
[86659] = {cooldown = 300, duration = 8, talent = false, charges = 1, class = "PALADIN", type = 2}, --Guardian of Ancient Kings
[204018] = {cooldown = 180, duration = 10, talent = 22435, charges = 1, class = "PALADIN", type = 3}, --Blessing of Spellwarding (talent)
[231895] = {cooldown = 120, duration = 25, talent = 22215, charges = 1, class = "PALADIN", type = 1}, --Crusade (talent)
[205191] = {cooldown = 60, duration = 10, talent = 22183, charges = 1, class = "PALADIN", type = 2}, --Eye for an Eye (talent)
[184662] = {cooldown = 120, duration = 15, talent = false, charges = 1, class = "PALADIN", type = 2}, --Shield of Vengeance
-- 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
[107574] = {cooldown = 90, duration = 20, talent = 22397, charges = 1, class = "WARRIOR", type = 1}, --Avatar
[227847] = {cooldown = 90, duration = 5, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm
[152277] = {cooldown = 60, duration = 6, talent = 21667, charges = 1, class = "WARRIOR", type = 1}, --Ravager (talent)
[118038] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Die by the Sword
[97462] = {cooldown = 180, duration = 10, talent = false, charges = 1, class = "WARRIOR", type = 4}, --Rallying Cry
[1719] = {cooldown = 90, duration = 10, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Recklessness
[46924] = {cooldown = 60, duration = 4, talent = 22400, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm (talent)
[184364] = {cooldown = 120, duration = 8, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Enraged Regeneration
[228920] = {cooldown = 60, duration = 6, talent = 23099, charges = 1, class = "WARRIOR", type = 1}, --Ravager (talent)
[12975] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Last Stand
[871] = {cooldown = 8, duration = 240, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Shield Wall
[64382] = {cooldown = 180, duration = false, talent = false, charges = 1, class = "WARRIOR", type = 5}, --Shattering Throw
[5246] = {cooldown = 90, duration = 8, talent = false, charges = 1, class = "WARRIOR", type = 5}, --Intimidating Shout
-- 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
[205180] = {cooldown = 180, duration = 20, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Darkglare
--[342601] = {cooldown = 3600, duration = false, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Ritual of Doom
[113860] = {cooldown = 120, duration = 20, talent = 19293, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Misery (talent)
[104773] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "WARLOCK", type = 2}, --Unending Resolve
[108416] = {cooldown = 60, duration = 20, talent = 19286, charges = 1, class = "WARLOCK", type = 2}, --Dark Pact (talent)
[265187] = {cooldown = 90, duration = 15, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Demonic Tyrant
[111898] = {cooldown = 120, duration = 15, talent = 21717, charges = 1, class = "WARLOCK", type = 1}, --Grimoire: Felguard (talent)
[267171] = {cooldown = 60, duration = false, talent = 23138, charges = 1, class = "WARLOCK", type = 1}, --Demonic Strength (talent)
[267217] = {cooldown = 180, duration = 20, talent = 23091, charges = 1, class = "WARLOCK", type = 1}, --Nether Portal
[1122] = {cooldown = 180, duration = 30, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Infernal
[113858] = {cooldown = 120, duration = 20, talent = 23092, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Instability (talent)
[30283] = {cooldown = 60, duration = 3, talent = false, charges = 1, class = "WARLOCK", type = 5}, --Shadowfury
[333889] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "WARLOCK", type = 5}, --Fel Domination
[5484] = {cooldown = 40, duration = 20, talent = 23465, charges = 1, class = "WARLOCK", type = 5}, --Howl of Terror (talent)
-- 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
[198067] = {cooldown = 150, duration = 30, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Fire Elemental
[192249] = {cooldown = 150, duration = 30, talent = 19272, charges = 1, class = "SHAMAN", type = 1}, --Storm Elemental (talent)
[108271] = {cooldown = 90, duration = 8, talent = false, charges = 1, class = "SHAMAN", type = 2}, --Astral Shift
[108281] = {cooldown = 120, duration = 10, talent = 22172, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Guidance (talent)
[51533] = {cooldown = 120, duration = 15, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Feral Spirit
[114050] = {cooldown = 180, duration = 15, talent = 21675, charges = 1, class = "SHAMAN", type = 1}, --Ascendance (talent)
[114051] = {cooldown = 180, duration = 15, talent = 21972, charges = 1, class = "SHAMAN", type = 1}, --Ascendance (talent)
[114052] = {cooldown = 180, duration = 15, talent = 22359, charges = 1, class = "SHAMAN", type = 4}, --Ascendance (talent)
[98008] = {cooldown = 180, duration = 6, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Spirit Link Totem
[108280] = {cooldown = 180, duration = 10, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Healing Tide Totem
[207399] = {cooldown = 240, duration = 30, talent = 22323, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Protection Totem (talent)
[16191] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Mana Tide Totem
[198103] = {cooldown = 300, duration = 60, talent = false, charges = 1, class = "SHAMAN", type = 2}, --Earth Elemental
[192058] = {cooldown = 60, duration = false, talent = false, charges = 1, class = "SHAMAN", type = 5}, --Capacitor Totem
[8143] = {cooldown = 60, duration = 10, talent = false, charges = 1, class = "SHAMAN", type = 5}, --Tremor Totem
[192077] = {cooldown = 120, duration = 15, talent = 21966, charges = 1, class = "SHAMAN", type = 5}, --Wind Rush Totem (talent)
-- 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
[132578] = {cooldown = 180, duration = 25, talent = false, charges = 1, class = "MONK", type = 1}, --Invoke Niuzao, the Black Ox
[115080] = {cooldown = 180, duration = false, talent = false, charges = 1, class = "MONK", type = 1}, --Touch of Death
[115203] = {cooldown = 420, duration = 15, talent = false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
[115176] = {cooldown = 300, duration = 8, talent = false, charges = 1, class = "MONK", type = 2}, --Zen Meditation
[115399] = {cooldown = 120, duration = false, talent = 19992, charges = 1, class = "MONK", type = 2}, --Black Ox brew (talent)
[122278] = {cooldown = 120, duration = 10, talent = 20175, charges = 1, class = "MONK", type = 2}, --Dampen Harm (talent)
[137639] = {cooldown = 90, duration = 15, talent = false, charges = 1, class = "MONK", type = 1}, --Storm, Earth, and Fire
[123904] = {cooldown = 120, duration = 24, talent = false, charges = 1, class = "MONK", type = 1}, --Invoke Xuen, the White Tiger
[152173] = {cooldown = 90, duration = 12, talent = 21191, charges = 1, class = "MONK", type = 1}, --Serenity (talent)
[122470] = {cooldown = 90, duration = 6, talent = false, charges = 1, class = "MONK", type = 2}, --Touch of Karma
[322118] = {cooldown = 180, duration = 25, talent = false, charges = 1, class = "MONK", type = 4}, --Invoke Yulon, the Jade serpent
[243435] = {cooldown = 90, duration = 15, talent = false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
[122783] = {cooldown = 90, duration = 6, talent = 20173, charges = 1, class = "MONK", type = 2}, --Diffuse Magic (talent)
[116849] = {cooldown = 120, duration = 12, talent = false, charges = 1, class = "MONK", type = 3}, --Life Cocoon
[115310] = {cooldown = 180, duration = false, talent = false, charges = 1, class = "MONK", type = 4}, --Revival
[197908] = {cooldown = 90, duration = 10, talent = 22166, charges = 1, class = "MONK", type = 5}, --Mana tea (talent)
[116844] = {cooldown = 45, duration = 5, talent = 19995, charges = 1, class = "MONK", type = 5}, --Ring of peace (talent)
[119381] = {cooldown = 50, duration = 3, talent = false, charges = 1, class = "MONK", type = 5}, --Leg Sweep
-- 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
[193530] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "HUNTER", type = 1}, --Aspect of the Wild
[19574] = {cooldown = 90, duration = 12, talent = false, charges = 1, class = "HUNTER", type = 1}, --Bestial Wrath
[201430] = {cooldown = 180, duration = 12, talent = 23044, charges = 1, class = "HUNTER", type = 1}, --Stampede (talent)
[288613] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "HUNTER", type = 1}, --Trueshot
[199483] = {cooldown = 60, duration = 60, talent = 23100, charges = 1, class = "HUNTER", type = 2}, --Camouflage (talent)
[281195] = {cooldown = 180, duration = 6, talent = false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest
[266779] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "HUNTER", type = 1}, --Coordinated Assault
[186265] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "HUNTER", type = 2}, --Aspect of the Turtle
[109304] = {cooldown = 120, duration = false, talent = false, charges = 1, class = "HUNTER", type = 2}, --Exhilaration
[186257] = {cooldown = 144, duration = 14, talent = false, charges = 1, class = "HUNTER", type = 5}, --Aspect of the cheetah
[19577] = {cooldown = 60, duration = 5, talent = false, charges = 1, class = "HUNTER", type = 5}, --Intimidation
[109248] = {cooldown = 45, duration = 10, talent = 22499, charges = 1, class = "HUNTER", type = 5}, --Binding Shot (talent)
[187650] = {cooldown = 25, duration = 60, talent = false, charges = 1, class = "HUNTER", type = 5}, --Freezing Trap
[186289] = {cooldown = 72, duration = 15, talent = false, charges = 1, class = "HUNTER", type = 5}, --Aspect of the eagle
-- 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
[77761] = {cooldown = 120, duration = 8, talent = false, charges = 1, class = "DRUID", type = 4}, --Stampeding Roar
[194223] = {cooldown = 180, duration = 20, talent = false, charges = 1, class = "DRUID", type = 1}, --Celestial Alignment
[102560] = {cooldown = 180, duration = 30, talent = 21702, charges = 1, class = "DRUID", type = 1}, --Incarnation: Chosen of Elune (talent)
[22812] = {cooldown = 60, duration = 12, talent = false, charges = 1, class = "DRUID", type = 2}, --Barkskin
[108238] = {cooldown = 90, duration = false, talent = 18570, charges = 1, class = "DRUID", type = 2}, --Renewal (talent)
[29166] = {cooldown = 180, duration = 12, talent = false, charges = 1, class = "DRUID", type = 3}, --Innervate
[106951] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "DRUID", type = 1}, --Berserk
[102543] = {cooldown = 30, duration = 180, talent = 21704, charges = 1, class = "DRUID", type = 1}, --Incarnation: King of the Jungle (talent)
[61336] = {cooldown = 120, duration = 6, talent = false, charges = 2, class = "DRUID", type = 2}, --Survival Instincts (2min feral 4min guardian, same spellid)
[102558] = {cooldown = 180, duration = 30, talent = 22388, charges = 1, class = "DRUID", type = 2}, --Incarnation: Guardian of Ursoc (talent)
[33891] = {cooldown = 180, duration = 30, talent = 22421, charges = 1, class = "DRUID", type = 2}, --Incarnation: Tree of Life (talent)
[102342] = {cooldown = 60, duration = 12, talent = false, charges = 1, class = "DRUID", type = 3}, --Ironbark
[203651] = {cooldown = 60, duration = false, talent = 22422, charges = 1, class = "DRUID", type = 3}, --Overgrowth (talent)
[740] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "DRUID", type = 4}, --Tranquility
[197721] = {cooldown = 90, duration = 8, talent = 22404, charges = 1, class = "DRUID", type = 4}, --Flourish (talent)
[132469] = {cooldown = 30, duration = false, talent = false, charges = 1, class = "DRUID", type = 5}, --Typhoon
[319454] = {cooldown = 300, duration = 45, talent = 18577, charges = 1, class = "DRUID", type = 5}, --Heart of the Wild (talent)
[102793] = {cooldown = 60, duration = 10, talent = false, charges = 1, class = "DRUID", type = 5}, --Ursol's Vortex
-- 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
[275699] = {cooldown = 90, duration = 15, talent = false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Apocalypse
[42650] = {cooldown = 480, duration = 30, talent = false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Army of the Dead
[49206] = {cooldown = 180, duration = 30, talent = 22110, charges = 1, class = "DEATHKNIGHT", type = 1}, --Summon Gargoyle (talent)
[207289] = {cooldown = 78, duration = 12, talent = 22538, charges = 1, class = "DEATHKNIGHT", type = 1}, --Unholy Assault (talent)
[48743] = {cooldown = 120, duration = 15, talent = 23373, charges = 1, class = "DEATHKNIGHT", type = 2}, --Death Pact (talent)
[48707] = {cooldown = 60, duration = 10, talent = 23373, charges = 1, class = "DEATHKNIGHT", type = 2}, --Anti-magic Shell
[152279] = {cooldown = 120, duration = 5, talent = 22537, charges = 1, class = "DEATHKNIGHT", type = 1}, --Breath of Sindragosa (talent)
[47568] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Empower Rune Weapon
[279302] = {cooldown = 120, duration = 10, talent = 22535, charges = 1, class = "DEATHKNIGHT", type = 1}, --Frostwyrm's Fury (talent)
[49028] = {cooldown = 120, duration = 8, talent = false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Dancing Rune Weapon
[55233] = {cooldown = 90, duration = 10, talent = false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Vampiric Blood
[48792] = {cooldown = 120, duration = 8, talent = false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Icebound Fortitude
[51052] = {cooldown = 120, duration = 10, talent = false, charges = 1, class = "DEATHKNIGHT", type = 4}, --Anti-magic Zone
[219809] = {cooldown = 60, duration = 8, talent = 23454, charges = 1, class = "DEATHKNIGHT", type = 2}, --Tombstone (talent)
[108199] = {cooldown = 120, duration = false, talent = false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Gorefiend's Grasp
[207167] = {cooldown = 60, duration = 5, talent = 22519, charges = 1, class = "DEATHKNIGHT", type = 5}, --Blinding Sleet (talent)
[108194] = {cooldown = 45, duration = 4, talent = 22520, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate (talent)
[221562] = {cooldown = 45, duration = 5, talent = false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate
[212552] = {cooldown = 60, duration = 4, talent = 19228, charges = 1, class = "DEATHKNIGHT", type = 5}, --Wraith walk (talent)
-- 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
[191427] = {cooldown = 240, duration = 30, talent = false, charges = 1, class = "DEMONHUNTER", type = 1}, --Metamorphosis
[198589] = {cooldown = 60, duration = 10, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Blur
[196555] = {cooldown = 120, duration = 5, talent = 21865, charges = 1, class = "DEMONHUNTER", type = 2}, --Netherwalk (talent)
[187827] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Metamorphosis
[196718] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "DEMONHUNTER", type = 4}, --Darkness
[188501] = {cooldown = 30, duration = 10, talent = false, charges = 1, class = "DEMONHUNTER", type = 5}, --Spectral Sight
[179057] = {cooldown = 60, duration = 2, talent = false, charges = 1, class = "DEMONHUNTER", type = 5}, --Chaos Nova
[211881] = {cooldown = 30, duration = 4, talent = 22767, charges = 1, class = "DEMONHUNTER", type = 5}, --Fel Eruption (talent)
[320341] = {cooldown = 90, duration = false, talent = 21902, charges = 1, class = "DEMONHUNTER", type = 1}, --Bulk Extraction (talent)
[204021] = {cooldown = 60, duration = 10, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Fiery Brand
[263648] = {cooldown = 30, duration = 12, talent = 22768, charges = 1, class = "DEMONHUNTER", type = 2}, --Soul Barrier (talent)
[207684] = {cooldown = 90, duration = 12, talent = false, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Misery
[202137] = {cooldown = 60, duration = 8, talent = false, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Silence
[202138] = {cooldown = 90, duration = 6, talent = 22511, charges = 1, class = "DEMONHUNTER", type = 5}, --Sigil of Chains (talent)
-- 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
[12042] = {cooldown = 90, duration = 10, talent = false, charges = 1, class = "MAGE", type = 1}, --Arcane Power
[12051] = {cooldown = 90, duration = 6, talent = false, charges = 1, class = "MAGE", type = 1}, --Evocation
[110960] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "MAGE", type = 2}, --Greater Invisibility
[235450] = {cooldown = 25, duration = 60, talent = false, charges = 1, class = "MAGE", type = 5}, --Prismatic Barrier
[235313] = {cooldown = 25, duration = 60, talent = false, charges = 1, class = "MAGE", type = 5}, --Blazing Barrier
[11426] = {cooldown = 25, duration = 60, talent = false, charges = 1, class = "MAGE", type = 5}, --Ice Barrier
[190319] = {cooldown = 120, duration = 10, talent = false, charges = 1, class = "MAGE", type = 1}, --Combustion
[55342] = {cooldown = 120, duration = 40, talent = 22445, charges = 1, class = "MAGE", type = 1}, --Mirror Image
[66] = {cooldown = 300, duration = 20, talent = false, charges = 1, class = "MAGE", type = 2}, --Invisibility
[12472] = {cooldown = 180, duration = 20, talent = false, charges = 1, class = "MAGE", type = 1}, --Icy Veins
[205021] = {cooldown = 78, duration = 5, talent = 22309, charges = 1, class = "MAGE", type = 1}, --Ray of Frost (talent)
[45438] = {cooldown = 240, duration = 10, talent = false, charges = 1, class = "MAGE", type = 2}, --Ice Block
[235219] = {cooldown = 300, duration = false, talent = false, charges = 1, class = "MAGE", type = 5}, --Cold Snap
[113724] = {cooldown = 45, duration = 10, talent = 22471, charges = 1, class = "MAGE", type = 5}, --Ring of Frost (talent)
-- 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
[10060] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "PRIEST", type = 1}, --Power Infusion
[34433] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "PRIEST", type = 1, ignoredIfTalent = 21719}, --Shadowfiend
[200174] = {cooldown = 60, duration = 15, talent = 21719, charges = 1, class = "PRIEST", type = 1}, --Mindbender (talent)
[123040] = {cooldown = 60, duration = 12, talent = 22094, charges = 1, class = "PRIEST", type = 1}, --Mindbender (talent)
[33206] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "PRIEST", type = 3}, --Pain Suppression
[62618] = {cooldown = 180, duration = 10, talent = false, charges = 1, class = "PRIEST", type = 4}, --Power Word: Barrier
[271466] = {cooldown = 180, duration = 10, talent = 21184, charges = 1, class = "PRIEST", type = 4}, --Luminous Barrier (talent)
[47536] = {cooldown = 90, duration = 10, talent = false, charges = 1, class = "PRIEST", type = 5}, --Rapture
[19236] = {cooldown = 90, duration = 10, talent = false, charges = 1, class = "PRIEST", type = 5}, --Desperate Prayer
[200183] = {cooldown = 120, duration = 20, talent = 21644, charges = 1, class = "PRIEST", type = 2}, --Apotheosis (talent)
[47788] = {cooldown = 180, duration = 10, talent = false, charges = 1, class = "PRIEST", type = 3}, --Guardian Spirit
[64843] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "PRIEST", type = 4}, --Divine Hymn
[64901] = {cooldown = 300, duration = 6, talent = false, charges = 1, class = "PRIEST", type = 4}, --Symbol of Hope
[265202] = {cooldown = 720, duration = false, talent = 23145, charges = 1, class = "PRIEST", type = 4}, --Holy Word: Salvation (talent)
[109964] = {cooldown = 60, duration = 12, talent = 21184, charges = 1, class = "PRIEST", type = 4}, --Spirit Shell (talent)
[8122] = {cooldown = 60, duration = 8, talent = false, charges = 1, class = "PRIEST", type = 5}, --Psychic Scream
[193223] = {cooldown = 240, duration = 60, talent = 21979, charges = 1, class = "PRIEST", type = 1}, --Surrender to Madness (talent)
[47585] = {cooldown = 120, duration = 6, talent = false, charges = 1, class = "PRIEST", type = 2}, --Dispersion
[15286] = {cooldown = 120, duration = 15, talent = false, charges = 1, class = "PRIEST", type = 4}, --Vampiric Embrace
[64044] = {cooldown = 45, duration = 4, talent = 21752, charges = 1, class = "PRIEST", type = 5}, --Psychic Horror
[205369] = {cooldown = 30, duration = 6, talent = 23375, charges = 1, class = "PRIEST", type = 5}, --Mind Bomb
[228260] = {cooldown = 90, duration = 15, talent = false, charges = 1, class = "PRIEST", type = 1}, --Void Erruption
-- 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
[79140] = {cooldown = 120, duration = 20, talent = false, charges = 1, class = "ROGUE", type = 1}, --Vendetta
[1856] = {cooldown = 120, duration = 3, talent = false, charges = 1, class = "ROGUE", type = 2}, --Vanish
[5277] = {cooldown = 120, duration = 10, talent = false, charges = 1, class = "ROGUE", type = 2}, --Evasion
[31224] = {cooldown = 120, duration = 5, talent = false, charges = 1, class = "ROGUE", type = 2}, --Cloak of Shadows
[2094] = {cooldown = 120, duration = 60, talent = false, charges = 1, class = "ROGUE", type = 5}, --Blind
[114018] = {cooldown = 360, duration = 15, talent = false, charges = 1, class = "ROGUE", type = 5}, --Shroud of Concealment
[185311] = {cooldown = 30, duration = 15, talent = false, charges = 1, class = "ROGUE", type = 5}, --Crimson Vial
[13750] = {cooldown = 180, duration = 20, talent = false, charges = 1, class = "ROGUE", type = 1}, --Adrenaline Rush
[51690] = {cooldown = 120, duration = 2, talent = 23175, charges = 1, class = "ROGUE", type = 1}, --Killing Spree (talent)
[199754] = {cooldown = 120, duration = 10, talent = false, charges = 1, class = "ROGUE", type = 2}, --Riposte
[343142] = {cooldown = 90, duration = 10, talent = 19250, charges = 1, class = "ROGUE", type = 5}, --Dreadblades
[121471] = {cooldown = 180, duration = 20, talent = false, charges = 1, class = "ROGUE", type = 1}, --Shadow Blades
-- 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
+1 -1
View File
@@ -18,7 +18,7 @@
_detalhes.BFACORE = 131 --core version on BFA launch
_detalhes.SHADOWLANDSCORE = 143 --core version on Shadowlands launch
--
_detalhes.dragonflight_beta_version = 27
_detalhes.dragonflight_beta_version = 28
Details = _detalhes
+6 -2
View File
@@ -1608,14 +1608,18 @@ function _detalhes:RestauraJanela(index, temp, load_only)
else
self.mostrando = "normal"
end
--fix for the weird white window default skin
--this is a auto detect for configuration corruption, happens usually when the user install Details! over old config settings
--check if the skin used in the window is the default skin, check if statusbar is in use and if the color of the window is full white
if (self.skin == _detalhes.default_skin_to_use and self.show_statusbar) then
if(self.color[1] == 1 and self.color[2] == 1 and self.color[3] == 1 and self.color[4] == 1) then
print ("|cFFFF2222Details!: Corrupted skin detected! Resetting window skin to default.")
Details:Msg("error 0xFF85DD")
self.skin = "no skin"
self:ChangeSkin(_detalhes.default_skin_to_use)
end
end
--> internal stuff
self.oldwith = self.baseframe:GetWidth()
+3
View File
@@ -175,6 +175,9 @@ _detalhes.instance_defaults = {
enable_custom_text = false,
custom_text = "{name}",
show_timer = true,
show_timer_always = false, --show the timer even when not in an encounter
show_timer_bg = true, --show the timer within battleground, the timer is the elapsed battleground time
show_timer_arena = true, ---show the timer within arena, the timer is the elapsed time of the arena match
},
--auto hide window borders statusbar main menu
menu_alpha = {enabled = false, iconstoo = true, onenter = 1, onleave = 1, ignorebars = false},
+20 -7
View File
@@ -1008,31 +1008,42 @@
function Details:CreateArenaSegment()
Details:GetPlayersInArena()
Details.arena_begun = true
Details.start_arena = nil
if (Details.in_combat) then
Details:SairDoCombate()
end
--> registra os grficos
Details:TimeDataRegister ("Your Team Damage", string_arena_myteam_damage, nil, "Details!", "v1.0", [[Interface\ICONS\Ability_DualWield]], true, true)
Details:TimeDataRegister ("Enemy Team Damage", string_arena_enemyteam_damage, nil, "Details!", "v1.0", [[Interface\ICONS\Ability_DualWield]], true, true)
Details:TimeDataRegister ("Your Team Healing", string_arena_myteam_heal, nil, "Details!", "v1.0", [[Interface\ICONS\Ability_DualWield]], true, true)
Details:TimeDataRegister ("Enemy Team Healing", string_arena_enemyteam_heal, nil, "Details!", "v1.0", [[Interface\ICONS\Ability_DualWield]], true, true)
Details.lastArenaStartTime = GetTime()
--> inicia um novo combate
Details:EntrarEmCombate()
--> sinaliza que esse combate arena
Details.tabela_vigente.arena = true
Details.tabela_vigente.is_arena = {name = Details.zone_name, zone = Details.zone_name, mapid = Details.zone_id}
Details:SendEvent("COMBAT_ARENA_START")
end
--return the GetTime() of the current or latest arena match
function Details:GetArenaStartTime()
return Details.lastArenaStartTime
end
function Details:GetBattlegroundStartTime()
return Details.lastBattlegroundStartTime
end
function Details:StartArenaSegment(...)
if (Details.debug) then
Details:Msg("(debug) starting a new arena segment.")
@@ -1045,6 +1056,8 @@
end
Details.start_arena = Details:ScheduleTimer("CreateArenaSegment", timeSeconds)
Details:GetPlayersInArena()
--CHAT_MSG_BG_SYSTEM_NEUTRAL - "The Arena battle has begun!""
end
function Details:EnteredInArena()
+9 -1
View File
@@ -4950,6 +4950,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_detalhes.time_type = 1
end
end
Details.lastBattlegroundStartTime = GetTime()
elseif (zoneType == "arena") then
@@ -5618,7 +5620,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_detalhes:SchedulePetUpdate (6)
end
function _detalhes.parser_functions:START_TIMER(...)
function _detalhes.parser_functions:START_TIMER(...) --~timer
if (_detalhes.debug) then
_detalhes:Msg("(debug) found a timer.")
@@ -5657,7 +5659,13 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_detalhes.tabela_vigente.discard_segment = true
Details:EndCombat()
end
Details.lastBattlegroundStartTime = GetTime()
Details:StartCombat()
if (Details.debug) then
Details:Msg("(debug) a battleground has started.")
end
end
-- ~load
+61 -21
View File
@@ -7971,35 +7971,65 @@ local formatTime = function (t)
return "[" .. m .. ":" .. s .. "]"
end
function _detalhes:TitleTextTickTimer (instance) --called on each 1 second tick
local updateTimerInTheTitleBarText = function(instance, timer)
local originalText = instance.menu_attribute_string.originalText
if (originalText) then
local formattedTime = formatTime(timer)
instance:SetTitleBarText(formattedTime .. " " .. originalText)
else
local titleBarTitleText = instance:GetTitleBarText()
if (not titleBarTitleText:find("%[.*%]")) then
instance:SetTitleBarText("[00:01] " .. titleBarTitleText)
else
local formattedTime = formatTime(timer)
titleBarTitleText = titleBarTitleText:gsub("%[.*%]", formattedTime)
instance:SetTitleBarText(titleBarTitleText)
end
end
end
--self is Details
--this is a ticker callback, it is called on each 1 second
function _detalhes:TitleTextTickTimer(instance)
--hold the time value to show in the title bar
local timer
if (instance.attribute_text.enabled) then
--tick only during encounter
if (not Details.titletext_showtimer_always) then
local zoneType = Details:GetZoneType()
if (zoneType == "arena") then
if (instance.attribute_text.show_timer_arena) then
timer = GetTime() - Details:GetArenaStartTime()
end
elseif (zoneType == "pvp") then
if (instance.attribute_text.show_timer_bg) then
timer = GetTime() - Details:GetBattlegroundStartTime()
end
elseif (zoneType == "raid" or zoneType == "party") then
--always attempt to show the time during a boss encounter
if (IsEncounterInProgress) then
if (not IsEncounterInProgress()) then
return
if (IsEncounterInProgress()) then
timer = Details:GetCurrentCombat():GetCombatTime()
end
else
if (not Details.tabela_vigente.is_boss) then
return
if (Details.tabela_vigente.is_boss) then
timer = Details:GetCurrentCombat():GetCombatTime()
end
end
end
local currentText = instance.menu_attribute_string.originalText
if (currentText) then
local timer = formatTime(_detalhes.tabela_vigente:GetCombatTime())
instance:SetTitleBarText(timer .. " " .. currentText)
else
local current_text = instance:GetTitleBarText()
if (not current_text:find("%[.*%]")) then
instance:SetTitleBarText("[00:01] " .. current_text)
else
local timer = formatTime(_detalhes.tabela_vigente:GetCombatTime())
current_text = current_text:gsub("%[.*%]", timer)
instance:SetTitleBarText(current_text)
if (not timer) then
if (instance.attribute_text.show_timer_always) then
timer = Details:GetCurrentCombat():GetCombatTime()
end
end
if (timer) then
updateTimerInTheTitleBarText(instance, timer)
end
end
end
@@ -8038,8 +8068,9 @@ function Details:GetTitleBarText()
end
-- ~titletext
--@timer_bg: battleground elapsed time
--@timer_arena: arena match elapsed time
function _detalhes:AttributeMenu (enabled, pos_x, pos_y, font, size, color, side, shadow, timer_encounter, timer_bg, timer_arena)
if (type (enabled) ~= "boolean") then
enabled = self.attribute_text.enabled
end
@@ -8077,7 +8108,14 @@ function _detalhes:AttributeMenu (enabled, pos_x, pos_y, font, size, color, side
if (type(timer_encounter) ~= "boolean") then
timer_encounter = self.attribute_text.show_timer
end
if (type(timer_bg) ~= "boolean") then
timer_bg = self.attribute_text.show_timer_bg
end
if (type(timer_arena) ~= "boolean") then
timer_arena = self.attribute_text.show_timer_arena
end
self.attribute_text.enabled = enabled
self.attribute_text.anchor [1] = pos_x
self.attribute_text.anchor [2] = pos_y
@@ -8087,6 +8125,8 @@ function _detalhes:AttributeMenu (enabled, pos_x, pos_y, font, size, color, side
self.attribute_text.side = side
self.attribute_text.shadow = shadow
self.attribute_text.show_timer = timer_encounter
self.attribute_text.show_timer_bg = timer_bg
self.attribute_text.show_timer_arena = timer_arena
--> enabled
if (not enabled and self.menu_attribute_string) then
-1
View File
@@ -1299,7 +1299,6 @@ local default_global_data = {
},
current_exp_raid_encounters = {},
installed_skins_cache = {},
titletext_showtimer_always = false,
--> keystone cache
keystone_cache = {},
+56
View File
@@ -199,6 +199,62 @@ do
else
_detalhes.SpecSpellList = { --~spec
--spyro healer
[359816] = 1468, --dream flight
[370960] = 1468, --emerald communion
[370537] = 1468, --stasis
[373270] = 1468, --lifebind
[367226] = 1468, --spiritbloom
[371270] = 1468, --time keeper
[368412] = 1468, --time of need
[371426] = 1468, --life givers flame
[377509] = 1468, --dream projection
[373834] = 1468, --call of ysera
[371832] = 1468, --cycle of life
[373861] = 1468, --temporal anomaly
[363510] = 1468, --mastery life binder
[356810] = 1468, --preservation evoker
[376210] = 1468, --borrowed time
[376207] = 1468, --delay harm
[355936] = 1468, --dream breath
[377082] = 1468, --dreamwalker
[364343] = 1468, --echo
[376138] = 1468, --empath
[372233] = 1468, --energy loop
--spyro dps
[370837] = 1467, --engulfing blaze
[365937] = 1467, --ruby embers
[370452] = 1467, --shattering star
[362980] = 1467, --mastery giantkiller
[375797] = 1467, --animosity
[356809] = 1467, --devastation evoker
[375618] = 1467, --arcane intensity
[386342] = 1467, --arcane vigor
[375721] = 1467, --azure essence burst
[375801] = 1467, --burnout
[375796] = 1467, --cascading power
[386283] = 1467, --catalyze
[375777] = 1467, --causality
[370455] = 1467, --charged blast
[369375] = 1467, --continuum
[370962] = 1467, --dense energy
[375087] = 1467, --dragonrage
[375757] = 1467, --eternitys span
[370819] = 1467, --everburning flame
[369846] = 1467, --feed the flames
[386336] = 1467, --focusing iris
[370845] = 1467, --tyranny
[360995] = 1467, --rescue
[370843] = 1467, --focusing iris
[370839] = 1467, --power swell
[370783] = 1467, --snapfire
[359073] = 1467, --eternity surge
[368847] = 1467, --firestorm
[369089] = 1467, --volatility
[372048] = 1467, --oppressing roar
[384660] = 1467, --crippling force
-- havoc demon hunter --577
[188499] = 577, -- Blade Dance
[320402] = 577, -- Blade Dance
+4
View File
@@ -17,6 +17,10 @@ function Details:StartMeUp() --I'll never stop!
Details:Msg("Details! author 'Terciob' does not have access to Dragonflight Beta, please be gentle while reporting bugs and questioning why some bugs haven't been fixed already, thank you!")
end
--set default time for arena and bg to be the Details! load time in case the client loads mid event
Details.lastArenaStartTime = GetTime()
Details.lastBattlegroundStartTime = GetTime()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> row single click, this determines what happen when the user click on a bar