local mod = DBM:NewMod(1138, "DBM-Party-WoD", 3, 536) local L = mod:GetLocalizedStrings() mod.statTypes = "normal,heroic,mythic,challenge,timewalker" mod.upgradedMPlus = true mod:SetRevision("20231226123717") mod:SetCreatureID(77803, 77816) mod:SetEncounterID(1715) mod:SetBossHPInfoToHighest() mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 162500 162407 161090 162617", "SPELL_AURA_APPLIED 163947", "UNIT_DIED" ) --This mod needs an overhaul, but dungeon not likely to re-enter rotation any time soon so problem for another day local warnVX18B = mod:NewCountAnnounce(162500, 2)--Cast twice, 3rd cast is X2101, then repeats local specWarnX2101AMissile = mod:NewSpecialWarningSpell(162407, nil, nil, nil, 2, 2)--Large AOE damage local specWarnMadDash = mod:NewSpecialWarningSpell(161090, nil, nil, nil, 2, 2)--DPS version of this warning local specWarnMadDashInterrupt = mod:NewSpecialWarningMoveTo(161090, nil, nil, nil, 3, 1)--It's actually an interrupt warning for OTHER boss, not caster of this spell local specWarnSlam = mod:NewSpecialWarningCast(162617, "SpellCaster", nil, nil, 1, 2) --local timerVX18BCD = mod:NewCDTimer(33, 162500, nil, nil, nil, 3) --local timerX2101AMissileCD = mod:NewCDTimer(40, 162407, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON..DBM_COMMON_L.TANK_ICON) --local timerMadDashCD = mod:NewCDTimer(40, 161090, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) local timerSlamCD = mod:NewCDTimer(15, 162617, nil, "SpellCaster", nil, 5) local timerSlam = mod:NewCastTimer(1.5, 162617, nil, "SpellCaster", nil, 5) local timerRecovering = mod:NewBuffActiveTimer(6, 163947, nil, nil, nil, 5) local rocketsName = DBM:EJ_GetSectionInfo(9430) local borkaID = nil mod.vb.VXCast = 0 mod.vb.SlamCast = 0 local function getBorkaID(self) for i = 1, 2 do local uId = "boss"..i if self:GetUnitCreatureId(uId) == 77816 then borkaID = uId return end end end function mod:OnCombatStart(delay) borkaID = nil self.vb.VXCast = 0 self.vb.SlamCast = 0 timerSlamCD:Start(9-delay) -- timerX2101AMissileCD:Start(18.5-delay) self:Schedule(1, getBorkaID, self) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 162500 then self.vb.VXCast = self.vb.VXCast + 1 warnVX18B:Show(self.vb.VXCast) --Probably won't actually fix bug but I caused be arsed to figure out how shit actually works --when this dungeon stops being relevent in 1 week anyways -- if self:AntiSpam(20, 1) then -- timerVX18BCD:Start() -- end elseif spellId == 162407 then self.vb.VXCast = 0 specWarnX2101AMissile:Show() specWarnX2101AMissile:Play("aesoon") -- timerX2101AMissileCD:Start() elseif spellId == 161090 then self.vb.SlamCast = 0 if not borkaID then getBorkaID(self) end if borkaID and self:IsTanking("player", borkaID, nil, true) then--failsafe 2 specWarnMadDashInterrupt:Show(rocketsName) specWarnMadDashInterrupt:Play("targetyou")--bleh voice choice else specWarnMadDash:Show() specWarnMadDash:Play("farfromline") end -- timerMadDashCD:Start() elseif spellId == 162617 then self.vb.SlamCast = self.vb.SlamCast + 1 specWarnSlam:Show() timerSlam:Start() specWarnSlam:Play("stopcast") -- if self.vb.SlamCast == 2 then -- timerSlamCD:Start(30) -- else timerSlamCD:Start() -- end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 163947 then local unitid for i = 1, 2 do if UnitGUID("boss"..i) == args.destGUID then unitid = "boss"..i end end if unitid then local _, _, _, _, duration, expires, _, _ = DBM:UnitBuff(unitid, args.spellName) if expires then timerRecovering:Start(expires-GetTime()) end end end end function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) --Maybe both cancel if either one dies? if cid == 77816 then -- timerMadDashCD:Stop() timerSlamCD:Stop() elseif cid == 77803 then -- timerX2101AMissileCD:Stop() end end