-Lot of stuff it works.

This commit is contained in:
Relintai 2016-05-06 15:27:33 +02:00
parent 9450c23285
commit 742b5fbdb7
4 changed files with 658 additions and 1 deletions

241
Vect.lua Normal file
View File

@ -0,0 +1,241 @@
--"Globals"
local ALLOCATE_FRAME_NUM = 5;
local aceDB = LibStub("AceDB-3.0")
local aceCDialog = LibStub("AceConfigDialog-3.0")
local aceConfig = LibStub("AceConfig-3.0")
local libSharedMedia = LibStub("LibSharedMedia-3.0")
Vect.targets = {
["target"] = nil,
["focus"] = nil
}
Vect.cds = {}
Vect.frames = {
["target"] = {},
["focus"] = {}
}
Vect.defaults = {
profile = {
enabled = true,
locked = true,
spellDebug = false;
target = {
enabled = true,
size = 23,
xPos = -150,
yPos = -125
},
focus = {
enabled = true,
size = 23,
xPos = 200,
yPos = -28
}
}
}
function Vect:Reset()
self.cds = {}
self.target = {unitGUID = -1, timers = {}}
self.focus = {unitGUID = -1, timers = {}}
end
function Vect:OnInitialize()
self.db = aceDB:New("VectDB", self.defaults);
self.db.RegisterCallback(self, "OnProfileChanged", function() self:ApplySettings() end)
self.db.RegisterCallback(self, "OnProfileCopied", function() self:ApplySettings() end)
self.db.RegisterCallback(self, "OnProfileReset", function() self:ApplySettings() end)
self:Print(self.appName .. " v. " .. Vect.version .. ". Chat command is /vect");
--AceConfig:RegisterOptionsTable(self.appName, self:getOptions())
self:RegisterChatCommand("vect", "ChatCommand")
end
function Vect:OnEnable()
--local db = self.db.profile
self:Reset()
self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
self:RegisterEvent("PLAYER_TARGET_CHANGED")
self:RegisterEvent("PLAYER_FOCUS_CHANGED")
self:CreateFrames("target");
self:CreateFrames("focus");
self:ApplySettings();
end
function Vect:OnDisable()
--TODO: cleanup
end
function Vect:ChatCommand(input)
--TODO
end
function Vect:COMBAT_LOG_EVENT_UNFILTERED(_, timestamp, eventType, srcGUID, srcName, srcFlags,
dstGUID, dstName, dstFlags, spellID, spellName, spellSchool,
detail1, detail2, detail3)
local db = Vect.db.profile;
if db["spellDebug"] then
self:Print("eventType: " .. eventType .. " id: " .. spellID .. " spellName: " .. spellName);
end
if eventType == "SPELL_CAST_SUCCESS" or eventType == "SPELL_AURA_APPLIED" then
--self:Print("id: " .. spellID .. " spellName: " .. spellName);
if Vect.spells[spellID] then
Vect:AddCd(srcGUID, spellID);
end
end
end
function Vect:PLAYER_TARGET_CHANGED()
local unitGUID = UnitGUID("target");
self.targets["target"] = unitGUID;
self:ReassignCds("target");
end
function Vect:PLAYER_FOCUS_CHANGED()
local unitGUID = UnitGUID("focus");
self.targets["focus"] = unitGUID;
self:ReassignCds("focus");
end
function Vect:PLAYER_ENTERING_WORLD()
end
--gets called when a cd is finished, reassigns the cds to frames.
function Vect:ReassignCds(which)
--first hide all
for i = 1, 23 do
local frame = Vect.frames[which][i]["frame"];
frame:Hide();
end
--check if we have cooldown for that unit
if not self.cds[self.targets[which]] then return end
--let's fill them up
local i = 1;
for k, v in pairs(self.cds[self.targets[which]]) do
local frame = Vect.frames[which][i]["frame"];
local text = Vect.frames[which][i]["texture"];
text:SetTexture(v[4]);
local CoolDown = Vect.frames[which][i]["cooldown"];
CoolDown:SetCooldown(v[1], v[3]);
frame:Show();
i = i + 1;
end
end
function Vect:AddCd(srcGUID, spellID)
local db = Vect.db.profile;
if not db["enabled"] then return end;
if not Vect.cds[srcGUID] then Vect.cds[srcGUID] = {} end
local cd, reset = Vect.spells[spellID][1], Vect.spells[spellID][2];
local spellName, spellRank, spellIcon = GetSpellInfo(spellID);
local currentTime = GetTime();
local endTime = currentTime + cd;
Vect.cds[srcGUID][spellID] = {
currentTime,
endTime,
cd,
spellIcon,
spellID
}
--self:Print(Vect.cds[srcGUID][spellID][1] .. " " .. Vect.cds[srcGUID][spellID][2] .. " " .. Vect.cds[srcGUID][spellID][3]);
if reset then
Vect:CdRemoval(srcGUID, reset);
end
--self:Print(self.targets["target"]);
--self:Print(s
if self.targets["target"] == srcGUID then
self:ReassignCds("target");
end
if self.targets["focus"] == srcGUID then
self:ReassignCds("focus");
end
end
function Vect:CdRemoval(srcGUID, resetArray)
if not self.cds[srcGUID] then return end
for k, v in pairs(self.cds[srcGUID]) do
for j, x in pairs(resetArray) do
if v[5] == x then
--self:Print("Removed cd: " .. v[5]);
self.cds[srcGUID][v[5]] = nil;
end
end
end
end
function Vect:CreateFrames(which)
for i = 1, 23 do
local frame = CreateFrame("Frame", nil, UIParent, nil);
frame:SetFrameStrata("BACKGROUND");
frame:SetWidth(150);
frame:SetHeight(150);
if i == 1 then
frame:SetScript("OnUpdate", function() self:VOnTimerUpdate(which) end)
end
local text = frame:CreateTexture();
text:SetTexture("Interface\\Icons\\Spell_Arcane_Blink")
text:SetAllPoints(frame);
frame.texture = text;
local CoolDown = CreateFrame("Cooldown", "VectCoolDown" .. i, frame);
CoolDown:SetAllPoints()
CoolDown:SetCooldown(GetTime(), 50);
--frame:Show();
Vect.frames[which][i] = {}
Vect.frames[which][i]["frame"] = frame;
Vect.frames[which][i]["texture"] = text;
Vect.frames[which][i]["cooldown"] = CoolDown;
end
end
function Vect:MoveTimersStop(which, x, y, size)
for i = 1, 23 do
local frame = Vect.frames[which][i]["frame"];
frame:ClearAllPoints();
frame:SetFrameStrata("BACKGROUND");
frame:SetWidth(size);
frame:SetHeight(size);
local text = Vect.frames[which][i]["texture"];
text:SetAllPoints(frame);
frame.texture = text;
frame:SetPoint("CENTER", x + ((i - 1) * size), y);
local CoolDown = Vect.frames[which][i]["cooldown"];
CoolDown:SetAllPoints();
--frame:Show();
end
end
function Vect:ApplySettings()
local db = Vect.db.profile;
--self:Print(db["target"]["yPos"]);
Vect:MoveTimersStop("target", db["target"]["xPos"], db["target"]["yPos"], db["target"]["size"]);
Vect:MoveTimersStop("focus", db["focus"]["xPos"], db["focus"]["yPos"], db["focus"]["size"]);
Vect:ReassignCds("target");
Vect:ReassignCds("focus");
end
function Vect:VOnTimerUpdate(which)
--check if we have cooldown for that unit
if not self.cds[self.targets[which]] then return end
--let's check if one of the cooldowns finished
for k, v in pairs(self.cds[self.targets[which]]) do
if v[2] <= GetTime() then
self.cds[self.targets[which]][v[5]] = nil;
self:ReassignCds(which);
end
end
end

View File

@ -2,11 +2,13 @@
## Author: Verot
## Name: Vect
## Title: Vect
## Notes: Verot's Enemy cooldown tracker.
## Notes: Verot's Enemy Cooldown Tracker.
## DefaultState: Enabled
## OptionalDeps: Ace3, LibSharedMedia-3.0
## SavedVariables: VectDB
## Version: 0.1
embeds.xml
data\global.lua
data\spells.lua
Vect.lua

4
data/global.lua Normal file
View File

@ -0,0 +1,4 @@
Vect = LibStub("AceAddon-3.0"):NewAddon("Vect", "AceConsole-3.0", "AceEvent-3.0")
Vect.appName = "Vect"
Vect.dbName = "VectDB"
Vect.version = "0.1"

410
data/spells.lua Normal file
View File

@ -0,0 +1,410 @@
Vect.spells = {
--Trinkets
[42292] = {120, nil}, --PvP Trinket
--Other Stuff
[54861] = {180, nil}, --Rocket Boots (Enchant)
--Racials (War Stomp no combatlog entry)
[59752] = {120, nil}, --Every Man For Himself
[7744] = {120, nil}, --Will of the Forsaken
[25046] = {120, nil}, --Arcane Torrent
[65116] = {120, nil}, --Stoneform
[58984] = {120, nil}, --Shadowmeld
[20589] = {105, nil}, --Escape Artist
[28880] = {180, nil}, --Gift of the Naaru
--Warrior
--Total: 20
--TODO: charge r1,r2
--Arms
[46924] = {90, nil}, --BladeStrom
[11578] = {15, nil}, --Charge rank 3
[57755] = {60, nil}, --Heroic Throw
[20230] = {240, nil}, --Retaliation
[64382] = {300, nil}, --Shattering Throw
[12328] = {30, nil}, --Sweeping Strikes
--Fury
[12292] = {121, nil}, --Death Wish
[55694] = {180, nil}, --Enraged Regeneration
[60970] = {45, nil}, --Heroic Fury
[20252] = {20, nil}, --Intercept
[5246] = {120, nil}, --Intimidating Shout
[6552] = {10, nil}, --Pummel
[1719] = {161, nil}, --Recklessness
--Protection
[12809] = {30, nil}, --Concussion Blow
[676] = {40, nil}, --Disarm
[3411] = {30, nil}, --Intervene
[12975] = {180, nil}, --Last Stand
[72] = {12, nil}, --Shield Bash
[871] = {240, nil}, --Shield Wall
[46968] = {20, nil}, --Shockwave
[23920] = {10, nil}, --Spell Reflection
--Paladin
--Total: 16
--Holy
[31821] = {120, nil}, --Aura Mastery
[20216] = {120, nil}, --Divine Favor
[31842] = {180, nil}, --Divine Illumination
[54428] = {60, nil}, --Divine Plea
[2812] = {20, nil}, --Holy Wrath r1
[10318] = {20, nil}, --Holy Wrath r2
[27139] = {20, nil}, --Holy Wrath r3
[48816] = {20, nil}, --Holy Wrath r4
[48817] = {20, nil}, --Holy Wrath r5
[633] = {960, nil}, --Lay on Hands r1
[2800] = {960, nil}, --Lay on Hands r2
[10310] = {960, nil}, --Lay on Hands r3
[27154] = {960, nil}, --Lay on Hands r4
[48788] = {960, nil}, --Lay on Hands r5
--Protection
[31935] = {30, nil}, --Avenger's Shield r1
[32699] = {30, nil}, --Avenger's Shield r2
[32700] = {30, nil}, --Avenger's Shield r3
[48826] = {30, nil}, --Avenger's Shield r4
[48827] = {30, nil}, --Avenger's Shield r5
[498] = {120, nil}, --Divine Protection
[64205] = {120, nil}, --Divine Sacrifice
[642] = {240, nil}, --Divine Shield
[853] = {30, nil}, --Hammer of justice r1
[5588] = {30, nil}, --Hammer of justice r2
[5589] = {30, nil}, --Hammer of justice r3
[10308] = {30, nil}, --Hammer of justice r4
[1044] = {25, nil}, --Hand of Freedom
[1022] = {180, nil}, --Hand of Protection r1
[5599] = {180, nil}, --Hand of Protection r2
[10278] = {180, nil}, --Hand of Protection r3
[6940] = {120, nil}, --Hand of Sacrifice
--Retribution
[31884] = {120, nil}, --Avenging Wrath
[20066] = {60, nil}, --Repentance
--Hunter
--Total: 15
--Feign Death No Combat log entry
--Pet
[53480] = {42, nil}, --Roar of Sacrifice
--Beast Mastery
[19574] = {84, nil}, --Bestial Wrath
[19577] = {42, nil}, --Intimidation
[53271] = {60, nil}, --Master's Call
[14327] = {30, nil}, --Scare Beast
--Marksman
[1543] = {20, nil}, --Flare
[3045] = {180, nil}, --Rapid Fire
[23989] = {180,
{19577,53271,14327, 1543,3045,34490,3674,63668,63669,
63670,63671,63672,19263,781,13813,14316,14317,
27025,49066,49067,60192,1499,14310,14311,13809,
13795,14302,14303,14304,14305,27023,49055,49056,
19503,34600,19386,24132,24133,27068,49011,49012}}, --Readiness
[34490] = {20, nil}, --Silencing Shot
--Survival
[3674] = {24, nil}, --Black Arrow r1
[63668] = {24, nil}, --Black Arrow r2
[63669] = {24, nil}, --Black Arrow r3
[63670] = {24, nil}, --Black Arrow r4
[63671] = {24, nil}, --Black Arrow r5
[63672] = {24, nil}, --Black Arrow r6
[19263] = {90, nil}, --Deterrence
[781] = {16, nil}, --Disengage
[13813] = {24, nil}, --Explosive Trap r1
[14316] = {24, nil}, --Explosive Trap r2
[14317] = {24, nil}, --Explosive Trap r3
[27025] = {24, nil}, --Explosive Trap r4
[49066] = {24, nil}, --Explosive Trap r5
[49067] = {24, nil}, --Explosive Trap r6
--Feign Death
[60192] = {24, nil}, --Freezing Arrow
[1499] = {24, nil}, --Freezing Trap r1
[14310] = {24, nil}, --Freezing Trap r2
[14311] = {24, nil}, --Freezing Trap r3
[13809] = {24, nil}, --Frost Trap
[13795] = {24, nil}, --Immolation Trap r1
[14302] = {24, nil}, --Immolation Trap r2
[14303] = {24, nil}, --Immolation Trap r3
[14304] = {24, nil}, --Immolation Trap r4
[14305] = {24, nil}, --Immolation Trap r5
[27023] = {24, nil}, --Immolation Trap r6
[49055] = {24, nil}, --Immolation Trap r7
[49056] = {24, nil}, --Immolation Trap r8
[19503] = {30, nil}, --Scatter Shot
[34600] = {24, nil}, --Snake Trap
[19386] = {60, nil}, --Wyvern Sting r1
[24132] = {60, nil}, --Wyvern Sting r2
[24133] = {60, nil}, --Wyvern Sting r3
[27068] = {60, nil}, --Wyvern Sting r4
[49011] = {60, nil}, --Wyvern Sting r5
[49012] = {60, nil}, --Wyvern Sting r6
--Rogue
--Total: 15
--Assassination
[14177] = {180, nil}, --Cold Blood
[51722] = {60, nil}, --Dismantle
[408] = {20, nil}, --Kidney Shot r1
[8643] = {20, nil}, --Kidney Shot r2
--Combat
[13750] = {180, nil}, --Adrenaline Rush
[13877] = {120, nil}, --Blade Flurry
[5277] = {120, nil}, --Evasion r1
[26669] = {120, nil}, --Evasion r2
[1766] = {10, nil}, --Kick
[51690] = {120, nil}, --Killing Spree
[2983] = {120, nil}, --Sprint r1
[8696] = {120, nil}, --Sprint r2
[11305] = {120, nil}, --Sprint r3
--Subtlety
[2094] = {120, nil}, --Blind
[31224] = {60, nil}, --Cloak of Shadows
[14185] = {300, {5277, 26669, 2983, 8696, 11305, 1856, 1857, 26889, 14177, 36554}}, --Preparation
[51713] = {60, nil}, --Shadow Dance
[36554] = {20, nil}, --Shadowstep
[1856] = {120, nil}, --Vanish r1
[1857] = {120, nil}, --Vanish r2
[26889] = {120, nil}, --Vanish r3
--Priest
--Total: 14
--Discipline
[6346] = {180, nil}, --Fear Ward
[14751] = {144, nil}, --Inner Focus
[33206] = {144, nil}, --Pain Supression
[10060] = {96, nil}, --Power infusion
--Holy
[19203] = {120, nil}, --Desperate Prayer r1
[19238] = {120, nil}, --Desperate Prayer r2
[19240] = {120, nil}, --Desperate Prayer r3
[19241] = {120, nil}, --Desperate Prayer r4
[19242] = {120, nil}, --Desperate Prayer r5
[19243] = {120, nil}, --Desperate Prayer r6
[25437] = {120, nil}, --Desperate Prayer r7
[48172] = {120, nil}, --Desperate Prayer r8
[48173] = {120, nil}, --Desperate Prayer r9
[64843] = {480, nil}, --Divine Hymn
[47788] = {180, nil}, --Guardian Spirit
[64901] = {360, nil}, --Hymn of Hope
--Shadow
[47585] = {75, nil}, --Dispersion
[586] = {24, nil}, --Fade
[64044] = {120, nil}, --Psychic Horror
[8122] = {26, nil}, --Psychic Scream r1
[8124] = {26, nil}, --Psychic Scream r2
[10888] = {26, nil}, --Psychic Scream r3
[10890] = {26, nil}, --Psychic Scream r4
[34433] = {180, nil}, --Shadowfiend
[15487] = {45, nil}, --Silence
--Death Knight
--Total: 18
--Blood
[49028] = {90, nil}, --Dancing Rune Weapon
[48743] = {120, nil}, --Death Pact
[49016] = {180, nil}, --Hysteria
[49005] = {180, nil}, --Mark of Blood
[48982] = {30, nil}, --Rune Tap
[47476] = {120, nil}, --Strangulate
[55233] = {60, nil}, --Vampiric Blood
--Frost
[47568] = {300, nil}, --Empower Rune Weapon
[49203] = {60, nil}, --Hungering Cold
[48792] = {120, nil}, --Icebound Fortitude
[49039] = {120, nil}, --Lichborne
[47528] = {10, nil}, --Mind Freeze
[51271] = {60, nil}, --Unbreakable Armor
--Unholy
[48707] = {45, nil}, --Anti-Magic Shell
[51052] = {120, nil}, --Anti-Magic Zone
[42650] = {360, nil}, --Army of the Dead
[49576] = {25, nil}, --Death Grip
[49206] = {180, nil}, --Summon Gargoyle
--Shaman
--Total: 17
--Elemental
[2484] = {10.5, nil}, --Earthbind Totem
[16166] = {180, nil}, --Elemental Mastery
[2894] = {600, nil}, --Fire Elemental Totem
[51514] = {45, nil}, --Hex
[5730] = {21, nil}, --Stoneclaw Totem r1
[6390] = {21, nil}, --Stoneclaw Totem r2
[6391] = {21, nil}, --Stoneclaw Totem r3
[6392] = {21, nil}, --Stoneclaw Totem r4
[10427] = {21, nil}, --Stoneclaw Totem r5
[10428] = {21, nil}, --Stoneclaw Totem r6
[25525] = {21, nil}, --Stoneclaw Totem r7
[58580] = {21, nil}, --Stoneclaw Totem r8
[58581] = {21, nil}, --Stoneclaw Totem r9
[58582] = {21, nil}, --Stoneclaw Totem r10
[51490] = {45, nil}, --Thunderstorm r1
[59156] = {45, nil}, --Thunderstorm r1
[59158] = {45, nil}, --Thunderstorm r1
[59159] = {45, nil}, --Thunderstorm r1
[57994] = {5, nil}, --Wind Shear
--Enhancement
[2825] = {300, nil}, --Bloodlust
[32182] = {300, nil}, --Heroism
[2062] = {600, nil}, --Earth Elemental Totem
[51533] = {180, nil}, --Feral Spirit
[58875] = {32, nil}, --Spirit Walk
[8177] = {13, nil}, --Grounding Totem
[30823] = {60, nil}, --Shamanistic Rage
--Restoration
[16190] = {300, nil}, --Mana Tide Totem
[16188] = {120, nil}, --Nature's Swiftness
[55198] = {180, nil}, --Tidal Force
---Mage
--Total: 18
--Freeze triggers combatlog event
--Arcane
[1953] = {15, nil}, --Blink
[2139] = {24, nil}, --Counterspell
[12051] = {120, nil}, --Evocation
[66] = {130, nil}, --Invisibility
[55342] = {180, nil}, --Mirror Image
[12043] = {85, nil}, --Presence of Mind
--Fire
[11113] = {30, nil}, --Blast Wave r1
[13018] = {30, nil}, --Blast Wave r2
[13019] = {30, nil}, --Blast Wave r3
[13020] = {30, nil}, --Blast Wave r4
[13021] = {30, nil}, --Blast Wave r5
[27133] = {30, nil}, --Blast Wave r6
[33933] = {30, nil}, --Blast Wave r7
[42944] = {30, nil}, --Blast Wave r8
[42945] = {30, nil}, --Blast Wave r9
[28682] = {120, nil}, --Combustion
[31661] = {20, nil}, --Dragon's Breath r1
[33041] = {20, nil}, --Dragon's Breath r2
[33042] = {20, nil}, --Dragon's Breath r3
[33043] = {20, nil}, --Dragon's Breath r4
[42949] = {20, nil}, --Dragon's Breath r5
[42950] = {20, nil}, --Dragon's Breath r6
[543] = {30, nil}, --Fire Ward r1
[8457] = {30, nil}, --Fire Ward r2
[8458] = {30, nil}, --Fire Ward r3
[10223] = {30, nil}, --Fire Ward r4
[10225] = {30, nil}, --Fire Ward r5
[27128] = {30, nil}, --Fire Ward r6
[43010] = {30, nil}, --Fire Ward r7
--Frost
[11958] = {384,
{44572, 122, 865, 6131, 10230, 27088, 42917, 6143, 8461, 8462,
10177, 28609, 32796, 43012, 11426, 13031, 13032, 13033,
27134, 33405, 43038, 43039, 45438, 12472, 31687}}, --Cold Snap
[44572] = {30, nil}, --Deep Freeze
[122] = {20, nil}, --Frost Nova r1
[865] = {20, nil}, --Frost Nova r2
[6131] = {20, nil}, --Frost Nova r3
[10230] = {20, nil}, --Frost Nova r4
[27088] = {20, nil}, --Frost Nova r5
[42917] = {20, nil}, --Frost Nova r6
[6143] = {30, nil}, --Frost Ward r1
[8461] = {30, nil}, --Frost Ward r2
[8462] = {30, nil}, --Frost Ward r3
[10177] = {30, nil}, --Frost Ward r4
[28609] = {30, nil}, --Frost Ward r5
[32796] = {30, nil}, --Frost Ward r6
[43012] = {30, nil}, --Frost Ward r7
[11426] = {24, nil}, --Ice Barrier r1
[13031] = {24, nil}, --Ice Barrier r2
[13032] = {24, nil}, --Ice Barrier r3
[13033] = {24, nil}, --Ice Barrier r4
[27134] = {24, nil}, --Ice Barrier r5
[33405] = {24, nil}, --Ice Barrier r6
[43038] = {24, nil}, --Ice Barrier r7
[43039] = {24, nil}, --Ice Barrier r8
[45438] = {240, nil}, --Ice Block
[12472] = {144, nil}, --Icy Veins
[31687] = {144, nil}, --Summon Water Elemental
--Warlock
--Total 10 (12 with pets)
--Affliction
[6789] = {120, nil}, --Death Coil r1
[17925] = {120, nil}, --Death Coil r2
[17962] = {120, nil}, --Death Coil r3
[27223] = {120, nil}, --Death Coil r4
[47859] = {120, nil}, --Death Coil r5
[47860] = {120, nil}, --Death Coil r6
[5484] = {40, nil}, --Howl of Terror r1
[17928] = {40, nil}, --Howl of Terror r2
--Demonology
[54785] = {45, nil}, --Demon Charge
[48020] = {30, nil}, --Demonic Circle: Teleport
[47193] = {42, nil}, --Demonic Empowerment
[18708] = {126, nil}, --Fel Domination
[50589] = {30, nil}, --Immolation Aura
[47241] = {130, nil}, --Metamorphosis
[6229] = {30, nil}, --Shadow Ward r1
[11739] = {30, nil}, --Shadow Ward r2
[11740] = {30, nil}, --Shadow Ward r3
[28610] = {30, nil}, --Shadow Ward r4
[47890] = {30, nil}, --Shadow Ward r5
[47891] = {30, nil}, --Shadow Ward r6
--Destruction
[30283] = {20, nil}, --Shadowfury r1
[30413] = {20, nil}, --Shadowfury r2
[30414] = {20, nil}, --Shadowfury r3
[47846] = {20, nil}, --Shadowfury r4
[47847] = {20, nil}, --Shadowfury r5
--Pets
[19647] = {24, nil}, --Spell Lock
[47986] = {60, nil}, --Sacrifice
--Druid
--Total: 18
--Typhoon only triggers combat log event, when it hits something
--Balance
[22812] = {60, nil}, --Barkskin
[33831] = {180, nil}, --Force of Nature
[29166] = {180, nil}, --Innervate
[16689] = {60, nil}, --Nature's Grasp r1
[16810] = {60, nil}, --Nature's Grasp r2
[16811] = {60, nil}, --Nature's Grasp r3
[16812] = {60, nil}, --Nature's Grasp r4
[16813] = {60, nil}, --Nature's Grasp r5
[17329] = {60, nil}, --Nature's Grasp r6
[27009] = {60, nil}, --Nature's Grasp r7
[53312] = {60, nil}, --Nature's Grasp r8
[48505] = {90, nil}, --Starfall r1
[53199] = {90, nil}, --Starfall r2
[53200] = {90, nil}, --Starfall r3
[53201] = {90, nil}, --Starfall r4
[61391] = {20, nil}, --Typhoon r1
[61390] = {20, nil}, --Typhoon r2
[61388] = {20, nil}, --Typhoon r3
[61387] = {20, nil}, --Typhoon r4
[53227] = {20, nil}, --Typhoon r5
--Feral
[5211] = {30, nil}, --Bash r1
[6798] = {30, nil}, --Bash r2
[8983] = {30, nil}, --Bash r3
[50334] = {180, nil}, --Berserk
[1850] = {180, nil}, --Dash r1
[9821] = {180, nil}, --Dash r2
[33357] = {180, nil}, --Dash r3
[5229] = {60, nil}, --Enrage
[16979] = {15, nil}, --Feral Charge - Bear
[49376] = {30, nil}, --Feral Charge - Cat
[22842] = {180, nil}, --Frenzied Regeneration
[22570] = {10, nil}, --Maim r1
[49802] = {10, nil}, --Maim r2
[61336] = {180, nil}, --Survival Instinct
[5217] = {30, nil}, --Tiger's Fury r1
[6793] = {30, nil}, --Tiger's Fury r2
[9845] = {30, nil}, --Tiger's Fury r3
[9856] = {30, nil}, --Tiger's Fury r4
[50212] = {30, nil}, --Tiger's Fury r5
[50213] = {30, nil}, --Tiger's Fury r6
--Restoration
[17116] = {180, nil}, --Nature's Swiftness
[18562] = {15, nil}, --Swiftmend
[740] = {192, nil}, --Tranquility r1
[8918] = {192, nil}, --Tranquility r2
[9862] = {192, nil}, --Tranquility r3
[9863] = {192, nil}, --Tranquility r4
[26983] = {192, nil}, --Tranquility r5
[48446] = {192, nil}, --Tranquility r6
[48447] = {192, nil} --Tranquility r7
}