Round of general fixes

This commit is contained in:
Tercio Jose
2022-10-26 21:50:34 -03:00
parent 60397057e7
commit 4c11441c3e
17 changed files with 843 additions and 703 deletions
+92 -20
View File
@@ -17,6 +17,8 @@ local CONST_TALENT_VERSION_DRAGONFLIGHT = 5
local CONST_BTALENT_VERSION_COVENANTS = 9
local CONST_SPELLBOOK_CLASSSPELLS_TABID = 2
local isTimewalkWoW = function()
local _, _, _, buildInfo = GetBuildInfo()
if (buildInfo < 40000) then
@@ -410,28 +412,96 @@ local canAddCooldown = function(cooldownInfo)
return true
end
local getSpellListAsHashTableFromSpellBook = function()
local completeListOfSpells = {}
--this line might not be compatible with classic
local specId, specName, _, specIconTexture = GetSpecializationInfo(GetSpecialization())
local classNameLoc, className, classId = UnitClass("player")
--get spells from the Spec spellbook
for i = 1, GetNumSpellTabs() do
local tabName, tabTexture, offset, numSpells, isGuild, offspecId = GetSpellTabInfo(i)
if (tabTexture == specIconTexture) then
offset = offset + 1
local tabEnd = offset + numSpells
for entryOffset = offset, tabEnd - 1 do
local spellType, spellId = GetSpellBookItemInfo(entryOffset, "player")
if (spellId) then
if (spellType == "SPELL") then
spellId = C_SpellBook.GetOverrideSpell(spellId)
local spellName = GetSpellInfo(spellId)
local isPassive = IsPassiveSpell(entryOffset, "player")
if (spellName and not isPassive) then
completeListOfSpells[spellId] = true
end
end
end
end
end
end
--get class shared spells from the spell book
local tabName, tabTexture, offset, numSpells, isGuild, offspecId = GetSpellTabInfo(CONST_SPELLBOOK_CLASSSPELLS_TABID)
offset = offset + 1
local tabEnd = offset + numSpells
for entryOffset = offset, tabEnd - 1 do
local spellType, spellId = GetSpellBookItemInfo(entryOffset, "player")
if (spellId) then
if (spellType == "SPELL") then
spellId = C_SpellBook.GetOverrideSpell(spellId)
local spellName = GetSpellInfo(spellId)
local isPassive = IsPassiveSpell(entryOffset, "player")
if (spellName and not isPassive) then
completeListOfSpells[spellId] = true
end
end
end
end
return completeListOfSpells
end
local updateCooldownAvailableList = function()
table.wipe(LIB_OPEN_RAID_PLAYERCOOLDOWNS)
local _, playerClass = UnitClass("player")
local spellBookSpellList = getSpellListAsHashTableFromSpellBook()
--build a list of all spells assigned as cooldowns for the player class
for spellID, spellData in pairs(LIB_OPEN_RAID_COOLDOWNS_INFO) do
if (spellData.class == playerClass) then
if (spellBookSpellList[spellID]) then
LIB_OPEN_RAID_PLAYERCOOLDOWNS[spellID] = spellData
end
end
end
end
--build a list with the local player cooldowns
--called only from SendAllPlayerCooldowns()
function openRaidLib.CooldownManager.GetPlayerCooldownList()
--get the player specId
local specId = openRaidLib.GetPlayerSpecId()
if (specId) then
--get the cooldowns for the specialization
local playerCooldowns = LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[specId]
if (not playerCooldowns) then
openRaidLib.DiagnosticError("CooldownManager|GetPlayerCooldownList|can't find player cooldowns for specId:", specId)
return {}, {}
end
--update the list of cooldowns the player has available
if (IsDragonflight()) then
--this fill the global LIB_OPEN_RAID_PLAYERCOOLDOWNS
updateCooldownAvailableList()
local cooldowns = {} --table to ship on comm
local cooldownsHash = {} --table with [spellId] = cooldownInfo
local talentsHash = openRaidLib.UnitInfoManager.GetPlayerTalentsAsPairsTable()
local timeNow = GetTime()
--get the player specId
local specId = openRaidLib.GetPlayerSpecId()
if (specId) then
--get the cooldowns for the specialization
local playerCooldowns = LIB_OPEN_RAID_PLAYERCOOLDOWNS
if (not playerCooldowns) then
openRaidLib.DiagnosticError("CooldownManager|GetPlayerCooldownList|LIB_OPEN_RAID_PLAYERCOOLDOWNS is nil")
return {}, {}
end
for cooldownSpellId, cooldownType in pairs(playerCooldowns) do
--get all the information about this cooldow
local cooldownInfo = LIB_OPEN_RAID_COOLDOWNS_INFO[cooldownSpellId]
if (cooldownInfo) then
local cooldowns = {} --table to ship on comm
local cooldownsHash = {} --table with [spellId] = cooldownInfo
local talentsHash = openRaidLib.UnitInfoManager.GetPlayerTalentsAsPairsTable()
local timeNow = GetTime()
for cooldownSpellId, cooldownInfo in pairs(playerCooldowns) do
--does this cooldown is based on a talent?
local talentId = cooldownInfo.talent
@@ -459,11 +529,13 @@ function openRaidLib.CooldownManager.GetPlayerCooldownList()
end
end
end
return cooldowns, cooldownsHash
else
return {}, {}
end
return cooldowns, cooldownsHash
else
return {}, {}
end
return {}
end
--check if a player cooldown is ready or if is in cooldown
+16 -3
View File
@@ -68,7 +68,7 @@ if (WOW_PROJECT_ID ~= WOW_PROJECT_MAINLINE and not isExpansion_Dragonflight()) t
end
local major = "LibOpenRaid-1.0"
local CONST_LIB_VERSION = 64
local CONST_LIB_VERSION = 66
LIB_OPEN_RAID_CAN_LOAD = false
local unpack = table.unpack or _G.unpack
@@ -719,6 +719,13 @@ end
eventFrame = CreateFrame("frame", "OpenRaidLibFrame", UIParent)
end
local talentChangedCallback = function()
openRaidLib.internalCallback.TriggerEvent("talentUpdate")
end
local delayedTalentChange = function()
openRaidLib.Schedules.NewUniqueTimer(0.5 + math.random(), talentChangedCallback, "TalentChangeEventGroup", "talentChangedCallback_Schedule")
end
local eventFunctions = {
--check if the player joined a group
["GROUP_ROSTER_UPDATE"] = function()
@@ -807,9 +814,14 @@ end
openRaidLib.internalCallback.TriggerEvent("onEnterWorld")
end,
--["PLAYER_SPECIALIZATION_CHANGED"] = function(...) end, --on changing spec, the talent_update event is also triggered
["PLAYER_SPECIALIZATION_CHANGED"] = function(...)
delayedTalentChange()
end,
["PLAYER_TALENT_UPDATE"] = function(...)
openRaidLib.internalCallback.TriggerEvent("talentUpdate")
delayedTalentChange()
end,
["TRAIT_CONFIG_UPDATED"] = function(...)
delayedTalentChange()
end,
["PLAYER_PVP_TALENT_UPDATE"] = function(...)
@@ -913,6 +925,7 @@ end
eventFrame:RegisterEvent("CHALLENGE_MODE_START")
eventFrame:RegisterEvent("CHALLENGE_MODE_COMPLETED")
--eventFrame:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
eventFrame:RegisterEvent("TRAIT_CONFIG_UPDATED")
end
end
+133 -119
View File
@@ -292,164 +292,176 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
-- 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 = false, charges = 1, class = "PALADIN", type = 1}, --Avenging Crusader
[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 = false, charges = 1, class = "PALADIN", type = 2}, --Holy Avenger
[152262] = {cooldown = 45, duration = 15, specs = {65,66,70}, talent = false, 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 = false, charges = 1, class = "PALADIN", type = 5}, --Blinding Light(talent)
[327193] = {cooldown = 90, duration = 15, specs = {66}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Moment of Glory
[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 = false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Spellwarding
[231895] = {cooldown = 120, duration = 25, specs = {70}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Crusade
[205191] = {cooldown = 60, duration = 10, specs = {70}, talent = false, charges = 1, class = "PALADIN", type = 2}, --Eye for an Eye
[184662] = {cooldown = 120, duration = 15, specs = {70}, talent = false, charges = 1, class = "PALADIN", type = 2}, --Shield of Vengeance
[31850] = {cooldown = 120, duration = 8, specs = {66}, talent = false, charges = 1, class = "PALADIN", type = 2}, --Ardent Defender
[31821] = {cooldown = 180, duration = 8, specs = {65}, talent = false, charges = 1, class = "PALADIN", type = 4}, --Aura Mastery
[216331] = {cooldown = 120, duration = 20, specs = {65}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Avenging Crusader
[31884] = {cooldown = 120, duration = 20, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Avenging Wrath
[1044] = {cooldown = 25, duration = 8, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 5}, --Blessing of Freedom
[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
[204018] = {cooldown = 180, duration = 10, specs = {66}, talent = false, charges = 1, class = "PALADIN", type = 3}, --Blessing of Spellwarding
[115750] = {cooldown = 90, duration = 6, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 8}, --Blinding Light
[231895] = {cooldown = 120, duration = 25, specs = {70}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Crusade
[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
[205191] = {cooldown = 60, duration = 10, specs = {70}, talent = false, charges = 1, class = "PALADIN", type = 2}, --Eye for an Eye
[86659] = {cooldown = 300, duration = 8, specs = {66}, talent = false, charges = 1, class = "PALADIN", type = 2}, --Guardian of Ancient Kings
[853] = {cooldown = 60, duration = 6, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 8}, --Hammer of Justice
[105809] = {cooldown = 90, duration = 20, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Holy Avenger
[633] = {cooldown = 600, duration = 0, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 3}, --Lay on Hands
[327193] = {cooldown = 90, duration = 15, specs = {66}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Moment of Glory
[152262] = {cooldown = 45, duration = 15, specs = {65, 66, 70}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Seraphim
[184662] = {cooldown = 120, duration = 15, specs = {70}, talent = false, charges = 1, class = "PALADIN", type = 2}, --Shield of Vengeance
--[384376] = {cooldown = 0, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Avenging Wrath (different spellId)
--[384442] = {cooldown = 0, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Avenging Wrath: Might (doesn't have a use, it maybe change the spellId)
--[375576] = {cooldown = 1 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Divine Toll
--[343527] = {cooldown = 1 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Execution Sentence
--[343721] = {cooldown = 1 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Final Reckoning
--[391054] = {cooldown = 10 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 5}, --Intercession (battle ress)
--warrior
-- 71 - Arms
-- 72 - Fury
-- 73 - Protection
[107574] = {cooldown = 90, duration = 20, specs = {71,73}, talent = false, 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 = false, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm
[152277] = {cooldown = 60, duration = 6, specs = {71}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Ravager
[228920] = {cooldown = 60, duration = 6, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Ravager
[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
[107574] = {cooldown = 90, duration = 20, specs = {71, 73}, talent = false, 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 = false, charges = 1, class = "WARRIOR", type = 1}, --Bladestorm
[118038] = {cooldown = 180, duration = 8, specs = {71}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Die by the Sword
[184364] = {cooldown = 120, duration = 8, specs = {72}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Enraged Regeneration
[5246] = {cooldown = 90, duration = 8, specs = {71, 72, 73}, talent = false, charges = 1, class = "WARRIOR", type = 8}, --Intimidating Shout
[12975] = {cooldown = 180, duration = 15, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Last Stand
[97462] = {cooldown = 180, duration = 10, specs = {71, 72, 73}, talent = false, charges = 1, class = "WARRIOR", type = 4}, --Rallying Cry
[152277] = {cooldown = 60, duration = 6, specs = {71}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Ravager
[228920] = {cooldown = 60, duration = 6, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Ravager
[1719] = {cooldown = 90, duration = 10, specs = {72}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Recklessness
[64382] = {cooldown = 180, duration = 0, specs = {71, 72, 73}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Shattering Throw
[871] = {cooldown = 8, duration = 240, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Shield Wall
[383762] = {cooldown = 180, duration = 0, specs = {71, 72, 73}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Bitter Immunity
[1161] = {cooldown = 120, duration = 0, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 5}, --Challenging Shout
[376079] = {cooldown = 90, duration = 4, specs = {}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Spear of Bastion
[392966] = {cooldown = 90, duration = 20, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Spell Block
[384318] = {cooldown = 90, duration = 0, specs = {71, 72, 73}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Thunderous Roar
--warlock
-- 265 - Affliction
-- 266 - Demonology
-- 267 - Destruction
[205180] = {cooldown = 180, duration = 20, specs = {265}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Darkglare
[113860] = {cooldown = 120, duration = 20, specs = {265}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Misery
[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 = false, charges = 1, class = "WARLOCK", type = 2}, --Dark Pact
[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 = false, charges = 1, class = "WARLOCK", type = 1}, --Grimoire: Felguard
[267171] = {cooldown = 60, duration = false, specs = {266}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Demonic Strength
[267217] = {cooldown = 180, duration = 20, specs = {266}, talent = false, 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 = false, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Instability
[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 = false, charges = 1, class = "WARLOCK", type = 5}, --Howl of Terror
[108416] = {cooldown = 60, duration = 20, specs = {265, 266, 267}, talent = false, charges = 1, class = "WARLOCK", type = 2}, --Dark Pact
[113858] = {cooldown = 120, duration = 20, specs = {267}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Instability
[113860] = {cooldown = 120, duration = 20, specs = {265}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Dark Soul: Misery
[267171] = {cooldown = 60, duration = 0, specs = {266}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Demonic Strength
[333889] = {cooldown = 180, duration = 15, specs = {265, 266, 267}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Fel Domination
[111898] = {cooldown = 120, duration = 15, specs = {266}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Grimoire: Felguard
[5484] = {cooldown = 40, duration = 20, specs = {265, 266, 267}, talent = false, charges = 1, class = "WARLOCK", type = 8}, --Howl of Terror
[267217] = {cooldown = 180, duration = 20, specs = {266}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Nether Portal
[30283] = {cooldown = 60, duration = 3, specs = {265, 266, 267}, talent = false, charges = 1, class = "WARLOCK", type = 8}, --Shadowfury
[205180] = {cooldown = 180, duration = 20, specs = {265}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Darkglare
[265187] = {cooldown = 90, duration = 15, specs = {266}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Demonic Tyrant
[1122] = {cooldown = 180, duration = 30, specs = {267}, talent = false, charges = 1, class = "WARLOCK", type = 1}, --Summon Infernal
[104773] = {cooldown = 180, duration = 8, specs = {265, 266, 267}, talent = false, charges = 1, class = "WARLOCK", type = 2}, --Unending Resolve
--shaman
-- 262 - Elemental
-- 263 - Enchancment
-- 264 - Restoration
[108281] = {cooldown = 120, duration = 10, specs = {262, 263}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Guidance
[207399] = {cooldown = 240, duration = 30, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Protection Totem
[114051] = {cooldown = 180, duration = 15, specs = {263}, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Ascendance
[114050] = {cooldown = 180, duration = 15, specs = {262}, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Ascendance
[114052] = {cooldown = 180, duration = 15, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Ascendance
[108271] = {cooldown = 90, duration = 8, specs = {262, 263, 264}, talent = false, charges = 1, class = "SHAMAN", type = 2}, --Astral Shift
[192058] = {cooldown = 60, duration = 0, specs = {262, 263, 264}, talent = false, charges = 1, class = "SHAMAN", type = 8}, --Capacitor Totem
[198103] = {cooldown = 300, duration = 60, specs = {262, 263, 264}, talent = false, charges = 1, class = "SHAMAN", type = 2}, --Earth Elemental
[51533] = {cooldown = 120, duration = 15, specs = {263}, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Feral Spirit
[198067] = {cooldown = 150, duration = 30, specs = {262}, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Fire Elemental
[108280] = {cooldown = 180, duration = 10, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Healing Tide Totem
[16191] = {cooldown = 180, duration = 8, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 5}, --Mana Tide Totem
[98008] = {cooldown = 180, duration = 6, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Spirit Link Totem
[192249] = {cooldown = 150, duration = 30, specs = {262}, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Storm Elemental
[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 = false, charges = 1, class = "SHAMAN", type = 5}, --Wind Rush Totem
--[198838] = {cooldown = 60, duration = 15, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Earthen Wall Totem
[51485] = {cooldown = 60, duration = 20, specs = {262, 263, 264}, talent = false, charges = 1, class = "SHAMAN", type = 8}, --Earthgrab Totem
[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 = false, charges = 1, class = "SHAMAN", type = 1}, --Storm Elemental
[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 = false, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Guidance
[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 = false, charges = 1, class = "SHAMAN", type = 1}, --Ascendance
[114051] = {cooldown = 180, duration = 15, specs = {263}, talent = false, charges = 1, class = "SHAMAN", type = 1}, --Ascendance
[114052] = {cooldown = 180, duration = 15, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Ascendance
[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 = false, charges = 1, class = "SHAMAN", type = 4}, --Ancestral Protection Totem
[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 = false, charges = 1, class = "SHAMAN", type = 5}, --Wind Rush Totem
--monk
-- 268 - Brewmaster
-- 269 - Windwalker
-- 270 - Restoration
[115399] = {cooldown = 120, duration = 0, specs = {268}, talent = false, charges = 1, class = "MONK", type = 2}, --Black Ox Brew
[122278] = {cooldown = 120, duration = 10, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 2}, --Dampen Harm
[122783] = {cooldown = 90, duration = 6, specs = {269, 270}, talent = false, charges = 1, class = "MONK", type = 2}, --Diffuse Magic
[243435] = {cooldown = 90, duration = 15, specs = {269, 270}, talent = false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
[115203] = {cooldown = 420, duration = 15, specs = {268}, talent = false, charges = 1, class = "MONK", type = 2}, --Fortifying Brew
[132578] = {cooldown = 180, duration = 25, specs = {268}, talent = false, charges = 1, class = "MONK", type = 1}, --Invoke Niuzao, the Black Ox
[123904] = {cooldown = 120, duration = 24, specs = {269}, talent = false, charges = 1, class = "MONK", type = 1}, --Invoke Xuen, the White Tiger
[322118] = {cooldown = 180, duration = 25, specs = {270}, talent = false, charges = 1, class = "MONK", type = 4}, --Invoke Yu'lon, the Jade Serpent
[119381] = {cooldown = 50, duration = 3, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 8}, --Leg Sweep
[116849] = {cooldown = 120, duration = 12, specs = {270}, talent = false, charges = 1, class = "MONK", type = 3}, --Life Cocoon
[197908] = {cooldown = 90, duration = 10, specs = {270}, talent = false, charges = 1, class = "MONK", type = 5}, --Mana Tea
[115310] = {cooldown = 180, duration = 0, specs = {270}, talent = false, charges = 1, class = "MONK", type = 4}, --Revival
[116844] = {cooldown = 45, duration = 5, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 8}, --Ring of Peace
[152173] = {cooldown = 90, duration = 12, specs = {269}, talent = false, charges = 1, class = "MONK", type = 1}, --Serenity
[137639] = {cooldown = 90, duration = 15, specs = {269}, talent = false, charges = 1, class = "MONK", type = 1}, --Storm, Earth, and Fire
[115080] = {cooldown = 180, duration = 0, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 1}, --Touch of Death
[122470] = {cooldown = 90, duration = 6, specs = {269}, talent = false, charges = 1, class = "MONK", type = 2}, --Touch of Karma
[115176] = {cooldown = 300, duration = 8, specs = {268}, talent = false, charges = 1, class = "MONK", type = 2}, --Zen Meditation
[388686] = {cooldown = 120, duration = 30, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 1}, --Summon White Tiger Statue
--[322109] = {cooldown = 180, duration = 0, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 1}, --Touch of Death
[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 = false, charges = 1, class = "MONK", type = 2}, --Black Ox brew
[122278] = {cooldown = 120, duration = 10, specs = {268,269,270}, talent = false, charges = 1, class = "MONK", type = 2}, --Dampen Harm
[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 = false, charges = 1, class = "MONK", type = 1}, --Serenity
[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 = false, charges = 1, class = "MONK", type = 2}, --Diffuse Magic
[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 = false, charges = 1, class = "MONK", type = 5}, --Mana tea
[116844] = {cooldown = 45, duration = 5, specs = {268,269,270}, talent = false, charges = 1, class = "MONK", type = 5}, --Ring of peace
[119381] = {cooldown = 50, duration = 3, specs = {268,269,270}, talent = false, charges = 1, class = "MONK", type = 5}, --Leg Sweep
--hunter
-- 253 - Beast Mastery
-- 254 - Marksmenship
-- 255 - Survival
[193530] = {cooldown = 120, duration = 20, specs = {253}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Aspect of the Wild
[19574] = {cooldown = 90, duration = 12, specs = {253}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Bestial Wrath
[201430] = {cooldown = 180, duration = 12, specs = {253}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Stampede
[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 = false, charges = 1, class = "HUNTER", type = 2}, --Camouflage
[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 = false, charges = 1, class = "HUNTER", type = 5}, --Binding Shot
[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
[186257] = {cooldown = 144, duration = 14, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Aspect of the Cheetah
[186289] = {cooldown = 72, duration = 15, specs = {255}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Aspect of the Eagle
[186265] = {cooldown = 180, duration = 8, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Aspect of the Turtle
[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
[109248] = {cooldown = 45, duration = 10, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Binding Shot
[199483] = {cooldown = 60, duration = 60, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Camouflage
[266779] = {cooldown = 120, duration = 20, specs = {255}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Coordinated Assault
[109304] = {cooldown = 120, duration = 0, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Exhilaration
[187650] = {cooldown = 25, duration = 60, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Freezing Trap
[19577] = {cooldown = 60, duration = 5, specs = {253, 255}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Intimidation
[201430] = {cooldown = 180, duration = 12, specs = {253}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Stampede
[281195] = {cooldown = 180, duration = 6, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest
[288613] = {cooldown = 180, duration = 15, specs = {254}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Trueshot
[264735] = {cooldown = 180, duration = 0, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest
--druid
-- 102 - Balance
-- 103 - Feral
-- 104 - Guardian
-- 105 - Restoration
[22812] = {cooldown = 60, duration = 12, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 2}, --Barkskin
[106951] = {cooldown = 180, duration = 15, specs = {103, 104}, talent = false, charges = 1, class = "DRUID", type = 1}, --Berserk
[194223] = {cooldown = 180, duration = 20, specs = {102}, talent = false, charges = 1, class = "DRUID", type = 1}, --Celestial Alignment
[106951] = {cooldown = 180, duration = 15, specs = {103, 104}, talent = false, charges = 1, class = "DRUID", type = 1}, --Berserk
[194223] = {cooldown = 180, duration = 20, specs = {102}, talent = false, charges = 1, class = "DRUID", type = 1}, --Celestial Alignment
[391528] = {cooldown = 120, duration = 4, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 1}, --Convoke the Spirits
[197721] = {cooldown = 90, duration = 8, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Flourish
[197721] = {cooldown = 90, duration = 8, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Flourish
[319454] = {cooldown = 300, duration = 45, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 1}, --Heart of the Wild
[102543] = {cooldown = 30, duration = 180, specs = {103}, talent = false, charges = 1, class = "DRUID", type = 1}, --Incarnation: Avatar of Ashamane
[102560] = {cooldown = 180, duration = 30, specs = {102}, talent = false, charges = 1, class = "DRUID", type = 1}, --Incarnation: Chosen of Elune
[102558] = {cooldown = 180, duration = 30, specs = {104}, talent = false, charges = 1, class = "DRUID", type = 2}, --Incarnation: Guardian of Ursoc
[33891] = {cooldown = 180, duration = 30, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Incarnation: Tree of Life
[99] = {cooldown = 30, duration = 3, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 8}, --Incapacitating Roar
[29166] = {cooldown = 180, duration = 12, specs = {102, 105}, talent = false, charges = 1, class = "DRUID", type = 5}, --Innervate
[102342] = {cooldown = 60, duration = 12, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 3}, --Ironbark
[203651] = {cooldown = 60, duration = 0, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 3}, --Overgrowth
[99] = {cooldown = 30, duration = 3, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 8}, --Incapacitating Roar
[102543] = {cooldown = 30, duration = 180, specs = {103}, talent = false, charges = 1, class = "DRUID", type = 1}, --Incarnation: Avatar of Ashamane
[102560] = {cooldown = 180, duration = 30, specs = {102}, talent = false, charges = 1, class = "DRUID", type = 1}, --Incarnation: Chosen of Elune
[102558] = {cooldown = 180, duration = 30, specs = {104}, talent = false, charges = 1, class = "DRUID", type = 2}, --Incarnation: Guardian of Ursoc
[33891] = {cooldown = 180, duration = 30, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Incarnation: Tree of Life
[29166] = {cooldown = 180, duration = 12, specs = {102, 105}, talent = false, charges = 1, class = "DRUID", type = 5}, --Innervate
[102342] = {cooldown = 60, duration = 12, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 3}, --Ironbark
[203651] = {cooldown = 60, duration = 0, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 3}, --Overgrowth
[20484] = {cooldown = 600, duration = 0, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 5}, --Rebirth
[108238] = {cooldown = 90, duration = 0, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 2}, --Renewal
[77761] = {cooldown = 120, duration = 8, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Stampeding Roar | 106898
[61336] = {cooldown = 120, duration = 6, specs = {103, 104}, talent = false, charges = 1, class = "DRUID", type = 2}, --Survival Instincts
[740] = {cooldown = 180, duration = 8, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Tranquility
[77761] = {cooldown = 120, duration = 8, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Stampeding Roar
[61336] = {cooldown = 120, duration = 6, specs = {103, 104}, talent = false, charges = 1, class = "DRUID", type = 2}, --Survival Instincts
[740] = {cooldown = 180, duration = 8, specs = {105}, talent = false, charges = 1, class = "DRUID", type = 4}, --Tranquility
[132469] = {cooldown = 30, duration = 0, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 8}, --Typhoon
[102793] = {cooldown = 60, duration = 10, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 8}, --Ursol's Vortex
[124974] = {cooldown = 90, duration = 0, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 3}, --Nature's Vigil
[106898] = {cooldown = 120, duration = 8, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 5}, --Stampeding Roar
--death knight
-- 252 - Unholy
-- 251 - Frost
-- 252 - Blood
[383269] = {cooldown = 120, duration = 12, specs = {250, 251, 252}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Abomination Limb
[48707] = {cooldown = 60, duration = 10, specs = {250, 251, 252}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Anti-Magic Shell
[51052] = {cooldown = 120, duration = 10, specs = {250, 251, 252}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 4}, --Anti-Magic Zone
@@ -476,7 +488,6 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
--demon hunter
-- 577 - Havoc
-- 581 - Vengance
[198589] = {cooldown = 60, duration = 10, specs = {577}, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Blur
[320341] = {cooldown = 90, duration = 0, specs = {581}, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Bulk Extraction
[179057] = {cooldown = 60, duration = 2, specs = {577}, talent = false, charges = 1, class = "DEMONHUNTER", type = 8}, --Chaos Nova
@@ -492,6 +503,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
[202137] = {cooldown = 60, duration = 8, specs = {581}, talent = false, charges = 1, class = "DEMONHUNTER", type = 6}, --Sigil of Silence
[263648] = {cooldown = 30, duration = 12, specs = {581}, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Soul Barrier
[188501] = {cooldown = 30, duration = 10, specs = {577, 581}, talent = false, charges = 1, class = "DEMONHUNTER", type = 5}, --Spectral Sight
[370965] = {cooldown = 90, duration = 0, specs = {577, 581}, talent = false, charges = 1, class = "DEMONHUNTER", type = 1}, --The Hunt
--mage
-- 62 - Arcane
@@ -517,7 +529,6 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
-- 256 - Discipline
-- 257 - Holy
-- 258 - Shadow
[200183] = {cooldown = 120, duration = 20, specs = {257}, talent = false, charges = 1, class = "PRIEST", type = 2}, --Apotheosis
[19236] = {cooldown = 90, duration = 10, specs = {256, 257, 258}, talent = false, charges = 1, class = "PRIEST", type = 2}, --Desperate Prayer
[47585] = {cooldown = 120, duration = 6, specs = {258}, talent = false, charges = 1, class = "PRIEST", type = 2}, --Dispersion
@@ -547,7 +558,6 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
-- 259 - Assasination
-- 260 - Outlaw
-- 261 - Subtlety
[13750] = {cooldown = 180, duration = 20, specs = {260}, talent = false, charges = 1, class = "ROGUE", type = 1}, --Adrenaline Rush
[2094] = {cooldown = 120, duration = 60, specs = {259, 260, 261}, talent = false, charges = 1, class = "ROGUE", type = 8}, --Blind
[31224] = {cooldown = 120, duration = 5, specs = {259, 260, 261}, talent = false, charges = 1, class = "ROGUE", type = 2}, --Cloak of Shadows
@@ -562,7 +572,11 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = {
[79140] = {cooldown = 120, duration = 20, specs = {259}, talent = false, charges = 1, class = "ROGUE", type = 1}, --Vendetta
}
--this table store all cooldowns the player currently have available
LIB_OPEN_RAID_PLAYERCOOLDOWNS = {}
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 {};
+2 -2
View File
@@ -6,8 +6,8 @@
local version, build, date, tocversion = GetBuildInfo()
_detalhes.build_counter = 10144
_detalhes.alpha_build_counter = 10144 --if this is higher than the regular counter, use it instead
_detalhes.build_counter = 10205
_detalhes.alpha_build_counter = 10205 --if this is higher than the regular counter, use it instead
_detalhes.dont_open_news = true
_detalhes.game_version = version
_detalhes.userversion = version .. " " .. _detalhes.build_counter
+4 -3
View File
@@ -565,10 +565,11 @@
flag = 0x514
else
for playerName in text:gmatch("([^%s]+)") do
local isInRaid = _detalhes.tabela_vigente.raid_roster[playerName]
if (isInRaid) then
playerName = playerName:gsub(",", "")
local playerIsOnRaidCache = _detalhes.tabela_vigente.raid_roster[playerName]
if (playerIsOnRaidCache) then
serial = UnitGUID(playerName)
nome = text
nome = playerName
flag = 0x514
break
end
+43 -3
View File
@@ -3015,10 +3015,36 @@ function Details.FillTableWithPlayerSpells(completeListOfSpells)
end
end
function Details.SavePlayTimeOnClass()
local className = select(2, UnitClass("player"))
if (className) then
--played time by expansion
local expansionLevel = GetExpansionLevel()
local expansionTable = Details.class_time_played[expansionLevel]
if (not expansionTable) then
expansionTable = {}
Details.class_time_played[expansionLevel] = expansionTable
end
local playedTime = expansionTable[className] or 0
expansionTable[className] = playedTime + GetTime() - Details.GetStartupTime()
end
end
function Details.GetPlayTimeOnClass()
local className = select(2, UnitClass("player"))
if (className) then
local playedTime = Details.class_time_played[className]
--played time by expansion
local expansionLevel = GetExpansionLevel()
local expansionTable = Details.class_time_played[expansionLevel]
if (not expansionTable) then
expansionTable = {}
Details.class_time_played[expansionLevel] = expansionTable
end
local playedTime = expansionTable[className]
if (playedTime) then
playedTime = playedTime + (GetTime() - Details.GetStartupTime())
return playedTime
@@ -3047,8 +3073,14 @@ timePlayerFrame:SetScript("OnEvent", function()
--C_Timer.After(0, function() print(Details.GetPlayTimeOnClassString()) end)
end)
--game freeze prevention, there are people calling UpdateAddOnMemoryUsage() making the game client on the end user to freeze, this is bad, really bad.
--Details! replace the function call with one that do the same thing, but warns the player if the function freezes the client too many times.
local stutterCounter = 0
local bigStutterCounter = 0
local UpdateAddOnMemoryUsage_Original = _G.UpdateAddOnMemoryUsage
Details.UpdateAddOnMemoryUsage_Original = _G.UpdateAddOnMemoryUsage
--to ignore this, use /run _G["UpdateAddOnMemoryUsage"] = Details.UpdateAddOnMemoryUsage_Original or add to any script that run on login
_G["UpdateAddOnMemoryUsage"] = function()
local currentTime = debugprofilestop()
UpdateAddOnMemoryUsage_Original()
@@ -3061,6 +3093,14 @@ _G["UpdateAddOnMemoryUsage"] = function()
return
end
if (deltaTime >= 500) then
bigStutterCounter = bigStutterCounter + 1
if (bigStutterCounter >= 6) then
Details:Msg("an addon made your game freeze for more than a half second, use '/details perf' to know more.")
bigStutterCounter = -10000 --make this msg appear only once
end
end
stutterCounter = stutterCounter + 1
local stutterDegree = 0
if (stutterCounter > 60) then
@@ -3077,7 +3117,7 @@ _G["UpdateAddOnMemoryUsage"] = function()
stutterDegree = 3
end
stutterCounter = 0
stutterCounter = -10000 --make this msg appear only once
end
Details.performanceData = {
@@ -3115,7 +3155,7 @@ function Details:HandleRogueCombatSpecIconByGameVersion()
end
end
function CopyText(text)
function CopyText(text) --[[GLOBAL]]
if (not Details.CopyTextField) then
Details.CopyTextField = CreateFrame("Frame", "DetailsCopyText", UIParent, "BackdropTemplate")
Details.CopyTextField:SetHeight(14)
+5 -8
View File
@@ -4938,10 +4938,10 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
if (zoneType == "party" or zoneType == "raid") then
_is_in_instance = true
if (DetailsFramework.IsDragonflight()) then
Details:Msg("friendly reminder to enabled combat logs (/combatlog) if you're recording them (Dragonflight Beta).")
Details:Msg("and if you wanna help, you may post them on Details! discord as well.")
end
--if (DetailsFramework.IsDragonflight()) then
-- Details:Msg("friendly reminder to enabled combat logs (/combatlog) if you're recording them (Dragonflight Beta).")
-- Details:Msg("and if you wanna help, you may post them on Details! discord as well.")
--end
end
if (_detalhes.last_zone_type ~= zoneType) then
@@ -5836,10 +5836,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
saver:SetScript("OnEvent", function(...)
--save the time played on this class, run protected
pcall(function()
local className = select(2, UnitClass("player"))
if (className) then
Details.class_time_played[className] = (Details.class_time_played[className] or 0) + GetTime() - Details.GetStartupTime()
end
Details.SavePlayTimeOnClass()
end)
local currentStep = 0
+1 -1
View File
@@ -555,7 +555,7 @@ end
DF:SetFontSize(warning1, 14)
local animationHub = DF:CreateAnimationHub(warning1)
local anim1 = DF:CreateAnimation(animationHub, "rotation", 1, 0, 35)
anim1:SetEndDelay(math.huge)
anim1:SetEndDelay(10000000)
anim1:SetSmoothProgress(1)
animationHub:Play()
animationHub:Pause()
+1
View File
@@ -2057,6 +2057,7 @@ function Details:HandleTextsOnMouseClick(row, type)
end
local setBarValue = function(self, value)
value = Clamp(value, 0, 100)
self.statusbar:SetValue(value)
self.statusbar.value = value
if (self.using_upper_3dmodels) then
@@ -1,4 +1,4 @@
## Interface: 90207
## Interface: 100000
## Title: Details!: Storage
## Notes: Stores information for Details! Damage Meter
## DefaultState: Enabled
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,4 @@
## Interface: 90207
## Interface: 100000
## Title: Details!: Encounter Breakdown (plugin)
## Notes: Show detailed information about a boss encounter. Also provide damage per phase, graphic charts, easy weakauras creation.
## RequiredDeps: Details
+48 -46
View File
@@ -295,7 +295,7 @@ local CreatePluginFrames = function()
local runeIndicator = DF:CreateImage(line, "", scrollLineHeight, scrollLineHeight)
--no pre pot
--local PrePotIndicator = DF:CreateImage(line, "", scroll_line_height, scroll_line_height)
--local PrePotIndicator = DF:CreateImage (line, "", scroll_line_height, scroll_line_height)
--using details!
--local DetailsIndicator = DF:CreateImage(line, "", scroll_line_height, scroll_line_height)
@@ -683,7 +683,7 @@ local CreatePluginFrames = function()
end
end
tinsert(PlayerData, {unitName, unitClassID,
tinsert (PlayerData, {unitName, unitClassID,
Name = unitName,
UnitNameRealm = unitNameWithRealm,
Class = unitClass,
@@ -727,7 +727,7 @@ local CreatePluginFrames = function()
raidCheckFrame:SetScript("OnUpdate", updateRaidCheckFrame)
end)
DetailsRaidCheck.ToolbarButton:SetScript("OnLeave", function(self)
DetailsRaidCheck.ToolbarButton:SetScript("OnLeave", function (self)
raidCheckFrame:SetScript("OnUpdate", nil)
raidCheckFrame:Hide()
end)
@@ -796,53 +796,55 @@ local CreatePluginFrames = function()
local function handleAuraBuff(aura)
local auraInfo = C_UnitAuras.GetAuraDataByAuraInstanceID("player", aura.auraInstanceID)
local buffName = auraInfo.name
local spellId = auraInfo.spellId
if (auraInfo) then
local buffName = auraInfo.name
local spellId = auraInfo.spellId
if (buffName) then
local flashInfo = flaskList[spellId]
if (flashInfo) then
local flaskTier = openRaidLib.GetFlaskTierFromAura(auraInfo)
DetailsRaidCheck.unitsWithFlaskTable[unitSerial] = {spellId, flaskTier, auraInfo.icon}
consumableTable.Flask = consumableTable.Flask + 1
end
local foodInfo = foodInfoList[spellId]
if (DetailsRaidCheck.db.food_tier1) then
if (foodInfo) then
local foodTier = openRaidLib.GetFoodTierFromAura(auraInfo)
DetailsRaidCheck.unitWithFoodTable[unitSerial] = {spellId, foodTier or 1, auraInfo.icon}
consumableTable.Food = consumableTable.Food + 1
if (buffName) then
local flashInfo = flaskList[spellId]
if (flashInfo) then
local flaskTier = openRaidLib.GetFlaskTierFromAura(auraInfo)
DetailsRaidCheck.unitsWithFlaskTable[unitSerial] = {spellId, flaskTier, auraInfo.icon}
consumableTable.Flask = consumableTable.Flask + 1
end
end
if (DetailsRaidCheck.db.food_tier2) then
if (foodInfo) then
local foodTier = openRaidLib.GetFoodTierFromAura(auraInfo)
if (foodTier and foodTier >= 2) then
DetailsRaidCheck.unitWithFoodTable[unitSerial] = {spellId, foodTier, auraInfo.icon}
local foodInfo = foodInfoList[spellId]
if (DetailsRaidCheck.db.food_tier1) then
if (foodInfo) then
local foodTier = openRaidLib.GetFoodTierFromAura(auraInfo)
DetailsRaidCheck.unitWithFoodTable[unitSerial] = {spellId, foodTier or 1, auraInfo.icon}
consumableTable.Food = consumableTable.Food + 1
end
end
end
if (DetailsRaidCheck.db.food_tier3) then
if (foodInfo) then
local foodTier = openRaidLib.GetFoodTierFromAura(auraInfo)
if (foodTier and foodTier >= 3) then
DetailsRaidCheck.unitWithFoodTable[unitSerial] = {spellId, foodTier, auraInfo.icon}
consumableTable.Food = consumableTable.Food + 1
if (DetailsRaidCheck.db.food_tier2) then
if (foodInfo) then
local foodTier = openRaidLib.GetFoodTierFromAura(auraInfo)
if (foodTier and foodTier >= 2) then
DetailsRaidCheck.unitWithFoodTable[unitSerial] = {spellId, foodTier, auraInfo.icon}
consumableTable.Food = consumableTable.Food + 1
end
end
end
end
if (runeIds[spellId]) then
DetailsRaidCheck.havefocusaug_table[unitSerial] = spellId
end
if (DetailsRaidCheck.db.food_tier3) then
if (foodInfo) then
local foodTier = openRaidLib.GetFoodTierFromAura(auraInfo)
if (foodTier and foodTier >= 3) then
DetailsRaidCheck.unitWithFoodTable[unitSerial] = {spellId, foodTier, auraInfo.icon}
consumableTable.Food = consumableTable.Food + 1
end
end
end
if (buffName == localizedFoodDrink) then
DetailsRaidCheck.iseating_table[unitSerial] = true
if (runeIds[spellId]) then
DetailsRaidCheck.havefocusaug_table[unitSerial] = spellId
end
if (buffName == localizedFoodDrink) then
DetailsRaidCheck.iseating_table[unitSerial] = true
end
end
end
end
@@ -903,21 +905,21 @@ local buildOptionsPanel = function()
{
type = "toggle",
get = function() return DetailsRaidCheck.db.pre_pot_healers end,
set = function(self, fixedparam, value) DetailsRaidCheck.db.pre_pot_healers = value end,
set = function (self, fixedparam, value) DetailsRaidCheck.db.pre_pot_healers = value end,
desc = "If enabled, pre potion for healers are also shown.",
name = "Track Healers Pre Pot"
},
{
type = "toggle",
get = function() return DetailsRaidCheck.db.pre_pot_tanks end,
set = function(self, fixedparam, value) DetailsRaidCheck.db.pre_pot_tanks = value end,
set = function (self, fixedparam, value) DetailsRaidCheck.db.pre_pot_tanks = value end,
desc = "If enabled, pre potion for tanks are also shown.",
name = "Track Tank Pre Pot"
},
{
type = "toggle",
get = function() return DetailsRaidCheck.db.mythic_1_4 end,
set = function(self, fixedparam, value) DetailsRaidCheck.db.mythic_1_4 = value end,
set = function (self, fixedparam, value) DetailsRaidCheck.db.mythic_1_4 = value end,
desc = "When raiding on Mythic difficult, only check the first 4 groups.",
name = "Mythic 1-4 Group Only"
},
@@ -928,21 +930,21 @@ local buildOptionsPanel = function()
{
type = "toggle",
get = function() return DetailsRaidCheck.db.food_tier1 end,
set = function(self, fixedparam, value) DetailsRaidCheck.db.food_tier1 = value end,
set = function (self, fixedparam, value) DetailsRaidCheck.db.food_tier1 = value end,
desc = "Consider players using Tier 1 food.",
name = "Food Tier 1 [41]"
},
{
type = "toggle",
get = function() return DetailsRaidCheck.db.food_tier2 end,
set = function(self, fixedparam, value) DetailsRaidCheck.db.food_tier2 = value end,
set = function (self, fixedparam, value) DetailsRaidCheck.db.food_tier2 = value end,
desc = "Consider players using Tier 2 food.",
name = "Food Tier 2 [55]"
},
{
type = "toggle",
get = function() return DetailsRaidCheck.db.food_tier3 end,
set = function(self, fixedparam, value) DetailsRaidCheck.db.food_tier3 = value end,
set = function (self, fixedparam, value) DetailsRaidCheck.db.food_tier3 = value end,
desc = "Consider players using Tier 3 food.",
name = "Food Tier 3 [>= 75]"
},
@@ -1003,7 +1005,7 @@ function DetailsRaidCheck:OnEvent(_, event, ...)
C_Timer.After(1, function()
--install
local install, savedData, isEnabled = _G.Details:InstallPlugin("TOOLBAR", Loc["STRING_RAIDCHECK_PLUGIN_NAME"], [[Interface\Buttons\UI-CheckBox-Check]], DetailsRaidCheck, "DETAILS_PLUGIN_RAIDCHECK", MINIMAL_DETAILS_VERSION_REQUIRED, "Terciob", version, defaultSettings)
if (type(install) == "table" and install.error) then
if (type (install) == "table" and install.error) then
return print(install.error)
end
@@ -1,4 +1,4 @@
## Interface: 90207
## Interface: 100000
## Title: Details!: Raid Check (plugin)
## Notes: Show talents and item level for all members in your group, also shows food and flask state.
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 90207
## Interface: 100000
## Title: Details!: Streamer (plugin)
## Notes: Show which spells you are casting, viewers can see what are you doing and follow your steps.
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 90207
## Interface: 100000
## Title: Details!: Tiny Threat (plugin)
## Notes: Threat meter plugin, show threat for group members in the window. Select it from the Plugin menu in the Orange Cogwheel.
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 90207
## Interface: 100000
## Title: Details!: Vanguard (plugin)
## Notes: Show the health and debuffs for tanks in your group.
## SavedVariablesPerCharacter: _detalhes_databaseVanguard