local mod = DBM:NewMod("BCEvent", "DBM-WorldEvents", 4) local L = mod:GetLocalizedStrings() mod:SetRevision("20240315080105") mod:SetCreatureID(17968, 21212, 19622) mod:SetEncounterID(2319) mod:SetModelID(20939)--Archimond mod:SetBossHPInfoToHighest() mod:RegisterCombat("combat") mod:SetWipeTime(60) mod:RegisterEventsInCombat( "SPELL_CAST_START 31970", "SPELL_AURA_APPLIED 38280 38575 32014", "SPELL_AURA_REMOVED 38280", "INSTANCE_ENCOUNTER_ENGAGE_UNIT", "ZONE_CHANGED_NEW_AREA" ) --Vashj local warnCharge = mod:NewTargetAnnounce(38280, 4) --Archimonde local warnBurst = mod:NewTargetAnnounce(32014, 3) --Vashj local specWarnCharge = mod:NewSpecialWarningMoveAway(38280, nil, nil, nil, 1, 2) local yellCharge = mod:NewYell(38280) local specWarnToxic = mod:NewSpecialWarningMove(38575, nil, nil, nil, 1, 2) --Archimonde local specWarnFear = mod:NewSpecialWarningSpell(31970, nil, nil, nil, 2, 2) local specWarnBurst = mod:NewSpecialWarningYou(32014, nil, nil, nil, 1, 2) mod:AddRangeFrameOption(10, 38280) mod.vb.phase = 0 local seenAdds = {} function mod:OnCombatStart() table.wipe(seenAdds) self.vb.phase = 0 self.vb.bossLeft = 4--Because we change it to 3 right away self.numBoss = 3 end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end function mod:SPELL_CAST_START(args) if args.spellId == 31970 then specWarnFear:Show() specWarnFear:Play("fearsoon") end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 38280 then if args:IsPlayer() then specWarnCharge:Show() specWarnCharge:Play("runout") yellCharge:Yell() if self.Options.RangeFrame then DBM.RangeCheck:Show(10) end else warnCharge:Show(args.destName) end elseif args.spellId == 38575 and args:IsPlayer() and self:AntiSpam() then specWarnToxic:Show() specWarnToxic:Play("runaway") elseif args.spellId == 32014 then warnBurst:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnBurst:Show() specWarnBurst:Play("targetyou") end end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 38280 and args:IsPlayer() then if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end end function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT() for i = 1, 5 do local unitID = "boss"..i local GUID = UnitGUID(unitID) if GUID and not seenAdds[GUID] then seenAdds[GUID] = true local cid = self:GetCIDFromGUID(GUID) if cid == 17968 then--Archimonde self.vb.phase = self.vb.phase + 1 self.vb.bossLeft = self.vb.bossLeft - 1 elseif cid == 21212 then--Lady Vashj self.vb.phase = self.vb.phase + 1 self.vb.bossLeft = self.vb.bossLeft - 1 elseif cid == 19622 then--Kael self.vb.phase = self.vb.phase + 1 self.vb.bossLeft = self.vb.bossLeft - 1 end end end end function mod:ZONE_CHANGED_NEW_AREA() --Cleanup timers and scheduled events if IsEncounterInProgress() then return end if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end