diff --git a/DBM-Core/Changelog.txt b/DBM-Core/Changelog.txt index f690606..2a10d7f 100644 --- a/DBM-Core/Changelog.txt +++ b/DBM-Core/Changelog.txt @@ -216,3 +216,10 @@ v5.15 16/10/2022 - Fixed warnFlameBreath on Alar not working for all difficulties - Solarion now warns stack number at 4 instead of 5 ---------------------------------------------------------------------------------------------------- +v5.16 30/11/2022 +- Added Mythic mechanics for Nalorak and Halazzi in ZA +- Added a few missing spells from Malacrass' clones +- Fixed double announce of Electrical Storm on Akilzon and Zuljin +- Fixed lua error with DBM:AntiSpam +- Fixed spellIDs for SSC +---------------------------------------------------------------------------------------------------- diff --git a/DBM-Core/DBM-Core.lua b/DBM-Core/DBM-Core.lua index 161a1b2..0217576 100644 --- a/DBM-Core/DBM-Core.lua +++ b/DBM-Core/DBM-Core.lua @@ -42,10 +42,10 @@ -- Globals/Default Options -- ------------------------------- DBM = { - Revision = ("$Revision: 5015 $"):sub(12, -3), - Version = "5.15", - DisplayVersion = "5.15", -- the string that is shown as version - ReleaseRevision = 5013 -- the revision of the latest stable version that is available (for /dbm ver2) + Revision = ("$Revision: 5016 $"):sub(12, -3), + Version = "5.16", + DisplayVersion = "5.16", -- the string that is shown as version + ReleaseRevision = 5015 -- the revision of the latest stable version that is available (for /dbm ver2) } DBM_SavedOptions = {} @@ -2358,6 +2358,22 @@ function DBM:Capitalize(str) return str:sub(1, numBytes):upper()..str:sub(numBytes + 1):lower() end +-- An anti spam function to throttle spammy events (e.g. SPELL_AURA_APPLIED on all group members) +-- @param time the time to wait between two events (optional, default 2.5 seconds) +-- @param id the id to distinguish different events (optional, only necessary if your mod keeps track of two different spam events at the same time) +function DBM:AntiSpam(times, id) + if GetTime() - (id and (self["lastAntiSpam" .. tostring(id)] or 0) or self.lastAntiSpam or 0) > (times or 2.5) then + if id then + self["lastAntiSpam" .. tostring(id)] = GetTime() + else + self.lastAntiSpam = GetTime() + end + return true + else + return false + end +end + ----------------- -- Map Sizes -- ----------------- @@ -2661,22 +2677,6 @@ function bossModPrototype:IsHealer() or (select(2, UnitClass("player")) == "PRIEST" and select(3, GetTalentTabInfo(3)) < 51) end --- An anti spam function to throttle spammy events (e.g. SPELL_AURA_APPLIED on all group members) --- @param time the time to wait between two events (optional, default 2.5 seconds) --- @param id the id to distinguish different events (optional, only necessary if your mod keeps track of two different spam events at the same time) -function DBM:AntiSpam(time, id) - if GetTime() - (id and (self["lastAntiSpam" .. tostring(id)] or 0) or self.lastAntiSpam or 0) > (time or 2.5) then - if id then - self["lastAntiSpam" .. tostring(id)] = GetTime() - else - self.lastAntiSpam = GetTime() - end - return true - else - return false - end -end - ------------------------- -- Boss Health Frame -- diff --git a/DBM-Serpentshrine/Fathomlord.lua b/DBM-Serpentshrine/Fathomlord.lua index b6dca31..145538d 100644 --- a/DBM-Serpentshrine/Fathomlord.lua +++ b/DBM-Serpentshrine/Fathomlord.lua @@ -13,24 +13,24 @@ mod:RegisterEvents( "SPELL_SUMMON" ) -local warnCariPower = mod:NewSpellAnnounce(38451, 3) -local warnTidalPower = mod:NewSpellAnnounce(38452, 3) -local warnSharPower = mod:NewSpellAnnounce(38455, 3) -local warnBeastWithin = mod:NewTargetAnnounce(351373, 3) -local warnHurricane = mod:NewSpellAnnounce(83541, 3) -local warnHurricaneYou = mod:NewSpecialWarningYou(83541, 3) -local warnBlessingTides = mod:NewAnnounce(L.BlessingTides, 2, 351302) +local warnCariPower = mod:NewSpellAnnounce(2137927, 3) +local warnTidalPower = mod:NewSpellAnnounce(2137928, 3) +local warnSharPower = mod:NewSpellAnnounce(2137929, 3) +local warnBeastWithin = mod:NewTargetAnnounce(2137939, 3) +local warnHurricane = mod:NewSpellAnnounce(2137918, 3) +local warnHurricaneYou = mod:NewSpecialWarningYou(2137918, 3) +local warnBlessingTides = mod:NewAnnounce(L.BlessingTides, 2, 2137931) -local specWarnHeal = mod:NewSpellAnnounce(83535, 3) +local specWarnHeal = mod:NewSpellAnnounce(2137916, 3) local specWarnTotem = mod:NewSpecialWarning("Move from Totem!") -local timerBlessingTides = mod:NewNextTimer(30, 351302) +local timerBlessingTides = mod:NewNextTimer(30, 2137931) local timerTornado = mod:NewNextTimer(30, 38517) -local timerHeal = mod:NewNextTimer(30, 83535) -local timerFreeze = mod:NewCDTimer(20, 38357) -local timerHurricane = mod:NewNextTimer(30, 83541) --351370, 351371 -local timerCataclysmic = mod:NewCDTimer(9, 38441) -local timerBeastWithin = mod:NewNextTimer(30, 351373) +local timerHeal = mod:NewNextTimer(30, 2137916) +local timerFreeze = mod:NewCDTimer(20, 2137909) +local timerHurricane = mod:NewNextTimer(30, 2137918) --351370, 351371 +local timerCataclysmic = mod:NewCDTimer(9, 2137912) +local timerBeastWithin = mod:NewNextTimer(30, 2137939) local berserkTimer = mod:NewBerserkTimer(720) @@ -58,52 +58,52 @@ function mod:Tornado() end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(38451, 85367) then -- 85367 + if args:IsSpellID(2137927, 85367) then -- 85367 warnCariPower:Show() CariPowerActive = true - elseif args:IsSpellID(38452, 85368) then -- 85368 + elseif args:IsSpellID(2137928, 85368) then -- 85368 warnTidalPower:Show() TidalPowerActive = true - elseif args:IsSpellID(38455, 85369) then -- 85369 + elseif args:IsSpellID(2137929, 85369) then -- 85369 warnSharPower:Show() SharPowerActive = true - elseif args.spellId == 38357 then -- Deep Freeze + elseif args.spellId == 2137909 then -- Deep Freeze if args.sourceName == L.name then --Fathom-Lord Karathress timerFreeze:Start(30) -- Deep Freeze Fathom-Lord else timerFreeze:Start() -- Fathom-Guard Caribdis end - elseif args:IsSpellID(351373) then -- Beast Within + elseif args:IsSpellID(2137939) then -- Beast Within warnBeastWithin:Show(args.destName) timerBeastWithin:Start() - elseif args:IsSpellID(83541, 351370, 351371) then -- Hurricane + elseif args:IsSpellID(2137918, 2137919, 2137920, 2137921) then -- Hurricane warnHurricane:Show(args.destName) timerHurricane:Start() if args:IsPlayer() then warnHurricaneYou:Show() end - elseif args:IsSpellID(351302) then -- Blessing of the Tides + elseif args:IsSpellID(2137931) then -- Blessing of the Tides warnBlessingTides:Show(args.destName) timerBlessingTides:Start() end end function mod:SPELL_AURA_APPLIED_DOSE(args) - if args:IsSpellID(351302) then -- Blessing of the Tides + if args:IsSpellID(2137931) then -- Blessing of the Tides warnBlessingTides:Show(args.destName) timerBlessingTides:Start() end end function mod:SPELL_CAST_START(args) - if args:IsSpellID(38330, 83535) then -- 83535 + if args:IsSpellID(2137916, 83535) then -- 83535 specWarnHeal:Show() timerHeal:Start() end end function mod:SPELL_CAST_SUCCESS(args) - if args:IsSpellID(38441, 351365, 351366) and CariPowerActive == true and TidalPowerActive == true and SharPowerActive == true then + if args:IsSpellID(2137912, 2137913, 2137914, 2137915) and CariPowerActive == true and TidalPowerActive == true and SharPowerActive == true then timerCataclysmic:Start() end end diff --git a/DBM-Serpentshrine/Hydross.lua b/DBM-Serpentshrine/Hydross.lua index 0604a04..60cc1fc 100644 --- a/DBM-Serpentshrine/Hydross.lua +++ b/DBM-Serpentshrine/Hydross.lua @@ -15,20 +15,20 @@ mod:RegisterEvents( local warnMarkF = mod:NewAnnounce(L.WarnMark, 3, 351203) local warnMarkN = mod:NewAnnounce(L.WarnMark, 3, 351204) local warnPhase = mod:NewAnnounce("WarnPhase", 4) -local warnTomb = mod:NewTargetAnnounce(38235, 3) +local warnTomb = mod:NewTargetAnnounce(2137505, 3) local specWarnTidal = mod:NewSpecialWarning("Tidalwave, stack!") -local warnSludge = mod:NewTargetAnnounce(38246, 2)--Maybe filter it some if spammy? +local warnSludge = mod:NewTargetAnnounce(2137509, 2)--Maybe filter it some if spammy? local warnTidalPower = mod:NewAnnounce(L.WarnMark, 3, 351204) -- local specWarnMark = mod:NewSpecialWarning("SpecWarnMark") -local timerNextTomb = mod:NewNextTimer(45, 38235) -local timerNextSludge = mod:NewNextTimer(45, 38246) -local timerNextTidal = mod:NewNextTimer(45, 85416) -local timerTidal1 = mod:NewTimer(6, "Tidal Wave (1)", 85416) -local timerTidal2 = mod:NewTimer(6, "Tidal Wave (2)", 85416) -local timerTidal3 = mod:NewTimer(6, "Tidal Wave (3)", 85416) -local timerSludge = mod:NewTargetTimer(12, 38246) +local timerNextTomb = mod:NewNextTimer(45, 2137505) +local timerNextSludge = mod:NewNextTimer(45, 2137509) +local timerNextTidal = mod:NewNextTimer(45, 2137514) +local timerTidal1 = mod:NewTimer(6, "Tidal Wave (1)", 2137514) +local timerTidal2 = mod:NewTimer(6, "Tidal Wave (2)", 2137514) +local timerTidal3 = mod:NewTimer(6, "Tidal Wave (3)", 2137514) +local timerSludge = mod:NewTargetTimer(12, 2137509) -- local timerMark = mod:NewTimer(15, "TimerMark", 351203) local berserkTimer = mod:NewTimer(600, "Berserk", 26662) @@ -58,7 +58,7 @@ end function mod:PhaseChangeAddTime() local elapsed, total = timerNextTidal:GetTime(); local currentRemainingTidalTimer = total - elapsed - timerNextTidal:AddTime(2) + timerNextTidal:AddTime(2.5) self:UnscheduleMethod("tidalWave") self:ScheduleMethod(currentRemainingTidalTimer+2, "tidalWave") berserkTimer:AddTime(2) @@ -85,7 +85,7 @@ function mod:SPELL_AURA_APPLIED(args) -- elseif args.spellId == 351203 then -- timerMark:Cancel() -- timerMark:Start() - if args:IsSpellID(37961) then -- Corruption transform on boss + if args:IsSpellID(2137504) then -- Corruption transform on boss warnPhase:Show(L.Nature) timerNextTomb:Stop() if GetTime() - LastTombSludge <= 32 then @@ -99,7 +99,7 @@ function mod:SPELL_AURA_APPLIED(args) end function mod:SPELL_AURA_REMOVED(args) - if args:IsSpellID(37961) then -- Losing Corruption transform on boss + if args:IsSpellID(2137504) then -- Losing Corruption transform on boss warnPhase:Show(L.Frost) timerNextSludge:Stop() if GetTime() - LastTombSludge <= 32 then @@ -113,17 +113,17 @@ function mod:SPELL_AURA_REMOVED(args) end function mod:SPELL_AURA_APPLIED_DOSE(args) - if args:IsSpellID(351203, 351286, 351287) then -- Heroic: 351286, Mythic: 351287 --Hydros + if args:IsSpellID(2137523, 2137524, 2137525, 2137526) then -- Mark of Hydross if args.amount and (GetTime() - lastMarkF) > 2 and args.amount >= 10 and args.amount % 5 == 0 then lastMarkF = GetTime() warnMarkF:Show(args.amount, args.spellName) end - elseif args:IsSpellID(351204, 351288, 351289) then -- Heroic: 351288, Mythic: 351289 --Corruption + elseif args:IsSpellID(2137527, 2137528, 2137529, 2137530) then -- Mark of Corruption if args.amount and (GetTime() - lastMarkN) > 2 and args.amount >= 10 and args.amount % 5 == 0 then lastMarkN = GetTime() warnMarkN:Show(args.amount, args.spellName) end - elseif args:IsSpellID(85413) then -- Heroic: 351288, Mythic: 351289 --Corruption + elseif args:IsSpellID(2137514) then -- Tidal Power if args.amount and (GetTime() - lastTidalPower) > 2 and args.amount >= 75 and args.amount % 5 == 0 then lastTidalPower = GetTime() warnTidalPower:Show(args.amount, args.spellName) @@ -132,17 +132,14 @@ function mod:SPELL_AURA_APPLIED_DOSE(args) end function mod:SPELL_CAST_SUCCESS(args) - if args:IsSpellID(38235, 351290, 351291) then + if args:IsSpellID(2137505, 2137506, 2137507, 2137508) then warnTomb:Show(args.destName) timerNextTomb:Start() LastTombSludge = GetTime() - elseif args:IsSpellID(38246, 351292, 351293) then + elseif args:IsSpellID(2137509, 2137510, 2137511, 2137512) then warnSludge:Show(args.destName) timerSludge:Start(args.destName) timerNextSludge:Start() LastTombSludge = GetTime() end -end - --- 351203 - Mark of Hydross --- 351204 - Mark of Corruption \ No newline at end of file +end \ No newline at end of file diff --git a/DBM-Serpentshrine/Leotheras.lua b/DBM-Serpentshrine/Leotheras.lua index 7af0421..19a3540 100644 --- a/DBM-Serpentshrine/Leotheras.lua +++ b/DBM-Serpentshrine/Leotheras.lua @@ -15,25 +15,25 @@ mod:RegisterEvents( ) local warnPhase = mod:NewAnnounce("WarnPhase", 2) -local warnDemon = mod:NewTargetAnnounce(37676, 4) -local warnMC = mod:NewTargetAnnounce(37749, 4) +local warnDemon = mod:NewTargetAnnounce(2137830, 4) +local warnMC = mod:NewTargetAnnounce(2137835, 4) local warnPhase2 = mod:NewPhaseAnnounce(2, 2) -local specWarnWhirl = mod:NewSpecialWarningRun(37640) -local specWarnDemon = mod:NewSpecialWarningYou(37676) +local specWarnWhirl = mod:NewSpecialWarningRun(2137805) +local specWarnDemon = mod:NewSpecialWarningYou(2137830) -local warnEven = mod:NewTargetAnnounce(351201, 3) --- local specWarnEvenYou = mod:NewSpecialWarningYou(351201) -local warnChaos = mod:NewTargetAnnounce(85365, 3) -local specWarnChaosYou = mod:NewSpecialWarningYou(85365) +local warnEven = mod:NewTargetAnnounce(2137839, 3) +-- local specWarnEvenYou = mod:NewSpecialWarningYou(2137839) +local warnChaos = mod:NewTargetAnnounce(2137831, 3) +local specWarnChaosYou = mod:NewSpecialWarningYou(2137831) -local timerNextWhirl = mod:NewNextTimer(45, 37640) -local timerWhirl = mod:NewBuffActiveTimer(12, 37640) +local timerNextWhirl = mod:NewNextTimer(45, 2137805) +local timerWhirl = mod:NewBuffActiveTimer(12, 2137805) local timerPhase = mod:NewTimer(62, "TimerPhase", 39088) -local timerNextDemon = mod:NewNextTimer(23, 37676) -local timerDemon = mod:NewBuffActiveTimer(30, 37676) -local timerChaos = mod:NewTargetTimer(4, 85365) --351271, 351272, 351273 -local timerNextEven = mod:NewNextTimer(32, 351201) +local timerNextDemon = mod:NewNextTimer(23, 2137830) +local timerDemon = mod:NewBuffActiveTimer(30, 2137830) +local timerChaos = mod:NewTargetTimer(4, 2137831) --351271, 351272, 351273 +local timerNextEven = mod:NewNextTimer(32, 2137839) local berserkTimer = mod:NewBerserkTimer(720) @@ -105,13 +105,13 @@ function mod:OnCombatEnd(delay) end function mod:SPELL_AURA_APPLIED(args) - if args.spellId == 37640 then + if args.spellId == 2137805 then specWarnWhirl:Show() timerWhirl:Start() if self.vb.phase == 2 then timerNextWhirl:Start() end - -- elseif args:IsSpellID(37676, 85361) then -- 85361 + -- elseif args:IsSpellID(2137830, 85361) then -- 85361 -- warnDemonTargets[#warnDemonTargets + 1] = args.destName -- self:Unschedule(showDemonTargets) -- if self.Options.DemonIcon then @@ -126,7 +126,7 @@ function mod:SPELL_AURA_APPLIED(args) -- else -- self:Schedule(0.7, showDemonTargets, self) -- end - -- elseif args:IsSpellID(37749, 85361) then -- 85361 + -- elseif args:IsSpellID(2137835, 85361) then -- 85361 -- warnMCTargets[#warnMCTargets + 1] = args.destName -- self:Unschedule(showMCTargets) -- self:Schedule(0.3, showMCTargets) @@ -136,13 +136,13 @@ function mod:SPELL_AURA_APPLIED(args) end function mod:SPELL_CAST_START(args) - if args:IsSpellID(85365, 351271, 351272, 351273) then + if args:IsSpellID(2137831, 2137832, 2137833, 2137834) then self:ScheduleMethod(0.3, "Chaos") end end function mod:SPELL_CAST_SUCCESS(args) - if args:IsSpellID(351200, 351201, 351202) then -- Tank swap (Even out the Odds) + if args:IsSpellID(2137838, 2137839, 2137840) then -- Tank swap (Even out the Odds) warnEven:Show(args.destName) timerNextEven:Start() end diff --git a/DBM-Serpentshrine/TheLurkerBelow.lua b/DBM-Serpentshrine/TheLurkerBelow.lua index 0553f99..04913a8 100644 --- a/DBM-Serpentshrine/TheLurkerBelow.lua +++ b/DBM-Serpentshrine/TheLurkerBelow.lua @@ -15,22 +15,22 @@ mod:RegisterEvents( local warnSubmerge = mod:NewAnnounce("WarnSubmerge", 2, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") local warnEmerge = mod:NewAnnounce("WarnEmerge", 1, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") -local warnWhirl = mod:NewSpellAnnounce(37363, 2) -local warnFocusedFire = mod:NewTargetAnnounce(351300, 2) +local warnWhirl = mod:NewSpellAnnounce(2137605, 2) +local warnFocusedFire = mod:NewTargetAnnounce(2137622, 2) -local warnFocusedYou = mod:NewSpecialWarningYou(351300) -local specWarnSpout = mod:NewSpecialWarningSpell(37433) +local warnFocusedYou = mod:NewSpecialWarningYou(2137622) +local specWarnSpout = mod:NewSpecialWarningSpell(2137607) local timerSubmerge = mod:NewTimer(135, "TimerSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") local timerEmerge = mod:NewTimer(60, "TimerEmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") -local timerNextSpout = mod:NewNextTimer(70, 37433) --heroic: 351337, Mythic:351338 -local timerSpout = mod:NewBuffActiveTimer(22, 37433) -local timerNextWhirl = mod:NewNextTimer(20, 37363) --Whirl has 20s next timer, but pushed back by other casts. Need "GetTimer" to push it back (see maiden/mag) -local timerGeyser = mod:NewNextTimer(20, 37478) --heroic: 351335, Mythic:351336 +local timerNextSpout = mod:NewNextTimer(70, 2137607) +local timerSpout = mod:NewBuffActiveTimer(22, 2137607) +local timerNextWhirl = mod:NewNextTimer(20, 2137605) --Whirl has 20s next timer, but pushed back by other casts. Need "GetTimer" to push it back (see maiden/mag) +local timerGeyser = mod:NewNextTimer(20, 2137611) --Ascended mechanics: local timerTentacle = mod:NewNextTimer(10, 26391) -local warnSmash = mod:NewSpecialWarningSpell(351322) +local warnSmash = mod:NewSpecialWarningSpell(2137626) function mod:OnCombatStart(delay) submerged = false @@ -44,7 +44,7 @@ function mod:SPELL_AURA_APPLIED(args) -- if args:IsSpellID(7731) then -- DBM:AddMsg("Fishing applied - Pull inc") -- else - if args:IsSpellID(351300) then + if args:IsSpellID(2137622) then if args.destName == UnitName("player") then warnFocusedYou:Show() else @@ -81,23 +81,23 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, src) end function mod:SPELL_CAST_START(args) - if args:IsSpellID(351322) then + if args:IsSpellID(2137626) then warnSmash:Show() end end function mod:SPELL_DAMAGE(args) - if args:IsSpellID(37478, 351335, 351336) then + if args:IsSpellID(2137611, 2137612, 2137613, 2137614) then timerGeyser:Start() - elseif args:IsSpellID(37363) then + elseif args:IsSpellID(2137605) then timerNextWhirl:Start() end end function mod:SPELL_MISSED(args) - if args:IsSpellID(37478, 351335, 351336) then + if args:IsSpellID(2137611, 2137612, 2137613, 2137614) then timerGeyser:Start() - elseif args:IsSpellID(37363) then + elseif args:IsSpellID(2137605) then timerNextWhirl:Start() end end diff --git a/DBM-Serpentshrine/Tidewalker.lua b/DBM-Serpentshrine/Tidewalker.lua index 446172e..1740dad 100644 --- a/DBM-Serpentshrine/Tidewalker.lua +++ b/DBM-Serpentshrine/Tidewalker.lua @@ -17,23 +17,23 @@ mod:RegisterEvents( -- local warnTidal = mod:NewSpellAnnounce(37730, 3) -- useless, nobody cares about the tank debuff, might as well remove to reduce bloat local warnBubble = mod:NewSpellAnnounce(37854, 4) -local warnEarthquakeSoon = mod:NewSoonAnnounce(37764, 3) -local warnShield = mod:NewSpellAnnounce(83548, 4) +local warnEarthquakeSoon = mod:NewSoonAnnounce(2137704, 3) +local warnShield = mod:NewSpellAnnounce(2137716, 4) local WarnWatery = mod:NewAnnounce("WarnWateryGlobule", 4) local warnBubble = mod:NewSpecialWarning("WarnRisingBubble",3) local specWarnMurlocs = mod:NewAnnounce("SpecWarnMurlocs", 4) -local timerShield = mod:NewNextTimer(10, 83548) +local timerShield = mod:NewNextTimer(10, 2137716) -- local timerTidal = mod:NewNextTimer(20, 37730) -local timerMurlocs = mod:NewTimer(60, "TimerMurlocs", 39088) +local timerMurlocs = mod:NewTimer(60, "TimerMurlocs", 2137719) local timerWatery = mod:NewTimer(30, "TimerWateryGlobule", "Interface\\Icons\\Spell_Frost_FrozenCore") local timerBubble = mod:NewTimer(30, "TimerBubble", "Interface\\Icons\\INV_Elemental_Primal_Water") -local timerBurst = mod:NewTimer(25, "TimerBurst", 83560) +local timerBurst = mod:NewTimer(25, "TimerBurst", 2137730) -local warnHealer = mod:NewSpecialWarning(L.WarnHealer)--83544 +local warnHealer = mod:NewSpecialWarning(L.WarnHealer)--2137713 local warnWarrior = mod:NewSpecialWarning(L.WarnWarrior)--83551 -local warnMage = mod:NewSpecialWarning(L.WarnMage)--83554 +local warnMage = mod:NewSpecialWarning(L.WarnMage)--2137720 local warnHealthLost = mod:NewAnnounce("HPLoss", 3) local berserkTimer = mod:NewBerserkTimer(600) @@ -64,18 +64,18 @@ function mod:OnCombatStart(delay) end function mod:SPELL_AURA_APPLIED(args) - if args.spellId == 83544 then + if args.spellId == 2137713 then warnHealer:Show() if self.Options.HealerIcon then self:SetIcon(args.sourceName, 1) end - elseif args.spellId == 83554 and MageAntiSpam > 120 then + elseif args.spellId == 2137720 and MageAntiSpam > 120 then MageAntiSpam = GetTime() warnMage:Show() if self.Options.MageIcon then self:SetIcon(args.sourceName, 2) end - elseif args.spellId == 83548 then + elseif args.spellId == 2137716 then warnShield:Show() timerShield:Start() end @@ -85,12 +85,12 @@ end -- end function mod:SPELL_CAST_SUCCESS(args) - if args.spellId == 37764 then + if args:IsSpellID(2137704, 2137705, 2137706, 2137707) then murlocCount = murlocCount + 1; warnEarthquakeSoon:Show() specWarnMurlocs:Show() timerMurlocs:Start(murlocType[(murlocCount % 3)]) - elseif args.spellId == 83551 and warriorAntiSpam > 120 then + elseif args.spellId == 2137718 and warriorAntiSpam > 120 then warriorAntiSpam = GetTime() warnWarrior:Show() if self.Options.WarriorIcon then diff --git a/DBM-Serpentshrine/Vashj.lua b/DBM-Serpentshrine/Vashj.lua index da4d8c6..7e725aa 100644 --- a/DBM-Serpentshrine/Vashj.lua +++ b/DBM-Serpentshrine/Vashj.lua @@ -22,11 +22,11 @@ mod:RegisterEvents( local warnPhase2 = mod:NewPhaseAnnounce(2) local warnPhase3 = mod:NewPhaseAnnounce(3) -local warnCharge = mod:NewTargetAnnounce(38280, 4) -local warnEnvenom = mod:NewTargetAnnounce(351381, 3) -local warnAimedShot = mod:NewTargetAnnounce(351310, 4) -local warnMulti = mod:NewSpellAnnounce(38310, 3) -local WarnHeal = mod:NewSpellAnnounce(83565, 3) +local warnCharge = mod:NewTargetAnnounce(2138039, 4) +local warnEnvenom = mod:NewTargetAnnounce(2138049, 3) +local warnAimedShot = mod:NewTargetAnnounce(2138044, 4) +local warnMulti = mod:NewSpellAnnounce(2138011, 3) +local WarnHeal = mod:NewSpellAnnounce(2138024, 3) local warnSporebat = mod:NewAnnounce("WarnSporebat", 3, "Interface\\Icons\\Ability_Hunter_Pet_Sporebat") local warnElemental = mod:NewAnnounce("WarnElemental", 4, "Interface\\Icons\\Spell_Frost_SummonWaterElemental_2") local warnHydra = mod:NewAnnounce("WarnHydra", 3, "Interface\\Icons\\achievement_boss_bazil_akumai") @@ -35,16 +35,18 @@ local warnEnchantress = mod:NewAnnounce("WarnEnchantress", 3, "Interface\\Icons\ local warnLoot = mod:NewAnnounce("WarnLoot", 3, "Interface\\Icons\\Spell_Nature_ElementalShields") local warnPhoenix = mod:NewAnnounce("WarnPhoenix", 3, "Interface\\Icons\\INV_Misc_PheonixPet_01") -local specWarnCharge = mod:NewSpecialWarningMove(38280) -local specWarnDischarge = mod:NewSpecialWarningMove(351379) -local specWarnToxic = mod:NewSpecialWarningMove(38575) +local specWarnCharge = mod:NewSpecialWarningMove(2138039) +local specWarnDischarge = mod:NewSpecialWarningMove(2138020) +local specWarnToxic = mod:NewSpecialWarningMove(2138035) -local timerCharge = mod:NewNextTimer(30, 38280) -local timerAimedShot = mod:NewNextTimer(30, 351388) -local timerMulti = mod:NewNextTimer(15, 38310) -local timerEnvenom = mod:NewNextTimer(30, 351381) -local timerMark = mod:NewTargetTimer(6, 351310) -local timerChargeDmg = mod:NewTimer(8, "ChargeExplosion", 351375) +local timerCharge = mod:NewNextTimer(30, 2138039) +local timerAimedShot = mod:NewNextTimer(30, 2138045) +local timerMulti = mod:NewNextTimer(15, 2138011) +local timerEnvenom = mod:NewNextTimer(30, 2138049) +local timerMark = mod:NewTargetTimer(6, 2138044) +local timerChargeDmg = mod:NewTimer(8, "ChargeExplosion", 2138040) + +local timerBreath = mod:NewNextTimer(10, 2138076) local timerElementalCD = mod:NewTimer(65, "TimerElemental", "Interface\\Icons\\Spell_Frost_SummonWaterElemental_2")--75-82 variation. because of high variation the pre warning special warning not useful, fortunately we can detect spawns with precise timing. local timerHydra = mod:NewTimer(95, "TimerHydra", "INTERFACE\\ICONS\\Achievement_ZG_Gahz") local timerNaga = mod:NewTimer(49, "TimerNaga", "Interface\\Icons\\achievement_boss_warlord_kalithresh") @@ -55,12 +57,12 @@ local timerSporebat = mod:NewTimer(23, "NextSporebat", "Interface\\Icons\\Abili -- Ascended Mechanics -local timerParasite = mod:NewNextTimer(45, 83568) -local timerSiren = mod:NewNextTimer(17, 83566) -local timerPhoenix = mod:NewNextTimer(16, 351414) +local timerParasite = mod:NewNextTimer(45, 2138027) +local timerSiren = mod:NewNextTimer(17, 2138025) +local timerPhoenix = mod:NewNextTimer(16, 2138015) -local warnParasite = mod:NewTargetAnnounce(83568, 3) -local warnSong = mod:NewTargetAnnounce(83567, 3) +local warnParasite = mod:NewTargetAnnounce(2138027, 3) +local warnSong = mod:NewTargetAnnounce(2138026, 3) local specWarnSiren = mod:NewSpecialWarning("SpecWarnSiren") @@ -92,9 +94,9 @@ end function mod:NagaSpawn() timerNaga:Stop() - warnNaga:Show(tostring(self.vb.nagaCount)) - timerNaga:Start(nil, tostring(self.vb.nagaCount)) - self.vb.nagaCount = self.vb.nagaCount + 1 + warnNaga:Show(tostring(mod.vb.nagaCount)) + timerNaga:Start(nil, tostring(mod.vb.nagaCount)) + mod.vb.nagaCount = mod.vb.nagaCount + 1 end function mod:EnchantressSpawn() @@ -106,8 +108,8 @@ end function mod:TaintedSpawn() timerElementalCD:Stop() - warnElemental:Show(tostring(self.vb.elementalCount)) - self.vb.elementalCount = self.vb.elementalCount + 1 + warnElemental:Show(tostring(mod.vb.elementalCount)) + mod.vb.elementalCount = mod.vb.elementalCount + 1 end local function warnChargeTargets() @@ -129,9 +131,9 @@ end function mod:OnCombatStart(delay) - self.vb.phase = 1 - self.vb.nagaCount = 1 - self.vb.elementalCount = 1 + mod.vb.phase = 1 + mod.vb.nagaCount = 1 + mod.vb.elementalCount = 1 if mod:IsDifficulty("heroic10", "heroic25") then timerMulti:Start(22-delay) timerEnvenom:Start(19-delay) @@ -163,7 +165,7 @@ function mod:OnCombatEnd() end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(38280, 351307) then + if args:IsSpellID(2138039) then ChargeTargets[#ChargeTargets + 1] = args.destName self:Unschedule(warnChargeTargets) self:Schedule(0.3, warnChargeTargets) @@ -181,7 +183,7 @@ function mod:SPELL_AURA_APPLIED(args) else timerCharge:Start() end - elseif args:IsSpellID(38509) then + elseif args:IsSpellID(2138013) then warnAimedShot:Show(args.destName) timerMark:Start(args.destName) if mod:IsDifficulty("heroic10", "heroic25") then @@ -199,23 +201,23 @@ function mod:SPELL_AURA_APPLIED(args) if self.Options.LootIcon then self:SetIcon(args.destName, 6) end - elseif args:IsSpellID(83565) and (GetTime() - lastTriggerTime) >= 35 then + elseif args:IsSpellID(2138024) and (GetTime() - lastTriggerTime) >= 35 then lastTriggerTime = GetTime() self:UnscheduleMethod("EnchantressSpawn") self:EnchantressSpawn() - elseif args.spellId == 83568 then + elseif args:IsSpellID(2138027, 2138028, 2138029, 2138030) then warnParasite:Show(args.destName) timerParasite:Start() - elseif args.spellId == 83567 then + elseif args.spellId == 2138026 then warnSong:Show(args.destName) specWarnSiren:Show() - elseif args.spellId == 85411 and args:IsPlayer() then + elseif args:IsSpellID(2138035, 2138036, 2138037, 2138038) and args:IsPlayer() then specWarnToxic:Show() end end function mod:SPELL_AURA_REMOVED(args) - if args:IsSpellID(38280, 351307) then + if args:IsSpellID(2138039, 351307) then timerChargeDmg:Stop(args.destName) if self.Options.ChargeIcon then self:SetIcon(args.destName, 0) @@ -233,14 +235,14 @@ function mod:SPELL_AURA_REMOVED(args) end function mod:SPELL_CAST_START(args) - if args.spellId == 38310 then + if args.spellId == 2138011 then warnMulti:Show() timerMulti:Start() end end function mod:SPELL_PERIODIC_HEAL(args) - if args.spellId == 83565 then + if args.spellId == 2138024 then warnHeal:Show() end end @@ -249,9 +251,9 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) if msg == L.DBM_VASHJ_DISCHARGE or msg:find(L.DBM_VASHJ_DISCHARGE) then timerDischarge:Start() specWarnDischarge:Show() - if self.vb.phase == 2 and mod:IsDifficulty("heroic10", "heroic25") then + if mod.vb.phase == 2 and mod:IsDifficulty("heroic10", "heroic25") then timerSiren:Start() - elseif self.vb.phase == 3 then + elseif mod.vb.phase == 3 then timerGenerator:Start() end elseif msg == L.DBM_VASHJ_ELITE or msg:find(L.DBM_VASHJ_ELITE) then @@ -261,42 +263,45 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) elseif msg == L.DBM_VASHJ_TAINTED or msg:find(L.DBM_VASHJ_TAINTED) then self:TaintedSpawn() elseif msg == L.DBM_VASHJ_TAINTED_DEAD or msg:find(L.DBM_VASHJ_TAINTED_DEAD) then - timerElementalCD:Start(nil, tostring(self.vb.elementalCount)) + timerElementalCD:Start(nil, tostring(mod.vb.elementalCount)) end end function mod:SPELL_CAST_SUCCESS(args) - if args.spellId == 351381 then + if args:IsSpellID(2138049, 2138050, 2138051, 2138052) then warnEnvenom:Show(args.destName) timerEnvenom:Start() - elseif args.spellID == 83566 then + elseif args.spellID == 2138025 then specWarnSiren:Show() - elseif args.spellID == 351393 then + elseif args:IsSpellID(2138000, 2138001, 2138002, 2138003) then timerPhoenix:Start() warnPhoenix:Show() + elseif args:IsSpellID(2138076) then + if timerDischarge:GetTime() == 0 then + timerBreath:Start() + end end end - function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.DBM_VASHJ_YELL_PHASE2 or msg:find(L.DBM_VASHJ_YELL_PHASE2) then timerMulti:Cancel() timerEnvenom:Cancel() timerAimedShot:Cancel() timerCharge:Cancel() - self.vb.phase = 2 - self.vb.nagaCount = 1 - self.vb.elementalCount = 1 + mod.vb.phase = 2 + mod.vb.nagaCount = 1 + mod.vb.elementalCount = 1 warnPhase2:Show() - timerNaga:Start(13, tostring(self.vb.nagaCount)) + timerNaga:Start(13, tostring(mod.vb.nagaCount)) timerEnchantress:Start(25) timerElementalCD:Start() timerHydra:Start(35) if self.Options.AutoChangeLootToFFA and DBM:GetRaidRank() == 2 then SetLootMethod("freeforall") end - elseif (msg == L.DBM_VASHJ_YELL_PHASE3 or msg:find(L.DBM_VASHJ_YELL_PHASE3)) and self.vb.phase == 2 then - self.vb.phase = 3 + elseif (msg == L.DBM_VASHJ_YELL_PHASE3 or msg:find(L.DBM_VASHJ_YELL_PHASE3)) and mod.vb.phase == 2 then + mod.vb.phase = 3 warnPhase3:Show() timerNaga:Cancel() warnNaga:Cancel() diff --git a/DBM-ZulAman/Akil'zon.lua b/DBM-ZulAman/Akil'zon.lua index f44b971..14dc9b3 100644 --- a/DBM-ZulAman/Akil'zon.lua +++ b/DBM-ZulAman/Akil'zon.lua @@ -98,6 +98,7 @@ function mod:SPELL_AURA_APPLIED(args) timerNextRod:Cancel() self.vb.phase = 2 timerNextTurbulentWinds:Start() + timerNextStorm:Cancel() end end @@ -109,7 +110,6 @@ function mod:SPELL_CAST_START(args) end function mod:UNIT_HEALTH(unit) - if (self.vb.phase == 2) and (mod:GetUnitCreatureId(unit) == 23574) then local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; if (hp>60 and hp<=65) and platform1 then @@ -134,8 +134,10 @@ function mod:UNIT_HEALTH(unit) nextLightningStrike:Start(21) self:ScheduleMethod(21, "LightningStrike") timerNextRod:Start(28) + timerNextStorm:Start(55) end end +end function mod:UNIT_AURA(unit) local Name = UnitName(unit) @@ -149,6 +151,4 @@ function mod:UNIT_AURA(unit) SendChatMessage(L.DBM_EOS_PLAYER, "YELL") end end -end - -end +end \ No newline at end of file diff --git a/DBM-ZulAman/Halazzi.lua b/DBM-ZulAman/Halazzi.lua index 273b771..7e8a474 100644 --- a/DBM-ZulAman/Halazzi.lua +++ b/DBM-ZulAman/Halazzi.lua @@ -21,10 +21,14 @@ local warnEnrage = mod:NewSpellAnnounce(43139, 3) local warnFrenzy = mod:NewSpellAnnounce(43290, 3) local warnSpirit = mod:NewAnnounce("WarnSpirit", 4, 39414) local warnNormal = mod:NewAnnounce("WarnNormal", 4, 39414) +local warnMerge = mod:NewAnnounce("WarnMerge", 4, 39414) local warnSplit = mod:NewSpellAnnounce(2136032, 3) +local warnClaw = mod:NewSpellAnnounce(2136054, 3) +local warnRush = mod:NewSpellAnnounce(2136058, 3) local specWarnTotem = mod:NewSpellAnnounce(2136034) local specWarnEnrage = mod:NewSpecialWarningDispel(2136001) +local timerNextSavagery = mod:NewNextTimer(10, 2136001) --local specWarnSaberStack= mod:NewSpecialWarningStack(2136000, nil, 3) local timerNextFlameShock = mod:NewNextTimer(10, 2136002) @@ -33,6 +37,11 @@ local timerNextFrostShock = mod:NewNextTimer(10, 2136023) local timerNextSaber = mod:NewNextTimer(15, 2136000) local timerNextCapacitor = mod:NewNextTimer(20, 2136034) +local timerNextClaw = mod:NewNextTimer(45, 2136054) +local timerClaw = mod:NewTargetTimer(9, 2136054) +local timerNextRush = mod:NewNextTimer(45, 2136058) +local timerRush = mod:NewCastTimer(15, 2136058) + local berserkTimer = mod:NewBerserkTimer(600) local yellFlameShock = mod:NewFadesYell(2136002) @@ -46,8 +55,10 @@ mod:AddBoolOption(L.ShockYellOpt) function mod:OnCombatStart(delay) berserkTimer:Start(-delay) + timerNextCapacitor:Start(6) + timerNextSavagery:Start(8) timerNextSaber:Start(13) - + self.vb.phase = 1 end function mod:SPELL_AURA_APPLIED(args) @@ -57,6 +68,7 @@ function mod:SPELL_AURA_APPLIED(args) else warnEnrage:Show() end + timerNextSavagery:Start() elseif args:IsSpellID(43290) then warnFrenzy:Show() elseif args:IsSpellID(2136000) then @@ -64,13 +76,19 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(2136032) then warnSplit:Show() timerNextCapacitor:Cancel() + timerNextSavagery:Cancel() timerNextFlameShock:Start(4) timerNextEarthShock:Start(8) timerNextFrostShock:Start(12) timerNextSaber:Cancel() + self.vb.phase = self.vb.phase + 1 + elseif args:IsSpellID(2136052) then + warnMerge:Show() + timerNextClaw:Start(5) + timerNextRush:Start(24) elseif args:IsSpellID(2136002, 2136003, 2136004, 2136005) then timerNextFlameShock:Start() - if args:IsPlayer() then + if args:IsPlayer() and self.Options.ShockYellOpt then SendChatMessage(L.FlameShockYell, "YELL") yellFlameShock:Countdown(12, 3) end @@ -78,18 +96,25 @@ function mod:SPELL_AURA_APPLIED(args) specWarnMagma:Show() elseif args:IsSpellID(2136015, 2136016, 2136017, 2136018) then timerNextEarthShock:Start() - if args:IsPlayer() then + if args:IsPlayer() and self.Options.ShockYellOpt then SendChatMessage(L.EarthShockYell, "YELL") yellEarthShock:Countdown(4, 4) end elseif args:IsSpellID(2136023, 2136024, 2136025, 2136026) then timerNextFrostShock:Start() - if args:IsPlayer() then + if args:IsPlayer() and self.Options.ShockYellOpt then SendChatMessage(L.FrostShockYell, "YELL") yellFrostShock:Countdown(5, 3) end + elseif args:IsSpellID(2136053) then + warnClaw:Show() + timerClaw:Start(args.destName) + timerNextClaw:Start() + elseif args:IsSpellID(2136058, 2136059, 2136060, 2136061) and DBM:AntiSpam(30) then + warnRush:Show() + timerRush:Start() + timerNextRush:Start() end - end function mod:SPELL_AURA_REMOVED(args) @@ -100,26 +125,40 @@ function mod:SPELL_AURA_REMOVED(args) timerNextFrostShock:Cancel() elseif args:IsSpellID(2136002, 2136003, 2136004, 2136005) and args:IsPlayer() then yellFlameShock:Cancel() - SendChatMessage("Molten Earth on me!", "YELL") + if self.Options.ShockYellOpt then + SendChatMessage("Molten Earth on me!", "YELL") + end -- elseif args:IsSpellID(2136015, 2136016, 2136017, 2136018) and args:IsPlayer() then -- yellEarthShock:Cancel() - -- SendChatMessage("Dispelled by" ..args.sourceName, "YELL") elseif args:IsSpellID(2136023, 2136024, 2136025, 2136026) and args:IsPlayer() then yellFrostShock:Cancel() - SendChatMessage("I'm Frozen!", "YELL") + if self.Options.ShockYellOpt then + SendChatMessage("I'm Frozen!", "YELL") + end + elseif args:IsSpellID(2136032) then + self.vb.phase = self.vb.phase + 1 + if self.vb.phase <= 3 then + warnNormal:Show() + timerNextCapacitor:Start(6) + timerNextSavagery:Start(8) + timerNextSaber:Start(13) + end end end function mod:SPELL_DISPEL(args) if args:IsSpellID(2136002, 2136003, 2136004, 2136005) and args:IsPlayer() then yellFlameShock:Cancel() - SendChatMessage("Molten Earth on me!", "YELL") + if self.Options.ShockYellOpt then + SendChatMessage("Molten Earth on me!", "YELL") + end -- elseif args:IsSpellID(2136015, 2136016, 2136017, 2136018) and args:IsPlayer() then -- yellEarthShock:Cancel() - -- SendChatMessage("Dispelled by" ..args.sourceName, "YELL") elseif args:IsSpellID(2136023, 2136024, 2136025, 2136026) and args:IsPlayer() then yellFrostShock:Cancel() - SendChatMessage("I'm Frozen!", "YELL") + if self.Options.ShockYellOpt then + SendChatMessage("I'm Frozen!", "YELL") + end end end @@ -143,7 +182,7 @@ function mod:SPELL_PERIODIC_MISSED(args) end function mod:SPELL_DAMAGE(args) - if args:IsSpellID(2136040, 2136041, 2136042, 2136043) and args:IsPlayer() and AntiSpam(1) then --2136039, 2136040, 2136041, 2136042, 2136043 + if args:IsSpellID(2136040, 2136041, 2136042, 2136043) and args:IsPlayer() and DBM:AntiSpam(1) then --2136039, 2136040, 2136041, 2136042, 2136043 specWarnSpiritLink:Show() end end @@ -154,4 +193,4 @@ function mod:CHAT_MSG_MONSTER_YELL(msg) elseif msg == L.YellNormal or msg:find(L.YellNormal) then warnNormal:Show() end -end +end \ No newline at end of file diff --git a/DBM-ZulAman/Jan'alai.lua b/DBM-ZulAman/Jan'alai.lua index aa7435e..7923e54 100644 --- a/DBM-ZulAman/Jan'alai.lua +++ b/DBM-ZulAman/Jan'alai.lua @@ -69,7 +69,7 @@ end function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(2135908) then timerNextFlameWhirl:Start() - flameWhirlCast:Start() + timerFlameWhirlCast:Start() elseif args:IsSpellID(2135905) then specWarnAllAdds:Show() timerAllAdds:Start() @@ -101,11 +101,11 @@ function mod:SPELL_DAMAGE(args) if args:IsSpellID(2135924, 2135925, 2135926, 2135927) and args:IsPlayer() then warnFlame:Show() elseif args:IsSpellID(2135924, 2135925, 2135926, 2135927) then - if AntiSpam(pillarTimer-0.1, 1) then -- Antispam at 20-0.1 seconds to not have other people walking into the pillar change the next timer. + if DBM:AntiSpam(pillarTimer-0.1, 1) then -- Antispam at 20-0.1 seconds to not have other people walking into the pillar change the next timer. pillarTimer = ((pillarTimer + 5) <= 20) and 20 or 15 -- Alternates between 20 and 15. If pillartimer + 5 is 20, then 20 otherwise (ie. if 20+5 is not 20, then) 15 timerNextPillar:Start(pillarTimer) -- end - elseif args:IsSpellID(2135915, 2135933, 2135934, 2135935) and AntiSpam(1, 2) and self.vb.phase == 2 then + elseif args:IsSpellID(2135915, 2135933, 2135934, 2135935) and DBM:AntiSpam(1, 2) and self.vb.phase == 2 then specWarnBomb:Schedule(bombNextTimer-6) timerBombCast:Schedule(bombNextTimer-6) timerNextBomb:Start(bombNextTimer-6) @@ -115,7 +115,7 @@ end function mod:SPELL_MISSED(args) if args:IsSpellID(2135924, 2135925, 2135926, 2135927) then - if AntiSpam(pillarTimer-0.1, 1) then -- Antispam at 20-0.1 seconds to not have other people walking into the pillar change the next timer. AntiSpam(x,1) means Antispam ID1, so this would be the same antispam timer as the Spell_damage one. + if DBM:AntiSpam(pillarTimer-0.1, 1) then -- Antispam at 20-0.1 seconds to not have other people walking into the pillar change the next timer. AntiSpam(x,1) means Antispam ID1, so this would be the same antispam timer as the Spell_damage one. pillarTimer = ((pillarTimer + 5) <= 20) and 20 or 15 -- Alternates between 20 and 15. If pillartimer + 5 is 20, then 20 otherwise (ie. if 20+5 is not 20, then) 15 timerNextPillar:Start(pillarTimer) -- end diff --git a/DBM-ZulAman/Malacrass.lua b/DBM-ZulAman/Malacrass.lua index 00eded5..2a42630 100644 --- a/DBM-ZulAman/Malacrass.lua +++ b/DBM-ZulAman/Malacrass.lua @@ -51,6 +51,7 @@ local timerBestialWrath = mod:NewTargetTimer(10, 2136135) local warnMageSoul = mod:NewSpecialWarning("Mage Soul Absorbed") local timerNextRuneOfPower = mod:NewNextTimer(5, 2136136) --2136136 local timerRuneOfPower = mod:NewTargetTimer(6, 2136136) --2136136 +local timerRuneOfPowerduration = mod:NewTimer(10, "Rune of Power duration", 2136136) local timerNextBlizzard = mod:NewNextTimer(15, 2136137) --2136137, 2136138, 2136139, 2136140 local timerNextLivingBomb = mod:NewNextTimer(25, 2136141) --Dot: 2136141, 2136142, 2136143, 2136144, Explosion damage: 2136145, 2136146, 2136147, 2136148 local timerLivingBomb = mod:NewTargetTimer(12, 2136141) --2136141 @@ -84,8 +85,8 @@ local timerCastChainHeal = mod:NewCastTimer(3, 2136176) local warnWarlockSoul = mod:NewSpecialWarning("Warlock Soul Absorbed") local timerNextCurseOfDoom = mod:NewNextTimer(5, 2136177) --2136177, 2136178, 2136179, 2136180 local timerCurseOfDoom = mod:NewTargetTimer(15, 2136177) -local timerNextHellfire = mod:NewNextTimer(15, 2136181) --2136181, 2136182, 2136183, 2136184, 2136185 -local timerNextRainofFire = mod:NewNextTimer(25, 2136186) --2136186, 2136187, 2136188, 2136189 +local timerNextRainofFire = mod:NewNextTimer(15, 2136186) --2136186, 2136187, 2136188, 2136189 +local timerNextHellfire = mod:NewNextTimer(25, 2136181) --2136181, 2136182, 2136183, 2136184, 2136185 local specWarnRainofFire = mod:NewSpecialWarningRun(2136182) local specWarnHellfire = mod:NewSpecialWarningRun(2136186) @@ -122,8 +123,11 @@ function mod:SPELL_AURA_APPLIED(args) timerNextRuneOfPower:Start() timerNextBlizzard:Start() timerNextLivingBomb:Start() - elseif args:IsSpellID(2136136) then + elseif args:IsSpellID(2136136) and args.destName == "Malacrass" then timerRuneOfPower:Show(args.destName) + timerRuneOfPowerduration:Start() + elseif args:IsSpellID(2136141) then + timerLivingBomb:Show(args.destName) elseif args:IsSpellID(2136137, 2136138, 2136139, 2136140) then specWarnRainofFire:Show() elseif args:IsSpellID(2136117) then diff --git a/DBM-ZulAman/Nalorakk.lua b/DBM-ZulAman/Nalorakk.lua index 18dd393..e909795 100644 --- a/DBM-ZulAman/Nalorakk.lua +++ b/DBM-ZulAman/Nalorakk.lua @@ -30,12 +30,17 @@ local warnImpale = mod:NewTargetAnnounce(2135824, 3) --2135823, 2135824, 213582 local timerBear = mod:NewTimer(45, "TimerBear", 39414) local timerNormal = mod:NewTimer(30, "TimerNormal", 39414) +local specWarnCharge = mod:NewSpecialWarningYou(2135805) local timerCharge1 = mod:NewTimer(13, "Charge (1)", 2135805) local timerCharge2 = mod:NewTimer(14, "Charge (2)", 2135805) local timerCharge3 = mod:NewTimer(15, "Charge (3)", 2135805) local timerNextFury = mod:NewNextTimer(45, 2135837) local timerNextRoar = mod:NewNextTimer(2135829, 14) -- HC 2135830 , ASC 10Man 2135831, ASC25man 2135832 --2136323 is ZUL'JIN ROAR!!! local timerNextRend = mod:NewNextTimer(10, 2135833) --timer seems to not be constant, need to find out + +local timerSpirit = mod:NewTargetTimer(15, 2135881) +local warnSpiritYou = mod:NewSpecialWarningYou(2135881) + local berserkTimer = mod:NewBerserkTimer(600) local roarSpam = 0 @@ -46,6 +51,8 @@ local roarTimer = 0 function mod:OnCombatStart(delay) berserkTimer:Start(-delay) timerNextFury:Start() + timerCharge:Start(12) + -- timerCharge2:Start(13) roarSpam = 0 roarCount = 0 roarTimer = 0 @@ -66,19 +73,28 @@ function mod:SPELL_AURA_APPLIED(args) timerNextFury:Start() elseif args:IsSpellID(2135837) then specWarnFury:Show() - elseif args:IsSpellID(2135804, 2135805, 2135806, 2135807) and AntiSpam(5) then - timerCharge1:Start() - timerCharge2:Start() - timerCharge3:Start() + elseif args:IsSpellID(2135804, 2135805, 2135806, 2135807) and DBM:AntiSpam(5) then + timerCharge:Start() + -- timerCharge1:Start() + -- timerCharge2:Start() + -- timerCharge3:Start() -- chargeCount = chargeCount+1 -- if chargeCount == 3 then -- self:bearCharge() -- end + if args:IsPlayer() and (args.amount and args.amount > 1) then + specWarnCharge:Show() + end elseif args:IsSpellID(2135833, 2135834, 2135835, 2135836) then specWarnRend:Show(args.destName) timerNextRend:Start() elseif args:IsSpellID(2135824, 2135825, 2135826, 2135827) then warnImpale:Show(args.destName) + elseif args:IsSpellID(2135881) then + timerSpirit:Start(args.destName) + if args:IsPlayer() then + warnSpiritYou:Show() + end end end @@ -98,7 +114,7 @@ function mod:SPELL_AURA_REMOVED(args) end function mod:SPELL_DAMAGE(args) - if args:IsSpellID(2135829, 2135830, 2135831, 2135832) and AntiSpam() then + if args:IsSpellID(2135829, 2135830, 2135831, 2135832) and DBM:AntiSpam() then roarCount = roarCount + 1 roarTimer = math.max(3, 14-roarCount) timerNextRoar:Start(roarTimer) @@ -112,7 +128,7 @@ function mod:SPELL_CAST_START(args) end function mod:SPELL_SUMMON(args) - if args:IsSpellID(2135814) and AntiSpam() then + if args:IsSpellID(2135814) and DBM:AntiSpam() then timerNextWhirling:Start() end end diff --git a/DBM-ZulAman/Zul'jin.lua b/DBM-ZulAman/Zul'jin.lua index 79b673a..f26198b 100644 --- a/DBM-ZulAman/Zul'jin.lua +++ b/DBM-ZulAman/Zul'jin.lua @@ -48,9 +48,9 @@ local timerNextScorchingBreath = mod:NewNextTimer(26, 2136358) --2136358, 213635 local timerNextArmageddon = mod:NewNextTimer(23, 2136372) --2136372, 2136373, 2136374, 2136375 local specWarnBomb = mod:NewSpecialWarningSpell(2136404) --2136402, 2136403, 2136404, 2136405, 2136406, 2136407 local timerNextBomb = mod:NewNextTimer(37, 2136404) --2136402, 2136403, 2136404, 2136405, 2136406, 2136407 -local bombCast = mod:NewCastTimer(7, 2136402) --2136402, 2136403, 2136404, 2136405, 2136406, 2136407 +local timerBombCast = mod:NewCastTimer(7, 2136402) --2136402, 2136403, 2136404, 2136405, 2136406, 2136407 local timerNextFlameWhirl = mod:NewNextTimer(50, 2135908) -local flameWhirlCast = mod:NewCastTimer(6, 2135908) +local timerFlameWhirlCast = mod:NewCastTimer(6, 2135908) @@ -67,8 +67,6 @@ local eosSpam = 0 function mod:PhaseIncrease() - self.vb.phase = self.vb.phase + 1 - if self.vb.phase == 2 then warnPhase2:Show() elseif self.vb.phase == 3 then @@ -130,20 +128,24 @@ function mod:SPELL_AURA_APPLIED(args) timerNextWhirlwind:Start(33) elseif args:IsSpellID(2136436, 2136196) then --Phase 6-7-8-9 if args.sourceName == "Akil'zon" then + self.vb.phase = self.vb.phase + 1 self:PhaseIncrease() warnPhaseEagle:Show() nextLightningStrike:Start(21) self:ScheduleMethod(21,"LightningStrike") timerNextStorm:Start(5) elseif args.sourceName == "Nalorakk" then + self.vb.phase = self.vb.phase + 1 self:PhaseIncrease() warnPhaseBear:Show() elseif args.sourceName == "Jan'alai" then + self.vb.phase = self.vb.phase + 1 self:PhaseIncrease() warnPhaseDragonhawk:Show() timerNextBomb:Start(7) timerNextScorchingBreath:Start(22) elseif args.sourceName == "Halazzi" then + self.vb.phase = self.vb.phase + 1 self:PhaseIncrease() warnPhaseLynx:Show() end @@ -175,10 +177,10 @@ function mod:SPELL_CAST_SUCCESS(args) elseif args:IsSpellID(2136316) then timerNextWhirlwind:Start() elseif args:IsSpellID(2136402) then - bombCast:Start() + timerBombCast:Start() specWarnBomb:Show() elseif args:IsSpellID(2136363) then - flameWhirlCast:Start() + timerFlameWhirlCast:Start() timerNextFlameWhirl:Start() -- timer is probably wrong end end @@ -192,26 +194,26 @@ function mod:SPELL_CAST_START(args) end function mod:SPELL_DAMAGE(args) - if args:IsSpellID(2135829, 2135830, 2135831, 2135832) and AntiSpam() then + if args:IsSpellID(2135829, 2135830, 2135831, 2135832) and DBM:AntiSpam() then timerNextDeafeningRoar:Start() - elseif args:IsSpellID(2136414, 2136415, 2136416, 2136417) and args:IsPlayer() and AntiSpam(1) then --2136413, 2136414, 2136415, 2136416, 2136417 + elseif args:IsSpellID(2136414, 2136415, 2136416, 2136417) and args:IsPlayer() and DBM:AntiSpam(1) then --2136413, 2136414, 2136415, 2136416, 2136417 specWarnSpiritLink:Show() end end -function mod:UNIT_AURA(unit) - local Name = UnitName(unit) - if (UnitDebuff(unit, "Eye of the storm")) and (GetTime() - eosSpam) > 15 then - eosSpam = GetTime() - timerStorm:Start() - warnStorm:Show(Name) - specWarnStorm:Show() - -- timerNextStorm:Start() - if Name == UnitName("player") then - SendChatMessage(L.DBM_EOS_PLAYER, "YELL") - end - end -end +-- function mod:UNIT_AURA(unit) -- triggers from Akilzon (same code) +-- local Name = UnitName(unit) +-- if (UnitDebuff(unit, "Eye of the storm")) and (GetTime() - eosSpam) > 15 then +-- eosSpam = GetTime() +-- timerStorm:Start() +-- warnStorm:Show(Name) +-- specWarnStorm:Show() +-- -- timerNextStorm:Start() +-- if Name == UnitName("player") then +-- SendChatMessage(L.DBM_EOS_PLAYER, "YELL") +-- end +-- end +-- end function mod:OnCombatEnd() if self.Options.RangeFrame then @@ -221,14 +223,14 @@ function mod:OnCombatEnd() end function mod:UNIT_DIED(args) - if args.destName == "Akil'zon" and self.vb.phase == 9 then - self.vb.phase = 10 - elseif args.destName == "Nalorakk" and self.vb.phase == 9 then - self.vb.phase = 10 - elseif args.destName == "Jan'alai" and self.vb.phase == 9 then - self.vb.phase = 10 - elseif args.destName == "Halazzi" and self.vb.phase == 9 then - self.vb.phase = 10 + if args.destName == "Akil'zon" then + self.vb.phase = self.vb.phase + 1 + elseif args.destName == "Nalorakk" then + self.vb.phase = self.vb.phase + 1 + elseif args.destName == "Jan'alai" then + self.vb.phase = self.vb.phase + 1 + elseif args.destName == "Halazzi" then + self.vb.phase = self.vb.phase + 1 else return end diff --git a/DBM-ZulAman/localization.en.lua b/DBM-ZulAman/localization.en.lua index 27e48ee..7220b8b 100644 --- a/DBM-ZulAman/localization.en.lua +++ b/DBM-ZulAman/localization.en.lua @@ -87,13 +87,15 @@ L:SetGeneralLocalization{ L:SetWarningLocalization{ WarnSpirit = "Spirit Phase", - WarnNormal = "Normal Phase" + WarnNormal = "Normal Phase", + WarnMerge = "Normal Phase" } L:SetOptionLocalization{ WarnSpirit = "Show warning for Spirit phase", WarnNormal = "Show warning for Normal phase", - ShockYellOpt = "Yell when you are affected by $spell:2136003 , $spell:2136024 or $spell:2136016", + WarnMerge = "Show warning for Merge phase", + ShockYellOpt = "Yell when you are affected by $spell:2136002 , $spell:2136023 or $spell:2136015", } L:SetMiscLocalization{