local mod = DBM : NewMod ( 1751 , " DBM-Raids-Legion " , 3 , 786 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20240428104720 " )
mod : SetCreatureID ( 104881 )
mod : SetEncounterID ( 1871 )
mod : SetUsedIcons ( 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 )
mod : SetHotfixNoticeRev ( 16075 )
mod.respawnTime = 29
mod : RegisterCombat ( " combat " )
mod : RegisterEventsInCombat (
" SPELL_CAST_START 213853 213567 213564 213852 212735 213083 212492 230504 " ,
" SPELL_CAST_SUCCESS 230403 212492 213275 " ,
" SPELL_AURA_APPLIED 213864 216389 213867 213869 212531 213148 213569 212587 230951 212647 215458 " ,
" SPELL_AURA_APPLIED_DOSE 212647 215458 " ,
" SPELL_AURA_REMOVED 213569 230951 " ,
" SPELL_PERIODIC_DAMAGE 212736 213278 213504 230414 " ,
" SPELL_PERIODIC_MISSED 212736 213278 213504 230414 " ,
" SPELL_DAMAGE 213520 " ,
" SPELL_MISSED 213520 " ,
" UNIT_AURA player " ,
" UNIT_SPELLCAST_SUCCEEDED boss1 "
)
--[[
( ability.id = 213853 or ability.id = 213567 or ability.id = 213564 or ability.id = 213852 or ability.id = 212735 or ability.id = 213275 or ability.id = 213390 or ability.id = 213083 or ability.id = 212492 or ability.id = 230951 or ability.id = 230504 ) and type = " begincast " or
ability.id = 230403 and type = " cast " or
( ability.id = 213864 or ability.id = 216389 or ability.id = 213867 or ability.id = 213869 ) and type = " applybuff " or
( ability.id = 212531 or ability.id = 213148 ) and type = " applydebuff " or
ability.id = 230951 and type = " removebuff " or ability.id = 230414
--]]
--Phases/General
local warnFrostPhase = mod : NewSpellAnnounce ( 213864 , 2 , nil , nil , nil , nil , nil , 2 )
local warnFirePhase = mod : NewSpellAnnounce ( 213867 , 2 , nil , nil , nil , nil , nil , 2 )
local warnArcanePhase = mod : NewSpellAnnounce ( 213869 , 2 , nil , nil , nil , nil , nil , 2 )
local warnAnnihilate = mod : NewStackAnnounce ( 212492 , 2 , nil , " Tank " )
--Debuffs
local warnMarkOfFrostChosen = mod : NewTargetAnnounce ( 212531 , 3 )
local warnSearingBrandChosen = mod : NewTargetAnnounce ( 213148 , 3 )
--Animate Specials Temp, to avoid spam
local warnFrozenTempest = mod : NewCastAnnounce ( 213083 , 4 )
local warnArmageddon = mod : NewAddsLeftAnnounce ( 213568 , 2 )
--Mythic
local warnFelSoul = mod : NewSpellAnnounce ( 230951 , 3 )
local specWarnAnnihilate = mod : NewSpecialWarningCount ( 212492 , " Tank " , nil , nil , 3 , 2 )
local specWarnAnnihilateOther = mod : NewSpecialWarningTaunt ( 212492 , nil , nil , nil , 1 , 2 )
--Debuffs
local specWarnMarkOfFrost = mod : NewSpecialWarningYou ( 212531 , nil , nil , nil , 1 , 2 )
local yellMarkofFrost = mod : NewYell ( 212531 )
local specWarnFrostbitten = mod : NewSpecialWarningStack ( 212647 , nil , 6 , nil , nil , 1 , 6 )
local specWarnSearingBrand = mod : NewSpecialWarningMoveAway ( 213148 , nil , nil , nil , 1 , 2 )
local specWarnSearingBrandDodge = mod : NewSpecialWarningDodge ( 213148 , nil , nil , nil , 2 , 6 )
local specWarnArcaneOrb = mod : NewSpecialWarningDodge ( 213519 , nil , nil , nil , 2 , 2 )
--Detonates
local specWarnFrostdetonate = mod : NewSpecialWarningMoveAway ( 212735 , nil , nil , nil , 3 , 2 )
local yellFrostDetonate = mod : NewYell ( 212735 , 29870 ) --29870 "Detonate" short name
local specWarnFireDetonate = mod : NewSpecialWarningMoveAway ( 213275 , nil , nil , nil , 3 , 2 )
local yellFireDetonate = mod : NewYell ( 213275 , 29870 ) --29870 "Detonate" short name
local specWarnArcaneDetonate = mod : NewSpecialWarningDodge ( 213390 , nil , nil , nil , 3 , 2 )
--GTFOs
local specWarnPoolOfFrost = mod : NewSpecialWarningMove ( 212736 , nil , nil , nil , 1 , 2 )
local specWarnBurningGround = mod : NewSpecialWarningMove ( 213278 , nil , nil , nil , 1 , 2 )
local specWarnArcaneFog = mod : NewSpecialWarningMove ( 213504 , nil , nil , nil , 1 , 2 ) --Fog and orbs combined for simplicity
local specWarnFelStomp = mod : NewSpecialWarningMove ( 230414 , nil , nil , nil , 1 , 2 ) --Mythic
--Animates
local specWarnAnimateFrost = mod : NewSpecialWarningSwitch ( 213853 , " -Healer " , nil , nil , 1 , 2 ) --Currently spell ID does not contain "animate" in name, which makes warning confusing. Hopefully blizzard fixes
local specWarnAnimateFire = mod : NewSpecialWarningSwitch ( 213567 , " -Healer " , nil , nil , 1 , 2 )
local specWarnAnimateArcane = mod : NewSpecialWarningSwitch ( 213564 , " -Healer " , nil , nil , 1 , 2 )
--Mythic
local specWarnDecimate = mod : NewSpecialWarningSpell ( 230504 , nil , nil , nil , 1 , 2 )
local specWarnFelLash = mod : NewSpecialWarningSoon ( 230403 , nil , nil , nil , 1 , 2 )
local timerFrostPhaseCD = mod : NewNextTimer ( 80 , 213864 , nil , nil , nil , 6 )
local timerFirePhaseCD = mod : NewNextTimer ( 85 , 213867 , nil , nil , nil , 6 )
local timerArcanePhaseCD = mod : NewNextTimer ( 85 , 213869 , nil , nil , nil , 6 )
local timerAnnihilateCD = mod : NewNextCountTimer ( 40 , 212492 , nil , " Tank " , nil , 5 , nil , DBM_COMMON_L.DEADLY_ICON .. DBM_COMMON_L.TANK_ICON , nil , 2 , 4 )
--Debuffs
local timerMarkOfFrostCD = mod : NewNextTimer ( 16 , 212531 , nil , nil , nil , 3 )
local timerSearingBrandCD = mod : NewNextTimer ( 16 , 213148 , nil , nil , nil , 3 )
local timerArcaneOrbCD = mod : NewNextTimer ( 11.5 , 213519 , nil , nil , nil , 3 )
--Replicates
local timerMarkOfFrostRepCD = mod : NewNextTimer ( 16 , 212530 , 160324 , nil , nil , 3 ) --Short name "Replicate"
local timerSearingBrandRepCD = mod : NewNextTimer ( 16 , 213182 , 160324 , nil , nil , 3 ) --Short name "Replicate"
local timerArcaneOrbRepCD = mod : NewNextTimer ( 14.5 , 213852 , 160324 , nil , nil , 3 ) --Short name "Replicate"
--Detonates
local timerMarkOfFrostDetonateCD = mod : NewNextTimer ( 16 , 212735 , 29870 , nil , nil , 3 , nil , DBM_COMMON_L.HEALER_ICON ) --Short name "Detonate"
local timerSearingBrandDetonateCD = mod : NewNextTimer ( 16 , 213275 , 29870 , nil , nil , 3 , nil , DBM_COMMON_L.HEALER_ICON ) --Short name "Detonate"
local timerArcaneOrbDetonateCD = mod : NewNextTimer ( 16 , 213390 , 29870 , nil , nil , 3 , nil , DBM_COMMON_L.DEADLY_ICON .. DBM_COMMON_L.HEALER_ICON ) --Short name "Detonate"
--Animates
local timerAnimateFrostCD = mod : NewNextTimer ( 16 , 213853 , 124338 , nil , nil , 1 , 57612 , DBM_COMMON_L.TANK_ICON ) --"Animated" short name. Wrong tense but only short spell I can use
local timerAnimateFireCD = mod : NewNextTimer ( 16 , 213567 , 124338 , nil , nil , 1 , nil , DBM_COMMON_L.DEADLY_ICON .. DBM_COMMON_L.TANK_ICON ) --"Animated" short name. Wrong tense but only short spell I can use
local timerAnimateArcaneCD = mod : NewNextTimer ( 16 , 213564 , 124338 , nil , nil , 1 , nil , DBM_COMMON_L.DEADLY_ICON .. DBM_COMMON_L.DAMAGE_ICON .. DBM_COMMON_L.TANK_ICON ) --"Animated" short name. Wrong tense but only short spell I can use
--Animate Specials
local timerArmageddon = mod : NewCastTimer ( 33 , 213568 , nil , nil , nil , 2 , nil , DBM_COMMON_L.DEADLY_ICON , nil , 3 , 4 )
--Mythic
mod : AddTimerLine ( ENCOUNTER_JOURNAL_SECTION_FLAG12 )
local timerFelSoulCD = mod : NewNextTimer ( 15 , 230951 , nil , nil , nil , 1 , nil , DBM_COMMON_L.HEROIC_ICON )
local timerFelSoul = mod : NewBuffActiveTimer ( 45 , 230951 , nil , nil , nil , 6 )
local timerDecimateCD = mod : NewCDTimer ( 16.1 , 230504 , nil , " Tank " , nil , 5 , nil , DBM_COMMON_L.TANK_ICON ) --17-20 (Tank timer by default, holy/ret/etc that's doing taunting will have to enable by default)
local timerFelStompCD = mod : NewNextTimer ( 25 , 230414 , nil , nil , nil , 3 , nil , DBM_COMMON_L.HEROIC_ICON )
local timerFelLashCD = mod : NewNextCountTimer ( 25 , 230403 , nil , nil , nil , 2 , nil , DBM_COMMON_L.HEROIC_ICON , nil , 1 , 3 )
local berserkTimer = mod : NewBerserkTimer ( 600 ) --480
mod : AddRangeFrameOption ( " 8 " )
mod : AddSetIconOption ( " SetIconOnFrozenTempest " , 213083 , true , 5 )
mod : AddSetIconOption ( " SetIconOnSearingDetonate " , 213275 , true , 0 )
mod : AddSetIconOption ( " SetIconOnBurstOfFlame " , 213760 , true , 5 )
mod : AddSetIconOption ( " SetIconOnBurstOfMagic " , 213808 , true , 5 )
mod : AddInfoFrameOption ( 212647 )
mod.vb . annihilateCount = 0
mod.vb . armageddonAdds = 0
mod.vb . felLashCount = 0
mod.vb . lastPhase = 1
local MarkOfFrostDebuff , SearingBrandDebuff , frostBitten = DBM : GetSpellName ( 212587 ) , DBM : GetSpellName ( 213166 ) , DBM : GetSpellName ( 212647 )
local rangeShowAll = false
local chargeTable = { }
local annihilateTimers = { 8.0 , 45.0 , 40.0 , 44.0 , 38.0 , 37.0 , 33.0 , 47.0 , 41.0 , 44.0 , 38.0 , 37.0 , 33.0 } --Need longer pulls/more data. However this pattern did prove to always be same
local mythicAnnihilateTimers = { 8 , 46 , 30 , 37 , 35 , 43 , 27 , 37 , 41 , 37 , 35 , 43 , 27 }
local felLashTimers = { 21 , 10.9 , 6 , 11 , 6 }
local searingDetonateIcons = { }
local debuffFilter
do
debuffFilter = function ( uId )
if DBM : UnitDebuff ( uId , MarkOfFrostDebuff ) or DBM : UnitDebuff ( uId , SearingBrandDebuff ) then
return true
end
end
end
local function findSearingMark ( self )
if DBM : UnitDebuff ( " player " , SearingBrandDebuff ) then
specWarnFireDetonate : Show ( )
specWarnFireDetonate : Play ( " runout " )
yellFireDetonate : Yell ( )
end
table.wipe ( searingDetonateIcons )
if self.Options . SetIconOnSearingDetonate then
for uId in DBM : GetGroupMembers ( ) do
if DBM : UnitDebuff ( uId , SearingBrandDebuff ) then
local name = DBM : GetUnitFullName ( uId )
searingDetonateIcons [ # searingDetonateIcons + 1 ] = name
self : SetIcon ( name , # searingDetonateIcons , 3 )
end
end
end
end
function mod : OnCombatStart ( delay )
self.vb . annihilateCount = 0
self.vb . armageddonAdds = 0
self.vb . lastPhase = 1
timerAnnihilateCD : Start ( 8 - delay , 1 )
--Rest of timers are triggered by frost buff 0.1 seconds into pull
table.wipe ( chargeTable )
table.wipe ( searingDetonateIcons )
rangeShowAll = false
if self : IsMythic ( ) then
self.vb . felLashCount = 0
berserkTimer : Start ( 450 )
elseif self : IsEasy ( ) then
berserkTimer : Start ( - delay ) --600 confirmed on normal (needs reconfirm on live)
else
berserkTimer : Start ( 480 - delay ) --480 confirmed on heroic (needs reconfirm on live)
end
end
function mod : OnCombatEnd ( )
if self.Options . RangeFrame then
DBM.RangeCheck : Hide ( )
end
if self.Options . InfoFrame then
DBM.InfoFrame : Hide ( )
end
end
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if spellId == 213853 then --Mark of Frost (Animate)
specWarnAnimateFrost : Show ( )
specWarnAnimateFrost : Play ( " mobsoon " ) --using this trigger, mobsoon
elseif spellId == 213567 then --Animate: Searing Brand
specWarnAnimateFire : Show ( )
specWarnAnimateFire : Play ( " mobsoon " )
elseif spellId == 213564 then --Animate: Arcane Orb
specWarnAnimateArcane : Show ( )
specWarnAnimateArcane : Play ( " mobsoon " )
if not self : IsEasy ( ) then
timerArmageddon : Start ( )
end
elseif spellId == 213852 then --Replicate: Arcane Orb
specWarnArcaneOrb : Show ( )
specWarnArcaneOrb : Play ( " watchorb " )
elseif spellId == 212735 then --Detonate: Mark of Frost
if DBM : UnitDebuff ( " player " , MarkOfFrostDebuff ) then
specWarnFrostdetonate : Show ( )
specWarnFrostdetonate : Play ( " runout " )
yellFrostDetonate : Yell ( )
end
elseif spellId == 213083 then --Frozen Tempest
warnFrozenTempest : Show ( )
if self.Options . SetIconOnFrozenTempest then
self : ScanForMobs ( args.sourceGUID , 2 , 8 , 1 , nil , 10 , " SetIconOnFrozenTempest " )
end
elseif spellId == 212492 then --Annihilate
local targetName , uId , bossuid = self : GetBossTarget ( 104881 , true )
if bossuid and self : IsTanking ( " player " , bossuid , nil , true ) then
specWarnAnnihilate : Show ( self.vb . annihilateCount + 1 )
specWarnAnnihilate : Play ( " defensive " )
end
elseif spellId == 230504 then
local targetName , uId , bossuid = self : GetBossTarget ( 115905 )
if bossuid and self : IsTanking ( " player " , bossuid , nil , true ) then
specWarnDecimate : Show ( )
specWarnDecimate : Play ( " carefly " )
end
if self.vb . lastPhase == 3 then
timerDecimateCD : Start ( 17 )
else
timerDecimateCD : Start ( 20 )
end
end
end
function mod : SPELL_CAST_SUCCESS ( args )
local spellId = args.spellId
if spellId == 230403 then
self.vb . felLashCount = self.vb . felLashCount + 1
local timer = felLashTimers [ self.vb . felLashCount + 1 ]
if timer then
specWarnFelLash : Schedule ( timer - 3 )
specWarnFelLash : ScheduleVoice ( timer - 3 , " gathershare " )
timerFelLashCD : Start ( timer , self.vb . felLashCount + 1 )
end
elseif spellId == 212492 then --Annihilate
self.vb . annihilateCount = self.vb . annihilateCount + 1
local nextCount = self.vb . annihilateCount + 1
local timer = self : IsMythic ( ) and mythicAnnihilateTimers [ nextCount ] or annihilateTimers [ nextCount ]
if timer then
timerAnnihilateCD : Start ( timer - 3 , nextCount )
end
if nextCount == 6 and not self : IsMythic ( ) then
--Better place to start arcane orb timer since it's cast 1.5 seconds after arcane phase begins and this is last annihilate in fire phase
timerArcaneOrbCD : Start ( )
end
elseif spellId == 213275 and self.Options . SetIconOnBurstOfFlame then --Detonate: Searing Brand
--self:ScanForMobs(107285, 0, 8, 6, nil, 20, "SetIconOnBurstOfFlame", false)--Second CID isn't actually second ID, just more redundancy to try and get god damn thing to work AT ALL
self : ScheduleMethod ( 15 , " ScanForMobs " , 107285 , 0 , 8 , 8 , nil , 12 , " SetIconOnBurstOfFlame " )
end
end
function mod : SPELL_AURA_APPLIED ( args )
local spellId = args.spellId
if spellId == 213864 or spellId == 216389 then --Icy enchantment
self.vb . lastPhase = 1
warnFrostPhase : Show ( )
warnFrostPhase : Play ( " phasechange " )
if spellId == 216389 then --First icy
timerMarkOfFrostCD : Start ( 18 )
if self : IsMythic ( ) then
timerFelSoulCD : Start ( 15 )
timerMarkOfFrostRepCD : Start ( 28 )
timerMarkOfFrostDetonateCD : Start ( 48 )
timerAnimateFrostCD : Start ( 65 )
timerFirePhaseCD : Start ( 75 )
else
timerMarkOfFrostRepCD : Start ( 38 )
timerMarkOfFrostDetonateCD : Start ( 68 )
timerAnimateFrostCD : Start ( 75 )
timerFirePhaseCD : Start ( 85 )
end
else --Rest of them
--timerMarkOfFrostCD:Start(1.5)--No real reason to show a 1.5 second timer
timerMarkOfFrostRepCD : Start ( 15 )
if self : IsMythic ( ) then
timerFelSoulCD : Start ( 18 )
timerMarkOfFrostDetonateCD : Start ( 35 )
timerAnimateFrostCD : Start ( 52 )
timerFirePhaseCD : Start ( 75 )
else
timerMarkOfFrostDetonateCD : Start ( 45 )
timerAnimateFrostCD : Start ( 62 )
timerFirePhaseCD : Start ( 85 )
end
end
if self.Options . RangeFrame then
DBM.RangeCheck : Show ( 8 , debuffFilter )
end
if self.Options . InfoFrame and not self : IsLFR ( ) then
DBM.InfoFrame : SetHeader ( frostBitten )
DBM.InfoFrame : Show ( 6 , " playerdebuffstacks " , frostBitten )
end
elseif spellId == 213867 then --Fiery Enchantment
self.vb . lastPhase = 2
warnFirePhase : Show ( )
warnFirePhase : Play ( " phasechange " )
if self : IsMythic ( ) then
timerFelSoulCD : Start ( 15 )
timerSearingBrandCD : Start ( 17.8 )
timerFelStompCD : Start ( 25 )
timerSearingBrandRepCD : Start ( 27 )
self : Schedule ( 37 , findSearingMark , self ) --Schedule markers to go out 3 seconds before detonate cast, making a 6 total seconds to position instead of 3
timerSearingBrandDetonateCD : Start ( 40 )
timerAnimateFireCD : Start ( 55 )
timerArcanePhaseCD : Start ( 75 )
else
timerSearingBrandCD : Start ( 17.8 )
timerSearingBrandRepCD : Start ( 27 )
self : Schedule ( 42 , findSearingMark , self ) --Schedule markers to go out 3 seconds before detonate cast, making a 6 total seconds to position instead of 3
timerSearingBrandDetonateCD : Start ( 45 )
timerAnimateFireCD : Start ( 62 )
timerArcanePhaseCD : Start ( 85 )
end
if self.Options . InfoFrame then
DBM.InfoFrame : Hide ( )
end
elseif spellId == 213869 then --Magic Enchantment
self.vb . lastPhase = 3
warnArcanePhase : Show ( )
warnArcanePhase : Play ( " phasechange " )
if self : IsMythic ( ) then
self.vb . felLashCount = 0
timerFelSoulCD : Start ( 12 )
--Arcane orb not started here, started somewhere else so timer is actually useful
timerArcaneOrbRepCD : Start ( 15 )
specWarnFelLash : Schedule ( 18 )
specWarnFelLash : ScheduleVoice ( 18 , " gathershare " )
timerFelLashCD : Start ( 21 , 1 )
timerArcaneOrbDetonateCD : Start ( 35 ) --Not in combat log, So difficult to fix until transcriptor. Needs verification
specWarnArcaneDetonate : Schedule ( 35 ) --^^
specWarnArcaneDetonate : ScheduleVoice ( 35 , " watchorb " ) --^^
timerAnimateArcaneCD : Start ( 55 ) --Oddly slightly longer on mythic than others
timerFrostPhaseCD : Start ( 70 )
else
--Arcane orb not started here, started somewhere else so timer is actually useful
timerArcaneOrbRepCD : Start ( 15 )
timerArcaneOrbDetonateCD : Start ( 35 ) --Not in combat log, but this is when yell occurs
specWarnArcaneDetonate : Schedule ( 35 )
specWarnArcaneDetonate : ScheduleVoice ( 35 , " watchorb " )
timerAnimateArcaneCD : Start ( 51.9 )
timerFrostPhaseCD : Start ( 70 )
end
if self.Options . RangeFrame and self : IsRanged ( ) then
DBM.RangeCheck : Show ( 8 ) --Show everyone for better arcane orb spread
else --Melee, kill range frame this phase
DBM.RangeCheck : Hide ( )
end
elseif spellId == 212531 then --Mark of Frost (5sec Targetting Debuff)
warnMarkOfFrostChosen : CombinedShow ( 0.5 , args.destName )
if args : IsPlayer ( ) then
specWarnMarkOfFrost : Show ( )
specWarnMarkOfFrost : Play ( " targetyou " )
self : AntiSpam ( 7 , args.destName )
yellMarkofFrost : Yell ( )
end
elseif spellId == 212587 then
if args : IsPlayer ( ) and self : AntiSpam ( 7 , args.destName ) then
specWarnMarkOfFrost : Show ( )
specWarnMarkOfFrost : Play ( " targetyou " )
yellMarkofFrost : Yell ( )
end
elseif spellId == 213148 then --Searing Brand (5sec Targetting Debuff)
warnSearingBrandChosen : CombinedShow ( 0.3 , args.destName )
if args : IsPlayer ( ) then
specWarnSearingBrand : Show ( )
specWarnSearingBrand : Play ( " scatter " )
end
elseif spellId == 213569 then --Armageddon Applied to mobs
self.vb . armageddonAdds = self.vb . armageddonAdds + 1
elseif spellId == 230951 then
warnFelSoul : Show ( )
timerFelSoul : Start ( )
if self.vb . lastPhase == 1 then
timerDecimateCD : Start ( 18.5 )
elseif self.vb . lastPhase == 2 then
timerDecimateCD : Start ( 11.2 )
else
timerDecimateCD : Start ( 9.4 )
end
elseif spellId == 212647 then
local amount = args.amount or 1
if args : IsPlayer ( ) and amount % 2 == 0 and amount >= 6 and amount ~= 8 then
specWarnFrostbitten : Show ( amount )
specWarnFrostbitten : Play ( " stackhigh " )
end
elseif spellId == 215458 then
local amount = args.amount or 1
if amount >= 2 then
if not DBM : UnitDebuff ( " player " , args.spellName ) and not args : IsPlayer ( ) then
specWarnAnnihilateOther : Show ( args.destName )
specWarnAnnihilateOther : Play ( " tauntboss " )
else
warnAnnihilate : Show ( args.destName , amount )
end
end
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod : SPELL_AURA_REMOVED ( args )
local spellId = args.spellId
if spellId == 213569 then --Armageddon Applied to mobs
self.vb . armageddonAdds = self.vb . armageddonAdds - 1
local count = self.vb . armageddonAdds
if count < 4 then
warnArmageddon : Show ( count )
if count == 0 then
timerArmageddon : Stop ( )
end
end
elseif spellId == 230951 then
timerFelSoul : Stop ( )
end
end
do
local playerGUID = UnitGUID ( " player " )
function mod : SPELL_PERIODIC_DAMAGE ( _ , _ , _ , _ , destGUID , _ , _ , _ , spellId )
if spellId == 212736 and destGUID == playerGUID and self : AntiSpam ( 2 , 1 ) then
specWarnPoolOfFrost : Show ( )
specWarnPoolOfFrost : Play ( " runaway " )
elseif spellId == 213278 and destGUID == playerGUID and self : AntiSpam ( 2 , 2 ) then
specWarnBurningGround : Show ( )
specWarnBurningGround : Play ( " runaway " )
elseif spellId == 213504 and destGUID == playerGUID and self : AntiSpam ( 2 , 3 ) then
specWarnArcaneFog : Show ( )
specWarnArcaneFog : Play ( " runaway " )
elseif spellId == 230414 and destGUID == playerGUID and self : AntiSpam ( 2 , 4 ) then
specWarnFelStomp : Show ( )
specWarnFelStomp : Play ( " runaway " )
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
function mod : SPELL_DAMAGE ( _ , _ , _ , _ , destGUID , _ , _ , _ , spellId )
if spellId == 213520 and destGUID == playerGUID and self : AntiSpam ( 2 , 1 ) then
specWarnArcaneFog : Show ( )
specWarnArcaneFog : Play ( " runaway " )
end
end
mod.SPELL_MISSED = mod.SPELL_DAMAGE
end
--More accurate way to do this for now, too many spell Ids right now don't know what's what for sure. However a simple spell NAME check should work fairly reliable for test purposes
function mod : UNIT_AURA ( uId )
local hasDebuff = DBM : UnitDebuff ( " player " , MarkOfFrostDebuff ) or DBM : UnitDebuff ( " player " , SearingBrandDebuff )
if hasDebuff and not rangeShowAll then --Has 1 or more debuff, show all players on range frame
rangeShowAll = true
if self.Options . RangeFrame then
DBM.RangeCheck : Show ( 8 )
end
elseif not hasDebuff and rangeShowAll then --No debuffs, only show those that have debuffs
rangeShowAll = false
if self.Options . RangeFrame then
DBM.RangeCheck : Show ( 8 , debuffFilter )
end
end
end
function mod : UNIT_SPELLCAST_SUCCEEDED ( uId , _ , spellId )
if spellId == 215455 then --Arcane Orb
specWarnArcaneOrb : Show ( )
specWarnArcaneOrb : Play ( " watchorb " )
elseif spellId == 213390 then --Detonate: Arcane Orb (still missing from combat log, although this event is 3 seconds slower than scheduling or using yell)
self : ScheduleMethod ( 15 , " ScanForMobs " , 107287 , 0 , 8 , 8 , nil , 12 , " SetIconOnBurstOfMagic " )
-- specWarnArcaneDetonate:Show()
-- specWarnArcaneDetonate:Play("watchorb")
end
end