local mod = DBM : NewMod ( 1986 , " DBM-Raids-Legion " , 1 , 946 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20240422191412 " )
mod : SetCreatureID ( 122468 , 122467 , 122469 ) --122468 Noura, 122467 Asara, 122469 Diima, 125436 Thu'raya (mythic only)
mod : SetEncounterID ( 2073 )
mod : SetBossHPInfoToHighest ( )
mod : SetUsedIcons ( 1 , 2 , 5 , 6 , 7 , 8 )
mod : SetHotfixNoticeRev ( 16963 )
mod.respawnTime = 25
mod : RegisterCombat ( " combat " )
mod : RegisterEventsInCombat (
" SPELL_CAST_START 245627 252861 253650 250648 250095 " ,
" SPELL_CAST_SUCCESS 244899 253520 245532 250335 250333 250334 249793 245518 246329 " ,
" SPELL_AURA_APPLIED 244899 253520 245518 245586 250757 249863 " ,
" SPELL_AURA_APPLIED_DOSE 244899 245518 " ,
" SPELL_AURA_REMOVED 253520 245586 249863 250757 " ,
" SPELL_PERIODIC_DAMAGE 245634 253020 " ,
" SPELL_PERIODIC_MISSED 245634 253020 " ,
" UNIT_DIED " ,
" UNIT_TARGETABLE_CHANGED " ,
" UNIT_SPELLCAST_SUCCEEDED boss1 boss2 boss3 boss4 boss5 "
)
local Noura = DBM : EJ_GetSectionInfo ( 15967 )
local Asara = DBM : EJ_GetSectionInfo ( 15968 )
local Diima = DBM : EJ_GetSectionInfo ( 15969 )
local Thuraya = DBM : EJ_GetSectionInfo ( 16398 )
local torment = DBM : EJ_GetSectionInfo ( 16138 )
--TODO, verify timerBossIncoming on all difficulties
--TODO, transcribe/video and tweak some timers for activation especially timerStormofDarknessCD which had some timer refreshed debug
--[[
( ability.id = 245627 or ability.id = 252861 or ability.id = 253650 or ability.id = 250095 or ability.id = 250648 ) and type = " begincast "
or ( ability.id = 244899 or ability.id = 245518 or ability.id = 253520 or ability.id = 245532 or ability.id = 250335 or ability.id = 250333 or ability.id = 250334 or ability.id = 249793 or ability.id = 250757 or ability.id = 246329 ) and type = " cast "
or ability.id = 250757 and type = " applydebuff "
--]]
--All
local warnActivated = mod : NewTargetAnnounce ( 118212 , 3 , 78740 , nil , nil , nil , nil , nil , true )
local specWarnGTFO = mod : NewSpecialWarningGTFO ( 245634 , nil , nil , nil , 1 , 2 )
local specWarnActivated = mod : NewSpecialWarningSwitchCount ( 118212 , " Tank " , nil , 2 , 3 , 2 )
local timerBossIncoming = mod : NewTimer ( 61 , " timerBossIncoming " , nil , nil , nil , 1 )
--local berserkTimer = mod:NewBerserkTimer(600)
--Noura, Mother of Flames
mod : AddTimerLine ( Noura )
local warnFieryStrike = mod : NewStackAnnounce ( 244899 , 2 , nil , " Tank " )
local warnWhirlingSaber = mod : NewSpellAnnounce ( 245627 , 2 )
local warnFulminatingPulse = mod : NewTargetAnnounce ( 253520 , 3 )
local specWarnFieryStrike = mod : NewSpecialWarningStack ( 244899 , nil , 2 , nil , nil , 1 , 6 )
local specWarnFieryStrikeOther = mod : NewSpecialWarningTaunt ( 244899 , nil , nil , nil , 1 , 2 )
local specWarnFulminatingPulse = mod : NewSpecialWarningMoveAway ( 253520 , nil , nil , nil , 1 , 2 )
local yellFulminatingPulse = mod : NewFadesYell ( 253520 )
local timerFieryStrikeCD = mod : NewCDTimer ( 10.5 , 244899 , nil , " Tank " , nil , 5 , nil , DBM_COMMON_L.TANK_ICON )
local timerWhirlingSaberCD = mod : NewNextTimer ( 35.1 , 245627 , nil , nil , nil , 3 ) --35-45
local timerFulminatingPulseCD = mod : NewNextTimer ( 40.1 , 253520 , nil , nil , nil , 3 , nil , nil , nil , mod : IsHealer ( ) and 2 or nil , 4 )
mod : AddSetIconOption ( " SetIconOnFulminatingPulse2 " , 253520 , false )
--Asara, Mother of Night
mod : AddTimerLine ( Asara )
local specWarnShadowBlades = mod : NewSpecialWarningDodge ( 246329 , nil , nil , nil , 2 , 2 )
local specWarnStormofDarkness = mod : NewSpecialWarningCount ( 252861 , nil , nil , nil , 2 , 2 )
local timerShadowBladesCD = mod : NewCDTimer ( 27.6 , 246329 , nil , nil , nil , 3 )
local timerStormofDarknessCD = mod : NewNextCountTimer ( 56.8 , 252861 , nil , nil , nil , 2 , nil , DBM_COMMON_L.HEALER_ICON , nil , 3 , 4 ) --57+
--Diima, Mother of Gloom
mod : AddTimerLine ( Diima )
local warnChilledBlood = mod : NewTargetAnnounce ( 245586 , 2 )
local warnFlashFreeze = mod : NewStackAnnounce ( 245518 , 2 , nil , " Tank " )
local specWarnFlashfreeze = mod : NewSpecialWarningStack ( 245518 , nil , 2 , nil , nil , 1 , 6 )
local specWarnFlashfreezeOther = mod : NewSpecialWarningTaunt ( 245518 , nil , nil , nil , 1 , 2 )
local yellFlashfreeze = mod : NewYell ( 245518 , nil , false )
local specWarnChilledBlood = mod : NewSpecialWarningTarget ( 245586 , " Healer " , nil , nil , 1 , 2 )
local specWarnOrbofFrost = mod : NewSpecialWarningDodge ( 253650 , nil , nil , nil , 1 , 12 )
local timerFlashFreezeCD = mod : NewCDTimer ( 10.1 , 245518 , nil , " Tank " , nil , 5 , nil , DBM_COMMON_L.TANK_ICON )
local timerChilledBloodCD = mod : NewNextTimer ( 25.4 , 245586 , nil , nil , nil , 5 , nil , DBM_COMMON_L.HEALER_ICON )
local timerOrbofFrostCD = mod : NewNextTimer ( 30 , 253650 , nil , nil , nil , 3 )
mod : AddSetIconOption ( " SetIconOnChilledBlood2 " , 245586 , false )
mod : AddInfoFrameOption ( 245586 , true )
--Thu'raya, Mother of the Cosmos (Mythic)
mod : AddTimerLine ( Thuraya )
local warnCosmicGlare = mod : NewTargetAnnounce ( 250757 , 3 )
local specWarnTouchoftheCosmos = mod : NewSpecialWarningInterruptCount ( 250648 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnCosmicGlare = mod : NewSpecialWarningYou ( 250757 , nil , nil , nil , 1 , 2 )
local yellCosmicGlare = mod : NewYell ( 250757 )
local yellCosmicGlareFades = mod : NewShortFadesYell ( 250757 )
local timerCosmicGlareCD = mod : NewCDTimer ( 15.8 , 250757 , nil , nil , nil , 3 , nil , DBM_COMMON_L.HEROIC_ICON )
mod : AddSetIconOption ( " SetIconOnCosmicGlare " , 250757 , true )
mod : AddBoolOption ( " IgnoreFirstKick " , false )
--Torment of the Titans
mod : AddTimerLine ( torment )
local specWarnTormentofTitans = mod : NewSpecialWarningSpell ( " ej16138 " , nil , nil , nil , 1 , 7 )
----Activations timers
local timerMachinationsofAmanThulCD = mod : NewCastTimer ( 85 , 250335 , nil , nil , nil , 6 , nil , nil , nil , 1 , 5 )
local timerFlamesofKhazgorothCD = mod : NewCastTimer ( 85 , 250333 , nil , nil , nil , 6 , nil , nil , nil , 1 , 5 )
local timerSpectralArmyofNorgannonCD = mod : NewCastTimer ( 85 , 250334 , nil , nil , nil , 6 , nil , nil , nil , 1 , 5 )
local timerFuryofGolgannethCD = mod : NewCastTimer ( 85 , 249793 , nil , nil , nil , 6 , nil , nil , nil , 1 , 5 )
----Actual phase stuff
local timerMachinationsofAman = mod : NewCastTimer ( 20 , 250095 , nil , nil , nil , 5 , nil , DBM_COMMON_L.DAMAGE_ICON )
mod : AddNamePlateOption ( " NPAuraOnVisageofTitan " , 249863 )
--MISC option separated on purpose
mod : AddDropdownOption ( " InterruptBehavior " , { " Three " , " Four " , " Five " } , " Three " , " misc " , nil , 250648 )
mod : AddDropdownOption ( " TauntBehavior " , { " TwoMythicThreeNon " , " TwoAlways " , " ThreeAlways " } , " TwoMythicThreeNon " , " misc " , nil , 244899 )
local titanCount = { }
mod.vb . stormCount = 0
mod.vb . chilledCount = 0
mod.vb . MachinationsLeft = 0
mod.vb . fpIcon = 6
mod.vb . chilledIcon = 1
mod.vb . glareIcon = 4
mod.vb . touchCosmosCast = 0
mod.vb . interruptBehavior = " Three "
mod.vb . ignoreFirstInterrupt = false
mod.vb . firstCastHappend = false
local CVAR1 , CVAR2 = nil , nil
function mod : OnCombatStart ( delay )
self.vb . stormCount = 0
self.vb . chilledCount = 0
self.vb . MachinationsLeft = 0
self.vb . fpIcon = 4
self.vb . chilledIcon = 1
self.vb . glareIcon = 4
self.vb . touchCosmosCast = 0
self.vb . interruptBehavior = self.Options . InterruptBehavior --Default should be users setting
self.vb . ignoreFirstInterrupt = false
self.vb . firstCastHappend = false
if self : IsMythic ( ) then
self : SetCreatureID ( 122468 , 122467 , 122469 , 125436 )
else
self : SetCreatureID ( 122468 , 122467 , 122469 )
end
--Diima, Mother of Gloom is first one to go inactive
timerWhirlingSaberCD : Start ( 8 - delay )
timerFieryStrikeCD : Start ( 11 - delay )
timerShadowBladesCD : Start ( 10.9 - delay )
if not self : IsEasy ( ) then
timerFulminatingPulseCD : Start ( 20.3 - delay )
timerStormofDarknessCD : Start ( 26 - delay , 1 )
end
if self.Options . NPAuraOnVisageofTitan then
DBM : FireEvent ( " BossMod_EnableHostileNameplates " )
end
if UnitIsGroupLeader ( " player " ) and not self : IsLFR ( ) then
if self.Options . InterruptBehavior == " Three " then
self : SendSync ( " Three " , self.Options . IgnoreFirstKick )
elseif self.Options . InterruptBehavior == " Four " then
self : SendSync ( " Four " , self.Options . IgnoreFirstKick )
elseif self.Options . InterruptBehavior == " Five " then
self : SendSync ( " Five " , self.Options . IgnoreFirstKick )
end
end
end
function mod : OnCombatEnd ( )
table.wipe ( titanCount )
if self.Options . InfoFrame then
DBM.InfoFrame : Hide ( )
end
if self.Options . NPAuraOnVisageofTitan then
DBM.Nameplate : Hide ( true , nil , nil , nil , true , true )
end
end
function mod : OnTimerRecovery ( )
if self : IsMythic ( ) then
self : SetCreatureID ( 122468 , 122467 , 122469 , 125436 )
else
self : SetCreatureID ( 122468 , 122467 , 122469 )
end
end
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if spellId == 245627 then
warnWhirlingSaber : Show ( )
timerWhirlingSaberCD : Start ( )
elseif spellId == 252861 then
self.vb . stormCount = self.vb . stormCount + 1
specWarnStormofDarkness : Show ( self.vb . stormCount )
specWarnStormofDarkness : Play ( " findshelter " )
timerStormofDarknessCD : Start ( 56.8 , self.vb . stormCount + 1 )
elseif spellId == 253650 then
specWarnOrbofFrost : Show ( )
specWarnOrbofFrost : Play ( " iceorbmove " )
timerOrbofFrostCD : Start ( )
elseif spellId == 250095 and self : AntiSpam ( 3 , 1 ) then
timerMachinationsofAman : Start ( )
elseif spellId == 250648 then
if ( self.vb . interruptBehavior == " Three " and self.vb . touchCosmosCast == 4 ) or ( self.vb . interruptBehavior == " Four " and self.vb . touchCosmosCast == 5 ) or ( self.vb . interruptBehavior == " Five " and self.vb . touchCosmosCast == 6 ) then
self.vb . touchCosmosCast = 0
end
if self.vb . firstCastHappend or not self.vb . ignoreFirstInterrupt then
self.vb . touchCosmosCast = self.vb . touchCosmosCast + 1
end
local kickCount = self.vb . touchCosmosCast
specWarnTouchoftheCosmos : Show ( args.sourceName , kickCount )
if kickCount == 0 then
specWarnTouchoftheCosmos : Play ( " kickcast " )
else
specWarnTouchoftheCosmos : Play ( " kick " .. kickCount .. " r " )
end
if not self.vb . firstCastHappend then self.vb . firstCastHappend = true end
end
end
function mod : SPELL_CAST_SUCCESS ( args )
local spellId = args.spellId
if spellId == 244899 then
timerFieryStrikeCD : Start ( )
elseif spellId == 245518 then
timerFlashFreezeCD : Start ( )
elseif spellId == 253520 and self : AntiSpam ( 3 , 3 ) then
timerFulminatingPulseCD : Start ( )
elseif spellId == 245532 and self : AntiSpam ( 3 , 2 ) then
timerChilledBloodCD : Start ( )
specWarnChilledBlood : Play ( " healall " )
elseif ( spellId == 250335 or spellId == 250333 or spellId == 250334 or spellId == 249793 ) and self : IsInCombat ( ) then --Torment selections
if spellId == 250335 then --Machinations of Aman'Thul
timerMachinationsofAmanThulCD : Start ( )
elseif spellId == 250333 then --Flames of Khaz'goroth
timerFlamesofKhazgorothCD : Start ( )
elseif spellId == 250334 then --Spectral Army of Norgannon
timerSpectralArmyofNorgannonCD : Start ( )
elseif spellId == 249793 then --Fury of Golganneth
timerFuryofGolgannethCD : Start ( )
end
elseif spellId == 246329 then --Shadow Blades
specWarnShadowBlades : Show ( )
specWarnShadowBlades : Play ( " watchwave " )
timerShadowBladesCD : Start ( )
end
end
function mod : SPELL_AURA_APPLIED ( args )
local spellId = args.spellId
if spellId == 244899 then
local uId = DBM : GetRaidUnitId ( args.destName )
if self : IsTanking ( uId ) then
local amount = args.amount or 1
local tauntStack = 3
if self : IsMythic ( ) and self.Options . TauntBehavior == " TwoMythicThreeNon " or self.Options . TauntBehavior == " TwoAlways " then
tauntStack = 2
end
if amount >= tauntStack then
if args : IsPlayer ( ) then --At this point the other tank SHOULD be clear.
specWarnFieryStrike : Show ( amount )
specWarnFieryStrike : Play ( " stackhigh " )
else
local _ , _ , _ , _ , _ , expireTime = DBM : UnitDebuff ( " player " , spellId )
local remaining
if expireTime then
remaining = expireTime - GetTime ( )
end
if not UnitIsDeadOrGhost ( " player " ) and ( not remaining or remaining and remaining < 10 ) then
specWarnFieryStrikeOther : Show ( args.destName )
specWarnFieryStrikeOther : Play ( " tauntboss " )
else
warnFieryStrike : Show ( args.destName , amount )
end
end
else
warnFieryStrike : Show ( args.destName , amount )
end
end
elseif spellId == 253520 then
warnFulminatingPulse : CombinedShow ( 0.3 , args.destName )
if args : IsPlayer ( ) then
specWarnFulminatingPulse : Show ( )
specWarnFulminatingPulse : Play ( " runout " )
yellFulminatingPulse : Countdown ( 10 )
end
if self.Options . SetIconOnFulminatingPulse2 then
self : SetIcon ( args.destName , self.vb . fpIcon )
end
self.vb . fpIcon = self.vb . fpIcon + 1
if self.vb . fpIcon == 9 then
self.vb . fpIcon = 6
end
elseif spellId == 245518 then
local uId = DBM : GetRaidUnitId ( args.destName )
if self : IsTanking ( uId ) then
local amount = args.amount or 1
local tauntStack = 3
if self : IsMythic ( ) and self.Options . TauntBehavior == " TwoMythicThreeNon " or self.Options . TauntBehavior == " TwoAlways " then
tauntStack = 2
end
if amount >= tauntStack then --Lasts 30 seconds, unknown reapplication rate, fine tune!
if args : IsPlayer ( ) then --At this point the other tank SHOULD be clear.
specWarnFlashfreeze : Show ( amount )
specWarnFlashfreeze : Play ( " stackhigh " )
else --Taunt as soon as stacks are clear, regardless of stack count.
local _ , _ , _ , _ , _ , expireTime = DBM : UnitDebuff ( " player " , spellId )
local remaining
if expireTime then
remaining = expireTime - GetTime ( )
end
if not UnitIsDeadOrGhost ( " player " ) and ( not remaining or remaining and remaining < 9.6 ) then
specWarnFlashfreezeOther : Show ( args.destName )
specWarnFlashfreezeOther : Play ( " tauntboss " )
else
warnFlashFreeze : Show ( args.destName , amount )
end
end
else
warnFlashFreeze : Show ( args.destName , amount )
end
end
elseif spellId == 245586 then
self.vb . chilledCount = self.vb . chilledCount + 1
if self.Options . specwarn245586target then
specWarnChilledBlood : CombinedShow ( 0.3 , args.destName )
else
warnChilledBlood : CombinedShow ( 0.3 , args.destName )
end
if self.Options . InfoFrame and not DBM.InfoFrame : IsShown ( ) then
DBM.InfoFrame : SetHeader ( args.spellName )
DBM.InfoFrame : Show ( 6 , " playerabsorb " , args.spellName , select ( 16 , DBM : UnitDebuff ( args.destName , args.spellName ) ) )
end
if self.Options . SetIconOnChilledBlood2 then
self : SetIcon ( args.destName , self.vb . chilledIcon )
end
self.vb . chilledIcon = self.vb . chilledIcon + 1
if self.vb . chilledIcon == 3 then
self.vb . chilledIcon = 5
elseif self.vb . chilledIcon == 6 then
self.vb . chilledIcon = 1
end
elseif spellId == 250757 then
warnCosmicGlare : CombinedShow ( 0.3 , args.destName )
if args : IsPlayer ( ) then
specWarnCosmicGlare : Show ( )
specWarnCosmicGlare : Play ( " targetyou " )
yellCosmicGlare : Yell ( )
yellCosmicGlareFades : Countdown ( 4 )
end
if self.Options . SetIconOnCosmicGlare then
self : SetIcon ( args.destName , self.vb . glareIcon )
end
self.vb . glareIcon = self.vb . glareIcon + 1
if self.vb . glareIcon == 6 then
self.vb . glareIcon = 4
end
elseif spellId == 249863 then
if self.Options . NPAuraOnVisageofTitan then
DBM.Nameplate : Show ( true , args.destGUID , spellId , nil , 30 )
end
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod : SPELL_AURA_REMOVED ( args )
local spellId = args.spellId
if spellId == 253520 then
if args : IsPlayer ( ) then
yellFulminatingPulse : Cancel ( )
end
if self.Options . SetIconOnFulminatingPulse2 then
self : SetIcon ( args.destName , 0 )
end
elseif spellId == 245586 then
self.vb . chilledCount = self.vb . chilledCount - 1
if self.Options . InfoFrame and self.vb . chilledCount == 0 then
DBM.InfoFrame : Hide ( )
end
if self.Options . SetIconOnChilledBlood2 then
self : SetIcon ( args.destName , 0 )
end
elseif spellId == 249863 then --Bonecage Armor
if self.Options . NPAuraOnVisageofTitan then
DBM.Nameplate : Hide ( true , args.destGUID , spellId )
end
elseif spellId == 250757 then
if args : IsPlayer ( ) then
yellCosmicGlareFades : Cancel ( )
end
if self.Options . SetIconOnCosmicGlare then
self : SetIcon ( args.destName , 0 )
end
end
end
function mod : SPELL_PERIODIC_DAMAGE ( _ , _ , _ , _ , destGUID , _ , _ , _ , spellId , spellName )
if ( spellId == 245634 or spellId == 253020 ) and destGUID == UnitGUID ( " player " ) and self : AntiSpam ( 2 , 4 ) then
specWarnGTFO : Show ( spellName )
specWarnGTFO : Play ( " runaway " )
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
function mod : UNIT_DIED ( args )
local cid = self : GetCIDFromGUID ( args.destGUID )
if cid == 125837 then --Torment of Amanthul
self.vb . MachinationsLeft = self.vb . MachinationsLeft - 1
if self.vb . MachinationsLeft == 0 then
timerMachinationsofAman : Stop ( )
end
end
end
--"<94.13 21:56:15> [UNIT_SPELLCAST_SUCCEEDED] Diima, Mother of Gloom(??) [[boss3:Torment of Khaz'goroth::3-3779-1712-25990-259066-00119F734F:259066]]", -- [1126]
--"<94.33 21:56:15> [CHAT_MSG_RAID_BOSS_EMOTE] |TInterface\\Icons\\ABILITY_MONK_BREATHOFFIRE:20|tThe Coven prepares to unleash the |cFFFF0000|Hspell:245671|h[Flames of Khaz'goroth]|h|r!#Diima, Mother of Gloom###
function mod : UNIT_SPELLCAST_SUCCEEDED ( uId , _ , spellId )
if spellId == 259068 or spellId == 259066 or spellId == 259069 or spellId == 259070 then
local name = UnitName ( uId )
name = string.split ( " , " , name ) --Strip title
specWarnTormentofTitans : Show ( )
if spellId == 259068 then --Torment of Aman'Thul
self.vb . MachinationsLeft = 4
specWarnTormentofTitans : Play ( " killmob " )
elseif spellId == 259066 then --Torment of Khaz'goroth
specWarnTormentofTitans : Play ( " runtoedge " )
specWarnTormentofTitans : ScheduleVoice ( 1 , " killmob " )
elseif spellId == 259069 then --Torment of Norgannon
specWarnTormentofTitans : Play ( " watchstep " )
elseif spellId == 259070 then --Torment of Golganneth
specWarnTormentofTitans : Play ( " scatter " )
specWarnTormentofTitans : ScheduleVoice ( 1 , " killmob " )
end
if not titanCount [ name ] then
titanCount [ name ] = 1
elseif titanCount [ name ] then
titanCount [ name ] = titanCount [ name ] + 1
end
if titanCount [ name ] == 2 then
titanCount [ name ] = 0
timerBossIncoming : Start ( 8.7 , name )
end
DBM : Debug ( " UNIT_SPELLCAST_SUCCEEDED fired with: " .. name , 2 )
elseif spellId == 250752 then --Cosmic Glare
timerCosmicGlareCD : Start ( )
end
end
--"<196.23 00:02:34> [UNIT_TARGETABLE_CHANGED] boss3#true#true#true#Diima, Mother of Gloom#Creature-0-2083-1712-12288-122469-0000111E27#elite#2150947263", -- [1436]
--"<196.23 00:02:34> [UNIT_TARGETABLE_CHANGED] nameplate2#false#false#true#Noura, Mother of Flames#Creature-0-2083-1712-12288-122468-0000111E27#elite#2150947229", -- [1437]
--"<196.23 00:02:34> [UNIT_TARGETABLE_CHANGED] boss2#false#false#true#Noura, Mother of Flames#Creature-0-2083-1712-12288-122468-0000111E27#elite#2150947229", -- [1438]
--"<198.19 00:02:36> [UNIT_SPELLCAST_SUCCEEDED] Noura, Mother of Flames(??) [[boss2:Spectral Army of Norgannon::3-2083-1712-12288-250334-000B1120DC:250334]]", -- [1456]
function mod : UNIT_TARGETABLE_CHANGED ( uId )
local cid = self : GetUnitCreatureId ( uId )
local targetWeWarn = false
if UnitExists ( uId ) then
targetWeWarn = true
DBM : Debug ( " UNIT_TARGETABLE_CHANGED, Boss Engaging " , 2 )
else
DBM : Debug ( " UNIT_TARGETABLE_CHANGED, Boss Leaving " , 2 )
end
if targetWeWarn then
if self.Options . SpecWarn118212switchcount then
specWarnActivated : Show ( UnitName ( uId ) )
specWarnActivated : Play ( " changetarget " )
else
warnActivated : Show ( UnitName ( uId ) )
end
end
if cid == 122468 then --Noura
if targetWeWarn then
timerWhirlingSaberCD : Start ( 9 )
timerFieryStrikeCD : Start ( 11.8 )
if not self : IsEasy ( ) then
timerFulminatingPulseCD : Start ( 20.6 )
end
else
timerFieryStrikeCD : Stop ( )
timerWhirlingSaberCD : Stop ( )
timerFulminatingPulseCD : Stop ( )
end
elseif cid == 122467 then --Asara
if targetWeWarn then
--TODO, timers, never saw her leave so never saw her return
else
timerShadowBladesCD : Stop ( )
timerStormofDarknessCD : Stop ( )
end
elseif cid == 122469 then --Diima
if targetWeWarn then
timerChilledBloodCD : Start ( 6.5 )
timerFlashFreezeCD : Start ( 10.1 )
if not self : IsEasy ( ) then
timerOrbofFrostCD : Start ( 30 )
end
else
timerFlashFreezeCD : Stop ( )
timerChilledBloodCD : Stop ( )
timerOrbofFrostCD : Stop ( )
end
elseif cid == 125436 then --Thu'raya (mythic only)
if targetWeWarn then
self.vb . touchCosmosCast = 0
timerCosmicGlareCD : Start ( 5 )
else
timerCosmicGlareCD : Stop ( )
end
end
end
function mod : OnSync ( msg , firstInterrupt )
if self : IsLFR ( ) then return end
if msg == " Three " then
self.vb . interruptBehavior = " Three "
elseif msg == " Four " then
self.vb . interruptBehavior = " Four "
elseif msg == " Five " then
self.vb . interruptBehavior = " Five "
end
if firstInterrupt then
self.vb . ignoreFirstInterrupt = firstInterrupt == " true " and true or false
end
end