local mod = DBM:NewMod(1208, "DBM-Party-WoD", 5, 556) local L = mod:GetLocalizedStrings() local wowToc = DBM:GetTOC() mod.statTypes = "normal,heroic,mythic,challenge,timewalker" if (wowToc >= 100200) then mod.upgradedMPlus = true end mod:SetRevision("20231022202350") mod:SetCreatureID(82682) mod:SetEncounterID(1751) mod:SetHotfixNoticeRev(20231020000000) --mod:SetMinSyncRevision(20211203000000) mod:RegisterCombat("combat") if (wowToc >= 100200) then --Patch 10.2 or later mod:RegisterEventsInCombat( "SPELL_CAST_START 428139 427863", "SPELL_AURA_APPLIED 427899 428082", "SPELL_PERIODIC_DAMAGE 426991", "SPELL_PERIODIC_MISSED 426991" ) --[[ (ability.id = 428139) and type = "begincast" or (ability.id = 428177 or ability.id = 427899 or ability.id = 428082) and type = "applybuff" or type = "dungeonencounterstart" or type = "dungeonencounterend" or (ability.id = 427899 or ability.id = 428082) and type = "begincast" --NOTE, You can detect cinder and glacial earlier on main boss with cast start, BUT spore image only has applied. --NOTE, sometimes boss bugs and starts casting random shit at random times (ie breaks order) --For consistency sake, applied is used for both. Spacial has cast start for both so that's used for both --TODO, visit warning types for each type, just to avoid double special alerts for overlaps which basically --TODO, target scan who the boss is targetting during arcane to see who furthest distance is? --]] local warnCinderboltStorm = mod:NewSpellAnnounce(427899, 4) local specWarnGlacialFusion = mod:NewSpecialWarningDodge(428082, nil, nil, nil, 2, 2) local specWarnSpetialCompression = mod:NewSpecialWarningCount(428139, nil, nil, nil, 2, 13) local specWarnFrostbolt = mod:NewSpecialWarningInterrupt(427863, "HasInterrupt", nil, nil, 1, 2)--Prio frostbolt interrupts over other two, because of slow local specWarnGTFO = mod:NewSpecialWarningGTFO(426991, nil, nil, nil, 1, 8) local timerCinderboltStormCD = mod:NewCDSourceTimer(60, 427899, nil, nil, nil, 2) local timerGlacialFusionCD = mod:NewCDSourceTimer(60, 428082, nil, nil, nil, 3) local timerSpetialCompressionCD = mod:NewCDSourceTimer(60, 428139, nil, nil, nil, 5) mod.vb.pullCount = 0 function mod:OnCombatStart(delay) self.vb.pullCount = 0 timerCinderboltStormCD:Start(3, DBM_COMMON_L.BOSS) if not self:IsMythic() then--Mythic schedulers timers differently timerGlacialFusionCD:Start(24.1, DBM_COMMON_L.BOSS) timerSpetialCompressionCD:Start(43.7, DBM_COMMON_L.BOSS) end end --boss first / add second --expected: --fire alone --ice and fire --arcane and ice --fire and arcane --wtf: --Fire alone --ice and fire --fire and arcane --ice and fire --https://www.warcraftlogs.com/reports/4ftYFxqJajW3PvVb#fight=6&pins=2%24Off%24%23244F4B%24expression%24%09(ability.id%20%3D%20428139)%20and%20type%20%3D%20%22begincast%22%0A%09%20or%20(ability.id%20%3D%20428177%20or%20ability.id%20%3D%20427899%20or%20ability.id%20%3D%20428082)%20and%20type%20%3D%20%22applybuff%22%0A%09%20or%20type%20%3D%20%22dungeonencounterstart%22%20or%20type%20%3D%20%22dungeonencounterend%22&view=events function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 428139 then self.vb.pullCount = self.vb.pullCount + 1 specWarnSpetialCompression:Show(self.vb.pullCount) specWarnSpetialCompression:Play("pullin") if self:IsMythic() then if args:GetSrcCreatureID() == 82682 then--Source is Boss timerGlacialFusionCD:Start(20, DBM_COMMON_L.BOSS)--Fire, Ice, Arcane, repeat timerSpetialCompressionCD:Start(20, DBM_COMMON_L.ADD)--Add will recast this next end else timerSpetialCompressionCD:Start(60, DBM_COMMON_L.BOSS) end elseif spellId == 427863 then if self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnFrostbolt:Show(args.sourceName) specWarnFrostbolt:Play("kickcast") end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 427899 then warnCinderboltStorm:Show() if self:IsMythic() then if args:GetSrcCreatureID() == 82682 then--Source is Boss timerGlacialFusionCD:Start(20, DBM_COMMON_L.BOSS)--Fire, Ice, Arcane, repeat timerCinderboltStormCD:Start(20, DBM_COMMON_L.ADD)--Add will recast this next end else timerCinderboltStormCD:Start(60, DBM_COMMON_L.BOSS) end elseif spellId == 428082 then specWarnGlacialFusion:Show() specWarnGlacialFusion:Play("watchorb") if self:IsMythic() then if args:GetSrcCreatureID() == 82682 then--Source is Boss timerSpetialCompressionCD:Start(20, DBM_COMMON_L.BOSS)--Fire, Ice, Arcane, repeat timerGlacialFusionCD:Start(20, DBM_COMMON_L.ADD)--Add will recast this next end else timerGlacialFusionCD:Start(60, DBM_COMMON_L.BOSS) end end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 426991 and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE else mod:RegisterEventsInCombat( "SPELL_CAST_START 168885", "SPELL_AURA_APPLIED 166492 166572 166726 166475 166476 166477", "SPELL_INTERRUPT" ) --10.1.7 on retail, and classic if it happens (if it doesn't happen old version of mod will be retired) local warnFrostPhase = mod:NewSpellAnnounce(166476, 2, nil, nil, nil, nil, nil, 2) local warnArcanePhase = mod:NewSpellAnnounce(166477, 2, nil, nil, nil, nil, nil, 2) local specWarnParasiticGrowth = mod:NewSpecialWarningCount(168885, "Tank")--No voice ideas for this --local specWarnFireBloom = mod:NewSpecialWarningSpell(166492, nil, nil, nil, 2) local specWarnFrozenRainMove = mod:NewSpecialWarningMove(166726, nil, nil, nil, 1, 8) local timerParasiticGrowthCD = mod:NewCDCountTimer(11.5, 168885, nil, "Tank|Healer", 2, 5, nil, DBM_COMMON_L.TANK_ICON)--Every 12 seconds unless comes off cd during fireball/frostbolt, then cast immediately after. mod.vb.ParasiteCount = 0 function mod:OnCombatStart(delay) self.vb.ParasiteCount = 0 timerParasiticGrowthCD:Start(32.5-delay, 1) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 168885 then self.vb.ParasiteCount = self.vb.ParasiteCount + 1 specWarnParasiticGrowth:Show(self.vb.ParasiteCount) timerParasiticGrowthCD:Stop() timerParasiticGrowthCD:Start(nil, self.vb.ParasiteCount+1) end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId --if args:IsSpellID(166492, 166572) and self:AntiSpam(12) then--Because the dumb spell has no cast Id, we can only warn when someone gets hit by one of rings. --specWarnFireBloom:Show() --specWarnFireBloom:Play("firecircle") if spellId == 166726 and args:IsPlayer() and self:AntiSpam(2) then--Because dumb spell has no cast Id, we can only warn when people get debuff from standing in it. specWarnFrozenRainMove:Show() specWarnFrozenRainMove:Play("watchfeet") elseif spellId == 166476 then warnFrostPhase:Show() warnFrostPhase:Play("ptwo") elseif spellId == 166477 then warnArcanePhase:Show() warnArcanePhase:Play("pthree") end end function mod:SPELL_INTERRUPT(args) if type(args.extraSpellId) == "number" and args.extraSpellId == 168885 then timerParasiticGrowthCD:Stop() self.vb.ParasiteCount = 0 timerParasiticGrowthCD:Start(30, 1) end end end