@@ -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
|
||||
----------------------------------------------------------------------------------------------------
|
||||
|
||||
+20
-20
@@ -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 --
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+54
-49
@@ -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,22 +263,25 @@ 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
|
||||
@@ -284,19 +289,19 @@ function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
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()
|
||||
|
||||
@@ -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,6 +134,8 @@ function mod:UNIT_HEALTH(unit)
|
||||
nextLightningStrike:Start(21)
|
||||
self:ScheduleMethod(21, "LightningStrike")
|
||||
timerNextRod:Start(28)
|
||||
timerNextStorm:Start(55)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -150,5 +152,3 @@ function mod:UNIT_AURA(unit)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
+47
-8
@@ -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,28 +125,42 @@ function mod:SPELL_AURA_REMOVED(args)
|
||||
timerNextFrostShock:Cancel()
|
||||
elseif args:IsSpellID(2136002, 2136003, 2136004, 2136005) and args:IsPlayer() then
|
||||
yellFlameShock:Cancel()
|
||||
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()
|
||||
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()
|
||||
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()
|
||||
if self.Options.ShockYellOpt then
|
||||
SendChatMessage("I'm Frozen!", "YELL")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_SUMMON(args)
|
||||
if args:IsSpellID(2136034) then
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+31
-29
@@ -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
|
||||
|
||||
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user