You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.0 KiB
144 lines
4.0 KiB
--- ============================ HEADER ============================
|
|
--- ======= LOCALIZE =======
|
|
-- Addon
|
|
local addonName, addonTable = ...
|
|
-- HeroLib
|
|
local HL = HeroLib
|
|
local Cache = HeroCache
|
|
local HR = HeroRotation
|
|
local Unit = HL.Unit
|
|
local Player = Unit.Player
|
|
local Target = Unit.Target
|
|
local Spell = HL.Spell
|
|
local Item = HL.Item
|
|
local Mage = HR.Commons.Mage
|
|
-- Lua
|
|
local select = select
|
|
-- WoW API
|
|
local GetTime = GetTime
|
|
local C_Timer = C_Timer
|
|
|
|
--- ============================ CONTENT ============================
|
|
--- ======= NON-COMBATLOG =======
|
|
|
|
|
|
--- ======= COMBATLOG =======
|
|
--- Combat Log Arguments
|
|
------- Base -------
|
|
-- 1 2 3 4 5 6 7 8 9 10 11
|
|
-- TimeStamp, Event, HideCaster, SourceGUID, SourceName, SourceFlags, SourceRaidFlags, DestGUID, DestName, DestFlags, DestRaidFlags
|
|
|
|
------- Prefixes -------
|
|
--- SWING
|
|
-- N/A
|
|
|
|
--- SPELL & SPELL_PACIODIC
|
|
-- 12 13 14
|
|
-- SpellID, SpellName, SpellSchool
|
|
|
|
------- Suffixes -------
|
|
--- _CAST_START & _CAST_SUCCESS & _SUMMON & _RESURRECT
|
|
-- N/A
|
|
|
|
--- _CAST_FAILED
|
|
-- 15
|
|
-- FailedType
|
|
|
|
--- _AURA_APPLIED & _AURA_REMOVED & _AURA_REFRESH
|
|
-- 15
|
|
-- AuraType
|
|
|
|
--- _AURA_APPLIED_DOSE
|
|
-- 15 16
|
|
-- AuraType, Charges
|
|
|
|
--- _INTERRUPT
|
|
-- 15 16 17
|
|
-- ExtraSpellID, ExtraSpellName, ExtraSchool
|
|
|
|
--- _HEAL
|
|
-- 15 16 17 18
|
|
-- Amount, Overhealing, Absorbed, Critical
|
|
|
|
--- _DAMAGE
|
|
-- 15 16 17 18 19 20 21 22 23
|
|
-- Amount, Overkill, School, Resisted, Blocked, Absorbed, Critical, Glancing, Crushing
|
|
|
|
--- _MISSED
|
|
-- 15 16 17
|
|
-- MissType, IsOffHand, AmountMissed
|
|
|
|
------- Special -------
|
|
--- UNIT_DIED, UNIT_DESTROYED
|
|
-- N/A
|
|
|
|
--- End Combat Log Arguments
|
|
|
|
-- Arguments Variables
|
|
HL.RoPTime = 0
|
|
|
|
--------------------------
|
|
-------- Arcane ----------
|
|
--------------------------
|
|
|
|
HL:RegisterForSelfCombatEvent(
|
|
function (...)
|
|
DateEvent,_,_,_,_,_,_,DestGUID,_,_,_, SpellID = select(1,...);
|
|
if SpellID == 116014 and Player:GUID() == DestGUID then --void RuneofPower
|
|
HL.RoPTime = GetTime()
|
|
end
|
|
|
|
end
|
|
, "SPELL_AURA_APPLIED"
|
|
)
|
|
|
|
HL:RegisterForSelfCombatEvent(
|
|
function (...)
|
|
DateEvent,_,_,_,_,_,_,DestGUID,_,_,_, SpellID = select(1,...);
|
|
if SpellID == 116014 and Player:GUID() == DestGUID then --void erruption
|
|
HL.RoPTime = 0
|
|
end
|
|
end
|
|
, "SPELL_AURA_REMOVED"
|
|
)
|
|
|
|
--------------------------
|
|
-------- Frost -----------
|
|
--------------------------
|
|
|
|
local FrozenOrbFirstHit = true
|
|
local FrozenOrbHitTime = 0
|
|
|
|
HL:RegisterForSelfCombatEvent(function(...)
|
|
local spellID = select(12, ...)
|
|
if spellID == 84721 and FrozenOrbFirstHit then
|
|
FrozenOrbFirstHit = false
|
|
FrozenOrbHitTime = GetTime()
|
|
C_Timer.After(10, function()
|
|
FrozenOrbFirstHit = true
|
|
FrozenOrbHitTime = 0
|
|
end)
|
|
end
|
|
end, "SPELL_DAMAGE")
|
|
|
|
function Player:FrozenOrbGroundAoeRemains()
|
|
return math.max((FrozenOrbHitTime - (GetTime() - 10) - HL.RecoveryTimer()), 0)
|
|
end
|
|
|
|
local brain_freeze_active = false
|
|
|
|
HL:RegisterForSelfCombatEvent(function(...)
|
|
local spellID = select(12, ...)
|
|
if spellID == Spell.Mage.Frost.Flurry:ID() then
|
|
brain_freeze_active = Player:BuffUp(Spell.Mage.Frost.BrainFreezeBuff)
|
|
or Spell.Mage.Frost.BrainFreezeBuff:TimeSinceLastRemovedOnPlayer() < 0.1
|
|
end
|
|
end, "SPELL_CAST_SUCCESS")
|
|
|
|
function Player:BrainFreezeActive()
|
|
if self:IsCasting(Spell.Mage.Frost.Flurry) then
|
|
return false
|
|
else
|
|
return brain_freeze_active
|
|
end
|
|
end
|
|
|