From 5b5fee4a2d30f2690e935b7573b1cd527f4d419c Mon Sep 17 00:00:00 2001 From: Szyler <66376500+Szyler@users.noreply.github.com> Date: Sat, 6 Apr 2024 19:33:38 +0200 Subject: [PATCH] 5.20 (#5) Co-authored-by: Szyler --- DBM-BlackTemple/Bloodboil.lua | 35 +-- DBM-BlackTemple/EssenceOfSouls.lua | 58 +++-- DBM-BlackTemple/Illidan.lua | 312 +++++++++++++++++++++-- DBM-BlackTemple/IllidariCouncil.lua | 350 +++++++++++--------------- DBM-BlackTemple/Naj'entus.lua | 59 ++++- DBM-BlackTemple/ShadeOfAkama.lua | 35 ++- DBM-BlackTemple/Shahraz.lua | 28 ++- DBM-BlackTemple/Supremus.lua | 52 +++- DBM-BlackTemple/TeronGorefiend.lua | 31 ++- DBM-BlackTemple/localization.en.lua | 31 ++- DBM-Core/Changelog.txt | 7 +- DBM-Core/DBM-Core.lua | 6 +- DBM-Party-BC/Auct_Crypts/Maladaar.lua | 8 +- DBM-ZulAman/Jan'alai.lua | 4 +- 14 files changed, 691 insertions(+), 325 deletions(-) diff --git a/DBM-BlackTemple/Bloodboil.lua b/DBM-BlackTemple/Bloodboil.lua index dc790da..f5d25ed 100644 --- a/DBM-BlackTemple/Bloodboil.lua +++ b/DBM-BlackTemple/Bloodboil.lua @@ -3,11 +3,10 @@ local L = mod:GetLocalizedStrings() mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) mod:SetCreatureID(22948) -mod:RegisterCombat("yell", DBM_BLOODBOIL_YELL_PULL) +mod:RegisterCombat("combat", 22948) mod:RegisterEvents( - "SPELL_AURA_APPLIED", - "SPELL_AURA_REMOVED" + "SPELL_AURA_APPLIED" ) local warningBoilingBlood = mod:NewSpellAnnounce(2143508, 3) @@ -27,43 +26,49 @@ local timerMakgora = mod:NewTargetTimer(35, 2143523) local warningBoilBlood = mod:NewSpellAnnounce(2143517, 3) --Burst damage from boiling the pools local timerNextBoilBlood = mod:NewNextTimer(20, 2143517) - +local elapsed, total, remainingTimerNextMakgora function mod:OnCombatStart(delay) timerNextBoilingBlood:Start(10-delay) timerNextSeismicSmash:Start(20-delay) timerNextMakgora:Start(70-delay) + remainingTimerNextMakgora = 30 end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(2143508, 2143509, 2143510, 2143511) and (25 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + if args:IsSpellID(2143508, 2143509, 2143510, 2143511) and (remainingTimerNextMakgora >= 25) then warningBoilingBlood:Show() timerNextBoilingBlood:Start() - elseif args:IsSpellID(2143530, 2143531, 2143532, 2143533) and (10 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + elapsed, total = timerNextMakgora:GetTime() + remainingTimerNextMakgora = total - elapsed + elseif args:IsSpellID(2143530, 2143531, 2143532, 2143533) and (remainingTimerNextMakgora >= 10) then warningSeismicSmash:Show() timerNextSeismicSmash:Start() timerSeismicSmash:Start() + elapsed, total = timerNextMakgora:GetTime() + remainingTimerNextMakgora = total - elapsed elseif args:IsSpellID(2143523) then warnMakgora:Show() timerNextMakgora:Start() timerMakgora:Start(args.destName) timerNextMalevolentCleave:Start() - elseif args:IsSpellID(2143527) and (20 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + elapsed, total = timerNextMakgora:GetTime() + remainingTimerNextMakgora = total - elapsed + timerNextBoilingBlood:Start(42) + timerNextSeismicSmash:Start(50) + elseif args:IsSpellID(2143527) and (remainingTimerNextMakgora >= 20) then warningFatalstrike:Show() timerNextFatalstrike:Start() - elseif args:IsSpellID(2143517) and DBM:AntiSpam(15) and (25 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + elapsed, total = timerNextMakgora:GetTime() + remainingTimerNextMakgora = total - elapsed + elseif args:IsSpellID(2143517) and DBM:AntiSpam(15) and (remainingTimerNextMakgora >= 25) then warningBoilBlood:Show() timerNextBoilBlood:Start() + elapsed, total = timerNextMakgora:GetTime() + remainingTimerNextMakgora = total - elapsed end end -function mod:SPELL_AURA_REMOVED(args) - if args:IsSpellID(2143523) then - timerNextBoilingBlood:Start() - timerNextSeismicSmash:Start() - timerNextMakgora:Start() - end -end -- local boilCounter = 0 diff --git a/DBM-BlackTemple/EssenceOfSouls.lua b/DBM-BlackTemple/EssenceOfSouls.lua index a4a8bbe..a87e02d 100644 --- a/DBM-BlackTemple/EssenceOfSouls.lua +++ b/DBM-BlackTemple/EssenceOfSouls.lua @@ -3,7 +3,7 @@ local L = mod:GetLocalizedStrings() mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) mod:SetCreatureID(23418) -mod:RegisterCombat("yell", DBM_SOULS_YELL_PULL, 23420) +mod:RegisterCombat("yell", L.DBM_SOULS_YELL_PULL, 23420) mod:RegisterEvents( @@ -30,14 +30,14 @@ local timerNextSoulDrain = mod:NewNextTimer(20, 2143760) local warnRuneShield = mod:NewSpellAnnounce(2143808, 2) local timerRuneShield = mod:NewTargetTimer(15, 2143808) -local timerNextRuneShield = mod:NewNextTimer(16, 2143808) +local timerNextRuneShield = mod:NewNextTimer(15, 2143808) local warnTease = mod:NewSpellAnnounce(2143808, 2) local timerTease = mod:NewBuffActiveTimer(15, 2143808) local timerNextTease = mod:NewNextTimer(30, 2143808) local warnSeethe = mod:NewSpellAnnounce(2143861, 2) -local timerSeethe = mod:NewBuffActiveTimer(15, 2143861) +local timerSeethe = mod:NewTargetTimer(15, 2143861) local timerNextSeethe = mod:NewNextTimer(15, 2143861) local warnSoulScream = mod:NewSpellAnnounce(2143853, 2) @@ -50,11 +50,15 @@ local warnAuraOfDesire = mod:NewSpellAnnounce(2143800, 2) local warnAuraOfAnger = mod:NewSpellAnnounce(2143850, 2) --local -local isSuffer = false +-- local isSuffer +-- local isDesire +-- local isAnger function mod:OnCombatStart(delay) self.vb.phase = 1 - isSuffer = true + -- isSuffer = true + -- isDesire = false + -- isAnger = false end function mod:SPELL_AURA_APPLIED(args) @@ -63,29 +67,30 @@ function mod:SPELL_AURA_APPLIED(args) timerTargetSpiritShock:Start(args.destName) elseif args:IsSpellID(2143961) and args.amount and args.amount >= 20 and args.amount % 5 == 0 then warnSoulBlast:Show() - elseif args:IsSpellID(2143760, 2143761, 2143762, 2143763) then + elseif args:IsSpellID(2143760, 2143761, 2143762, 2143763) and DBM:AntiSpam() then warnSoulDrain:Show() elseif args:IsSpellID(2143808) then warnRuneShield:Show() - timerRuneShield:Start() + timerRuneShield:Start(args.destName) elseif args:IsSpellID(2143808) then warnTease:Show() timerTease:Start() timerNextTease:Start() elseif args:IsSpellID(2143861) then - warnSeethe:Show() - timerSeethe:Start() - timerNextSeethe:Start() - elseif args:IsSpellID(2143750, 2143751, 2143752, 2143753) and DBM:AntiSpam(60) and self.vb.phase == 1 then - warnAuraOfSuffering:Show() - timerNextSoulDrain:Start(20) - elseif args:IsSpellID(2143800, 2143803) and DBM:AntiSpam(60) and self.vb.phase == 1 then + if DBM:AntiSpam() then + warnSeethe:Show() + timerNextSeethe:Start() + end + timerSeethe:Start(args.destName) + elseif args:IsSpellID(2143800, 2143803) and DBM:AntiSpam(60) then self.vb.phase = 2 + -- isDesire = true warnAuraOfDesire:Show() - timerNextRuneShield:Start(16) - timerNextTease:Start(20) - elseif args:IsSpellID(2143850) and DBM:AntiSpam(60) and self.vb.phase == 2 then + timerNextRuneShield:Start(20) + timerNextTease:Start(25) + elseif args:IsSpellID(2143850, 2143852) and DBM:AntiSpam(60) then self.vb.phase = 3 + -- isAnger = true warnAuraOfAnger:Show() timerNextSoulScream:Start(10) end @@ -109,23 +114,24 @@ end function mod:UNIT_HEALTH(unit) --Essence of Suffering - if isSuffer and (mod:GetUnitCreatureId(unit) == 23418) then + if (mod:GetUnitCreatureId(unit) == 23418) then local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; - if (hp <= 1) then + if (hp <= 2) then intermissionSummonEssenceOfSuffering:Start() end --Essence of Desire - elseif isSuffer and (mod:GetUnitCreatureId(unit) == 23419) then + elseif (mod:GetUnitCreatureId(unit) == 23419) then local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; - if (hp <= 1) then + if (hp <= 2) then intermissionSummonEssenceOfDesire:Start() + self.vb.phase = 2 end --Essence of Anger - elseif isSuffer and (mod:GetUnitCreatureId(unit) == 23420) then - local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; - if (hp <= 1) then - intermissionSummonEssenceOfAnger:Start() - end + -- elseif isAnger and (mod:GetUnitCreatureId(unit) == 23420) then + -- local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; + -- if (hp <= 2) then + -- intermissionSummonEssenceOfAnger:Start() + -- end end end diff --git a/DBM-BlackTemple/Illidan.lua b/DBM-BlackTemple/Illidan.lua index d46e2d5..132093d 100644 --- a/DBM-BlackTemple/Illidan.lua +++ b/DBM-BlackTemple/Illidan.lua @@ -15,12 +15,20 @@ mod:RegisterEvents( "SPELL_DAMAGE", "UNIT_DIED", "CHAT_MSG_MONSTER_YELL", - "UNIT_SPELLCAST_START" + "UNIT_SPELLCAST_START", + "UNIT_HEALTH", + "UNIT_AURA" ) local timerCombatStart = mod:NewTimer(3, "TimerCombatStart", 2457) +local timerHumanForm = mod:NewTimer(85, "TimerHumanForm", 2457) +local timerDemonForm = mod:NewTimer(60, "TimerDemonForm", 2457) -local warnChaosBlast = mod:NewSpellAnnounce(2144802, 2) +local warnPhase = mod:NewPhaseAnnounce(2) +local warnPhaseSoon = mod:NewAnnounce("WarnPhaseSoon", 1) + +local timerAddsSpawn = mod:NewTimer(9, "TimerAddsSpawn", 19879) +local warnChaosBlast = mod:NewSpellAnnounce(2144805, 2) local warnFlameCrash = mod:NewSpellAnnounce(2144720, 2) local warnFlameCrashDot = mod:NewSpellAnnounce(2144720, 3) local warnForceNova = mod:NewSpellAnnounce(2144724, 2) @@ -28,31 +36,116 @@ local warnShear = mod:NewSpellAnnounce(2144718, 2) local warnDrawSoul = mod:NewSpellAnnounce(2144737, 2) local warnFelFireBlast = mod:NewSpellAnnounce(2144829, 2) local warnUnharnessedBlade = mod:NewSpellAnnounce(2144742, 2) +local warnShadowBreach = mod:NewSpellAnnounce(2144868, 2) +local warnEyeBeam = mod:NewSpellAnnounce(2144816, 2) +local warnDarkBarrage = mod:NewSpellAnnounce(2144812, 2) local yellUnharnessedBlade = mod:NewFadesYell(2144742) -local timerChaosBlast = mod:NewCastTimer(2, 2144802) -local timerChaosBlastDebuff = mod:NewBuffActiveTimer(6, 2144802) +local timerChaosBlast = mod:NewCastTimer(2, 2144805) +local timerChaosBlastDebuff = mod:NewBuffActiveTimer(6, 2144805) +local timerNextChaosBlast = mod:NewNextTimer(12, 2144805) local timerNextFlameCrash = mod:NewNextTimer(30, 2144720) local timerFlameCrash = mod:NewCastTimer(2, 2144720) local timerNextForceNova = mod:NewNextTimer(25, 2144724) local timerNextShear = mod:NewNextTimer(25, 2144718) local timerNextDrawSoul = mod:NewNextTimer(30, 2144737) -local timerFelFireBlast = mod:NewCastTimer(2, 2144802) +local timerFelFireBlast = mod:NewCastTimer(2, 2144829) local timerNextFelFireBlast = mod:NewNextTimer(20, 2144829) -local timerFelFireBlast2 = mod:NewCastTimer(2, 2144802) +local timerFelFireBlast2 = mod:NewCastTimer(2, 2144829) local timerNextFelFireBlast2 = mod:NewNextTimer(20, 2144829) local timerNextUnharnessedBlade = mod:NewNextTimer(30, 2144742) +local timerEyeBeam = mod:NewTargetTimer(20, 2144816) +local timerNextEyeBeam = mod:NewNextTimer(25, 2144816) +local timerTargetDarkBarrage = mod:NewTargetTimer(10, 2144812) +local timertDarkBarrage = mod:NewCastTimer(3, 2144812) +local timerNextDarkBarrage = mod:NewNextTimer(25, 2144812) + +local timerNextShadowBreach = mod:NewNextTimer(42, 2144868) +local timerParalyzingStare = mod:NewTargetTimer(30, 2144871) +local timerShadowPrison = mod:NewCastTimer(60, 2144960) + +local timerBladeCD = mod:NewNextTimer(40, 2144742) +local warnBlade = mod:NewSpellAnnounce(2144742) + +----------- +-- Ascended + +local warnPhase5 = mod:NewAnnounce("Stage Five: Avatar of Hatred", 3, 2145004) +local warnSoulShear = mod:NewSpellAnnounce(2145040) +local warnHateCrash = mod:NewSpellAnnounce(2145025) +local warnMadness = mod:NewSpellAnnounce(2145051) +local warnUnleash = mod:NewSpellAnnounce(2145061) +local warnStruggle = mod:NewSpellAnnounce(2145081) +local warnHateBeam = mod:NewSpellAnnounce(2145074) + +local specWarnHatred = mod:NewSpecialWarning("Unleash Hatred!", 2145065) + +local timerMotes = mod:NewTimer(5, "Motes of Hatres spawning", 2145072) +local timerP5RP = mod:NewTimer(49, "Illidan tranformation RP", 2145004) +local timerSoulShear = mod:NewNextTimer(35, 2145040) +local timerHateCrash = mod:NewNextTimer(35, 2145025) +local timerMadness = mod:NewNextTimer(110, 2145051) +local timerUnleash = mod:NewNextTimer(110, 2145061) +local timerNextHateBeam = mod:NewNextTimer(110, 2145074) +local timerHateBeam = mod:NewTimer(12,"Eye Beam", 2145074) +local timerStruggle = mod:NewNextTimer(110, 2145081) +local timerStruggling = mod:NewTimer(10, "Illidan is struggling", 2145081) + +local azzinothKilled = 0 +local bladeCount = 0 +local shearCount = 0 +local crashCount = 0 +local bonusTime = 0 + +mod:AddBoolOption("RangeCheck", true) + +function mod:phase5() + self.vb.phase = 5 + warnPhase:Show(5) + timerNextForceNova:Start(15) + timerNextShear:Start(25) + timerNextDrawSoul:Start(30) + timerNextUnharnessedBlade:Start(35) + timerDemonForm:Start() + timerHumanForm:Stop() +end + +function mod:CancelP5timers() + timerBladeCD:Cancel() + timerFlameCrash:Cancel() + timerParasite:Cancel() + timerDrawSoul:Cancel() + timerShearCD:Cancel() + timerNextDemon:Cancel() + bladeCount = 0 +end + +function mod:StartP5timers() + timerBladeCD:Start(16) + timerMadness:Start(30) + timerSoulShear:Start(37) + timerHateCrash:Start(44) + timerUnleash:Start(70) + timerNextHateBeam:Start(77) + timerStruggle:Start(93) +end + function mod:OnCombatStart(delay) + if DBM:AntiSpam(600) then + self.vb.phase = 1 + end + azzinothKilled = 0 if self.Options.RangeCheck then DBM.RangeCheck:Show(15) end - timerCombatStart:Start(3) - timerNextForceNova:Start(18-delay) - timerNextShear:Start(28-delay) - timerNextDrawSoul:Start(33-delay) - timerNextUnharnessedBlade:Start(38) + timerCombatStart:Start(4) + timerAddsSpawn:Start(9-delay) + timerNextForceNova:Start(19-delay) + timerNextShear:Start(29-delay) + timerNextDrawSoul:Start(34-delay) + timerNextUnharnessedBlade:Start(39-delay) end function mod:UnharnessedBlade() @@ -64,16 +157,7 @@ function mod:UnharnessedBlade() end function mod:SPELL_CAST_SUCCESS(args) - if args:IsSpellID(2144840) then - if timerFelFireBlast:IsStarted() or timerNextFelFireBlast:IsStarted() then - timerFelFireBlast2:Start() - timerNextFelFireBlast2:Start(20) - else - timerFelFireBlast:Start() - timerNextFelFireBlast:Start(20) - end - warnFelFireBlast:Show() - elseif args:IsSpellID(2144802,2144803,2144804,2144805) then + if args:IsSpellID(2144803,2144804,2144805, 2144806) then warnChaosBlast:Show() timerChaosBlast:Start() elseif args:IsSpellID(2144715,2144716,2144717,2144718) then @@ -83,7 +167,16 @@ function mod:SPELL_CAST_SUCCESS(args) end function mod:SPELL_CAST_START(args) - if args:IsSpellID(2144737,2144738,2144739,2144740) then + if args:IsSpellID(2144829, 2144830, 2144831, 2144832) then + if timerFelFireBlast:IsStarted() or timerNextFelFireBlast:IsStarted() then + timerFelFireBlast2:Start() + timerNextFelFireBlast2:Start(20) + else + timerFelFireBlast:Start() + timerNextFelFireBlast:Start(20) + end + warnFelFireBlast:Show() + elseif args:IsSpellID(2144737,2144738,2144739,2144740) then warnDrawSoul:Show() timerNextDrawSoul:Start() elseif args:IsSpellID(2144720,2144721,2144722,2144723) then @@ -100,19 +193,91 @@ function mod:SPELL_CAST_START(args) elseif args:IsSpellID(2144715,2144716,2144717,2144718) then warnShear:Show() timerNextShear:Start() - elseif args:IsSpellID(2144802,2144803,2144804,2144805) then + elseif args:IsSpellID(2144803,2144804,2144805,2144806) then warnChaosBlast:Show() timerChaosBlast:Start() + elseif args:IsSpellID(2144816) then + warnEyeBeam:Show() + timerEyeBeam:Start() + elseif args:IsSpellID(2144810) then + warnDarkBarrage:Show() + timertDarkBarrage:Start() + elseif args:IsSpellID(2144868, 2144869) then + warnShadowBreach:Show() + elseif args:IsSpellID(2144871, 2144872) then + timerParalyzingStare:Start(args.destName) + -- elseif (args:IsSpellID(2144863) or args:IsSpellID(2144864,2144865,2144866,2144867)) and not timerCombatStart:IsStarted() and DBM:AntiSpam() then + -- timerCombatStart:Start(60) + -- self:ScheduleMethod(60, "phase5") + -- timerNextShadowBreach:Start(20) + elseif args:IsSpellID(2144742, 2145015) then + if bladeCount >= 1 and phase == 3 then + timerBladeCD:Start() + warnBlade:Show() + bladeCount = bladeCount + 1 + elseif bladeCount >= 1 and phase == 5 then + timerBladeCD:Start() + warnBlade:Show() + bladeCount = bladeCount + 1 + elseif bladeCount >= 1 and phase == 6 then + warnBlade:Show() + timerBladeCD:Start(75) + bladeCount = 0 + elseif bladeCount == 0 and phase == 6 then + timerBladeCD:Start(35) + warnBlade:Show() + bladeCount = bladeCount + 1 + else + timerBladeCD:Start(30) + warnBlade:Show() + bladeCount = bladeCount + 1 + end + elseif args:IsSpellID(2145040) then + warnSoulShear:Show() + if shearCount == 0 then + timerSoulShear:Start() + shearCount = shearCount + 1 + elseif shearCount == 1 then + shearCount = 0 + timerSoulShear:Start(75) + end + elseif args:IsSpellID(2145022, 2145023, 2145024, 2145025) then + warnHateCrash:Show() + if phase == 6 and crashCount == 0 then + timerHateCrash:Start() + crashCount = crashCount + 1 + elseif phase == 6 and crashCount == 1 then + timerHateCrash:Start(74) + crashCount = 0 + end + elseif args:IsSpellID(2145051,2145052) then + warnMadness:Show() + timerMadness:Start(110) + elseif args:IsSpellID(2145074) then + warnHateBeam:Show() + timerHateBeam:Start() + timerNextHateBeam:Start() end end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(2144802,2144803,2144804,2144805) then + if args:IsSpellID(2144803,2144804,2144805,2144806) then timerChaosBlastDebuff:Start() elseif args:IsSpellID(2144720,2144721,2144722,2144723) then if args:IsPlayer() then warnFlameCrashDot:Show() end + elseif args:IsSpellID(2144810) then + timerTargetDarkBarrage:Start(args.destName) + elseif args:IsSpellID(2144960, 2144961) and self.vb.phase == 5 then + self.vb.phase = 6 + warnPhase:Show(6) + timerCombatStart:Start(34) + timerNextUnharnessedBlade:Start(5) + timerNextForceNova:Start(15) + timerNextShear:Start(25) + timerNextDrawSoul:Start(30) + timerShadowPrison:Start(60) end end @@ -123,10 +288,109 @@ function mod:SPELL_DAMAGE(args) end end +function mod:UNIT_AURA(unit) + Name = UnitName(unit) + if (UnitDebuff(unit, "Betrayer's Gaze")) and eyebeamTarget == 0 and DBM:AntiSpam(2,4) then + eyebeamTarget = 1 + if Name == UnitName("player") then + specWarnEyebeam:Show() + SendChatMessage("Eye Beam on "..UnitName("PLAYER").."!", "SAY") + else + warnEyebeamTarget:Show(Name) + end + self:SetIcon(Name, 8, 10) + self:ScheduleMethod(10,"EyeBeamReset") + end + if (UnitDebuff("Boss1", "Struggle for Control"))and DBM:AntiSpam(105, 3) then + warnStruggle:Show() + timerStruggling:Start() + timerStruggle:Start() + Struggled = true + end +end + function mod:OnCombatEnd() DBM.RangeCheck:Hide() end +function mod:UNIT_DIED(args) + + local cid = mod:GetUnitCreatureId(args.destGUID) + if cid == 22997 and self.vb.phase == 2 then + if azzinothKilled == 1 then + local elapsed1, total1 = timerTargetDarkBarrage:GetTime() + local elapsed2, total2 = timerEyeBeam:GetTime() + local elapsed, total = math.max(elapsed1, elapsed2, 0), math.max(total1, total2, 0) + if (total or 0) > 0 then + bonusTime = (total - elapsed) or 0 + end + self.vb.phase = 3 + timerCombatStart:Start(7+bonusTime) + timerNextUnharnessedBlade:Start(12+bonusTime) + timerNextForceNova:Start(22+bonusTime) + timerNextShear:Start(33+bonusTime) + timerNextDrawSoul:Start(37+bonusTime) + timerDemonForm:Start(60+bonusTime) + else + azzinothKilled = azzinothKilled + 1 + end + end +end + +function mod:CHAT_MSG_MONSTER_YELL(msg) + if msg == L.DBM_ILLIDAN_YELL_PULL_RP then + timerCombatStart:Start(40) + elseif msg == L.DBM_ILLIDAN_YELL_DEMON then + self.vb.phase = 4 + warnPhase:Show(4) + timerDemonForm:Stop() + timerHumanForm:Start() + self:ScheduleMethod(85, "phase5") + timerNextForceNova:Stop() + timerNextShear:Stop() + timerNextDrawSoul:Stop() + timerNextUnharnessedBlade:Stop() + timerNextShadowBreach:Start(42) + elseif msg == L.Phase5 or msg:find(L.Phase5) then + self.vb.phase = 7 + warnPhase5:Schedule(46) + timerP5RP:Start() + self:ScheduleMethod(0,"CancelP5timers") + self:ScheduleMethod(49, "StartP5timers") + end +end + +function mod:UNIT_HEALTH(unit) + if mod:GetUnitCreatureId(unit) == 22917 then + local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; + if (hp <= 75) and DBM:AntiSpam(5) and self.vb.phase == 1 then + warnPhaseSoon:Show() + elseif (hp <= 71) and self.vb.phase == 1 then + self.vb.phase = 2 + warnPhase:Show(2) + timerNextForceNova:Stop() + timerNextShear:Stop() + timerNextDrawSoul:Stop() + timerNextUnharnessedBlade:Stop() + timerCombatStart:Start(4) + timerNextChaosBlast:Start(12) + timerNextEyeBeam:Start(25) + elseif (hp <= 35) and DBM:AntiSpam(5) and self.vb.phase == 4 then + warnPhaseSoon:Show() + elseif (hp <= 31) and self.vb.phase == 5 then + self.vb.phase = 6 + warnPhase:Show(6) + timerCombatStart:Start(34) + timerNextUnharnessedBlade:Start(5) + timerNextForceNova:Start(15) + timerNextShear:Start(25) + timerNextDrawSoul:Start(30) + end + elseif mod:GetUnitCreatureId(unit) == 22997 then + + end +end + -- if self.Options.RangeCheck then -- DBM_Gui_DistanceFrame_Hide() -- end diff --git a/DBM-BlackTemple/IllidariCouncil.lua b/DBM-BlackTemple/IllidariCouncil.lua index 2e303c6..39450c0 100644 --- a/DBM-BlackTemple/IllidariCouncil.lua +++ b/DBM-BlackTemple/IllidariCouncil.lua @@ -2,30 +2,44 @@ local mod = DBM:NewMod("Council", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) -mod:SetCreatureID(22949) -mod:RegisterCombat("yell", DBM_COUNCIL_YELL_PULL1, DBM_COUNCIL_YELL_PULL2, DBM_COUNCIL_YELL_PULL3, DBM_COUNCIL_YELL_PULL4) +mod:SetCreatureID(22949, 22950, 22951, 22952) +mod:RegisterCombat("combat", 22949, 22950, 22951, 22952) mod:RegisterEvents( "SPELL_CAST_START", "SPELL_HEAL", "SPELL_INTERRUPT", "SPELL_AURA_APPLIED", - "SPELL_AURA_REMOVED" + "SPELL_AURA_REMOVED", + "UNIT_DIED" ) --Lady Malande -local warnPaintoPleasure = mod:NewTargetAnnounce(2144463, 3) -local timerNextPaintoPleasure = mod:NewNextTimer(30, 2144463) +local warnPaintoPleasure = mod:NewSpellAnnounce(2144463, 3) +local timerNextPaintoPleasure = mod:NewNextTimer(15, 2144463) +local timerPaintoPleasure = mod:NewCastTimer(1.5, 2144463) + local warnSadism = mod:NewSpellAnnounce(2144464, 3) -local timerNextSadism = mod:NewNextTimer(60, 2144464) +local timerNextSadism = mod:NewNextTimer(45, 2144464) +local timerSadism = mod:NewCastTimer(3.5, 2144464) + +--- Mythic/Ascended +local specWarnEmpoweredSadism = mod:NewSpecialWarning("Empowered Sadism", 2144514, 3) +local timerCastEmpoweredSadism = mod:NewCastTimer(3.5, 2144514) + --Veras Darkshadow -local warnSmokeBomb = mod:NewTargetAnnounce(2144560, 3) +local warnSmokeBomb = mod:NewSpellAnnounce(2144560, 3) local timerNextSmokeBomb = mod:NewNextTimer(60, 2144560) --Gathios the Shatterer +local warnDeathSentence = mod:NewAnnounce("Death Sentence on %s", 3, 2144260) +local warnEmpoweredDeathSentence = mod:NewAnnounce("Empowered Death Sentence on %s", 3, 214431) +local specWarnDeathSentence = mod:NewSpecialWarningYou(2144260) +local specWarnEmpoweredDeathSentence= mod:NewSpecialWarning("Empowered Death Sentence on you", 3, 214431) + local timerNextDeathSentence = mod:NewNextTimer(60, 2144260) -local timerDeathSentence = mod:NewBuffActiveTimer(10, 2144260, nil, false) +local timerDeathSentence = mod:NewTargetTimer(10, 2144260) local timerNextConsecrate = mod:NewNextTimer(15, 2144256, nil, false) --High Nethermancer Zerevor @@ -33,33 +47,100 @@ local timerNextRuneofPower = mod:NewNextTimer(60, 2144368) local warnNetherprotection = mod:NewSpellAnnounce(2144351, 3) local timerNextNetherProtection = mod:NewNextTimer(30, 2144351) +--Authority +local timerCrownofCommand = mod:NewTimer(18, "Crown of Command on %s", 2144201) +local warnCrownofCommand = mod:NewAnnounce("Crown of Command on %s", 3, 2144201) +local councilDeath = 0 function mod:OnCombatStart(delay) + councilDeath = 0 timerNextPaintoPleasure:Start(25-delay) timerNextSmokeBomb:Start(33-delay) timerNextDeathSentence:Start(15-delay) timerNextConsecrate:Start(10-delay) timerNextRuneofPower:Start(45-delay) timerNextSadism:Start(60-delay) + self:ScheduleMethod(33-delay,"SmokeBomb") +end + +function mod:SmokeBomb() + warnSmokeBomb:Show() + timerNextSmokeBomb:cancel() + if councilDeath == 0 then + timerNextSmokeBomb:start(60) + elseif councilDeath == 1 then + timerNextSmokeBomb:start(45) + elseif councilDeath == 2 then + timerNextSmokeBomb:start(30) + elseif councilDeath == 3 then + timerNextSmokeBomb:start(15) + end end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(2144560, 2144610) and DBM:AntiSpam(20, 1) then + if args:IsSpellID(2144560, 2144610) and DBM:AntiSpam(16, 1) then warnSmokeBomb:Show() - timerNextSmokeBomb:Start() - elseif args:IsSpellID(2144560, 2144261, 2144262, 2144263) or - args:IsSpellID(2144264, 2144265, 2144266, 2144267) or - args:IsSpellID(2144268, 2144310, 2144311, 2144313) or - args:IsSpellID(2144315, 2144316, 2144317, 2144318) then - timerNextDeathSentence:Start() - timerDeathSentence:Start() + if councilDeath == 0 then + timerNextSmokeBomb:Start(60) + elseif councilDeath == 1 then + timerNextSmokeBomb:Start(45) + elseif councilDeath == 2 then + timerNextSmokeBomb:Start(30) + elseif councilDeath == 3 then + timerNextSmokeBomb:Start(15) + end + elseif args:IsSpellID(2144260) then + if args:IsPlayer() then + specWarnDeathSentence:Show(); + else + warnDeathSentence:Show(args.destName) + end + timerDeathSentence:Start(args.destName) + self:SetIcon(args.destName, 8, 15) + if DBM:AntiSpam(2,5) then + if councilDeath == 0 then + timerNextDeathSentence:Start(60) + elseif councilDeath == 1 then + timerNextDeathSentence:Start(45) + elseif councilDeath == 2 then + timerNextDeathSentence:Start(30) + elseif councilDeath == 3 then + timerNextDeathSentence:Start(15) + end + end + elseif args:IsSpellID(2144310) then + if args:IsPlayer() then + specWarnEmpoweredDeathSentence:Show(); + else + warnEmpoweredDeathSentence:Show(args.destName) + end + timerDeathSentence:Start(args.destName) + self:SetIcon(args.destName, 8, 15) + if DBM:AntiSpam(2,4) then + if councilDeath == 0 then + timerNextDeathSentence:Start(60) + elseif councilDeath == 1 then + timerNextDeathSentence:Start(45) + elseif councilDeath == 2 then + timerNextDeathSentence:Start(30) + elseif councilDeath == 3 then + timerNextDeathSentence:Start(15) + end + end elseif args:IsSpellID(2144256) then timerNextConsecrate:Start() - elseif args:IsSpellID(2144368, 2144418) and DBM:AntiSpam(20, 1) then + elseif args:IsSpellID(2144368, 2144418) and DBM:AntiSpam(20, 2) then timerNextRuneofPower:Start() elseif args:IsSpellID(2144351, 2144401) then warnNetherprotection:Show() end + if args:IsSpellID(2144201) then + timerCrownofCommand:Start(args.destName) + warnCrownofCommand:Show(args.destName) + end + if args:IsSpellID(2144559) and args.sourceName == "Veras DarkShadow" and DBM:AntiSpam(14,3) then + self:ScheduleMethod(2,"SmokeBomb") + end end function mod:SPELL_AURA_REMOVED(args) @@ -72,196 +153,57 @@ function mod:SPELL_CAST_START(args) if args:IsSpellID(2144462, 2144463, 2144512, 2144513) then warnPaintoPleasure:Show() timerNextPaintoPleasure:Start() + timerPaintoPleasure:Start() --when rogue splits, 22951 is fake 22952 is real. - elseif args:IsSpellID(2144464, 2144465, 2144466, 2144467) or args:IsSpellID(2144514, 2144515, 2144516, 2144517) then + elseif args:IsSpellID(2144464, 2144465, 2144466, 2144467) then warnSadism:Show() - timerNextSadism:Start() + timerSadism:Start() + if councilDeath == 0 then + timerNextSadism:Start(60) + elseif councilDeath == 1 then + timerNextSadism:Start(45) + elseif councilDeath == 2 then + timerNextSadism:Start(30) + elseif councilDeath == 3 then + timerNextSadism:Start(15) + end + elseif args:IsSpellID(2144514, 2144515, 2144516, 2144517) then + specWarnEmpoweredSadism:Show() + timerCastEmpoweredSadism:Start() + if councilDeath == 0 then + timerNextSadism:Start(60) + elseif councilDeath == 1 then + timerNextSadism:Start(45) + elseif councilDeath == 2 then + timerNextSadism:Start(30) + elseif councilDeath == 3 then + timerNextSadism:Start(15) + end end end ---Council:AddOption("WarnCoH", true, DBM_COUNCIL_OPTION_COH) ---Council:AddOption("WarnDP", true, DBM_COUNCIL_OPTION_DP) ---Council:AddOption("WarnDW", false, DBM_COUNCIL_OPTION_DW) ---Council:AddOption("WarnVanish", true, DBM_COUNCIL_OPTION_VANISH) ---Council:AddOption("WarnVanishFade", true, DBM_COUNCIL_OPTION_VANISHFADED) ---Council:AddOption("WarnVanishFadeSoon", true, DBM_COUNCIL_OPTION_VANISHFADESOON) ---Council:AddOption("WarnShieldNormal", true, DBM_COUNCIL_OPTION_SN) ---Council:AddOption("WarnShieldSpell", true, DBM_COUNCIL_OPTION_SS) ---Council:AddOption("WarnShieldMelee", true, DBM_COUNCIL_OPTION_SM) ---Council:AddOption("WarnDevAura", true, DBM_COUNCIL_OPTION_DEVAURA) ---Council:AddOption("WarnResAura", true, DBM_COUNCIL_OPTION_RESAURA) - ---Council:AddBarOption("Enrage") ---Council:AddBarOption("Circle of Healing") ---Council:AddBarOption("Next Circle of Healing") ---Council:AddBarOption("Divine Wrath") ---Council:AddBarOption("Reflective Shield") ---Council:AddBarOption("Vanish") ---Council:AddBarOption("Devotion Aura") ---Council:AddBarOption("Resistance Aura") ---Council:AddBarOption("Spell Shield: (.*)") ---Council:AddBarOption("Melee Shield: (.*)") - --- self:StartStatusBarTimer(900 - delay, "Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") --- self:ScheduleAnnounce(300 - delay, DBM_GENERIC_ENRAGE_WARN:format(10, DBM_MIN), 1) --- self:ScheduleAnnounce(600 - delay, DBM_GENERIC_ENRAGE_WARN:format(5, DBM_MIN), 1) --- self:ScheduleAnnounce(720 - delay, DBM_GENERIC_ENRAGE_WARN:format(3, DBM_MIN), 1) --- self:ScheduleAnnounce(840 - delay, DBM_GENERIC_ENRAGE_WARN:format(1, DBM_MIN), 2) --- self:ScheduleAnnounce(870 - delay, DBM_GENERIC_ENRAGE_WARN:format(30, DBM_SEC), 3) --- self:ScheduleAnnounce(890 - delay, DBM_GENERIC_ENRAGE_WARN:format(10, DBM_SEC), 4) - - --- function Council:OnEvent(event, args) --- if event == "SPELL_CAST_START" then --- if args.spellId == 41455 then --- self:SendSync("CoHCast") --- elseif args.spellId == 41472 then --- self:SendSync("DWCast") --- end --- elseif event == "SPELL_HEAL" then --- if args.spellId == 41455 then --- self:SendSync("CoHHeal") --- end --- elseif event == "SPELL_INTERRUPT" then --- if args.extraSpellId == 41455 then --- self:SendSync("CoHInterrupt") --- end --- elseif event == "SPELL_AURA_APPLIED" then --- if args.spellId == 41485 then --- self:SendSync("DP"..tostring(args.destName)) --- elseif args.spellId == 41472 then --- self:SendSync("DW"..tostring(args.destName)) --- elseif args.spellId == 41476 then --- self:SendSync("Vanish") --- elseif args.spellId == 41475 then --- self:SendSync("ShieldNormal") --- elseif args.spellId == 41452 then --- self:SendSync("DevAura") --- elseif args.spellId == 41453 then --- self:SendSync("ResAura") --- elseif args.spellId == 41451 then --- local target = args.destName --- if target == DBM_COUNCIL_MOB_GATHIOS then --- target = DBM_COUNCIL_MOB_GATHIOS_EN --- elseif target == DBM_COUNCIL_MOB_MALANDE then --- target = DBM_COUNCIL_MOB_MALANDE_EN --- elseif target == DBM_COUNCIL_MOB_ZEREVOR then --- target = DBM_COUNCIL_MOB_ZEREVOR_EN --- elseif target == DBM_COUNCIL_MOB_VERAS then --- target = DBM_COUNCIL_MOB_VERAS_EN --- else --- return --- end --- self:SendSync("Spellward"..target) --- elseif args.spellId == 41450 then --- local target = args.destName --- if target == DBM_COUNCIL_MOB_GATHIOS then --- target = DBM_COUNCIL_MOB_GATHIOS_EN --- elseif target == DBM_COUNCIL_MOB_MALANDE then --- target = DBM_COUNCIL_MOB_MALANDE_EN --- elseif target == DBM_COUNCIL_MOB_ZEREVOR then --- target = DBM_COUNCIL_MOB_ZEREVOR_EN --- elseif target == DBM_COUNCIL_MOB_VERAS then --- target = DBM_COUNCIL_MOB_VERAS_EN --- else --- return --- end --- self:SendSync("Protection"..target) --- end --- elseif event == "SPELL_AURA_REMOVED" then --- if args.spellId == 41476 then --- self:SendSync("FadeVanish") --- end --- elseif event == "VanishFadeSoon" then --- if self.Options.WarnVanishFadeSoon then --- self:Announce(DBM_COUNCIL_WARN_VANISHFADE_SOON, 3) --- end --- end --- end - --- function Council:OnSync(msg) --- if msg:sub(0, 9) == "Spellward" then --- msg = msg:sub(10) --- self:StartStatusBarTimer(15, "Spell Shield: "..msg, "Interface\\Icons\\Spell_Holy_SealOfRighteousness") - --- if self.Options.WarnShieldSpell then --- if GetLocale():sub(0, 2) ~= "en" then --- if msg == DBM_COUNCIL_MOB_GATHIOS_EN then --- msg = DBM_COUNCIL_MOB_GATHIOS --- elseif msg == DBM_COUNCIL_MOB_MALANDE_EN then --- msg = DBM_COUNCIL_MOB_MALANDE --- elseif msg == DBM_COUNCIL_MOB_ZEREVOR_EN then --- msg = DBM_COUNCIL_MOB_ZEREVOR --- elseif msg == DBM_COUNCIL_MOB_VERAS_EN then --- msg = DBM_COUNCIL_MOB_VERAS --- end --- end --- self:Announce(DBM_COUNCIL_WARN_SHIELD_SPELL:format(msg), 2) --- end - --- elseif msg == "DWCast" then --- self:StartStatusBarTimer(2, "Divine Wrath", "Interface\\Icons\\Spell_Holy_SearingLight") - --- elseif msg:sub(0, 10) == "Protection" and self.InCombat then --- msg = msg:sub(11) --- self:StartStatusBarTimer(15, "Melee Shield: "..msg, "Interface\\Icons\\Spell_Holy_SealOfProtection") --- if self.Options.WarnShieldMelee then --- if GetLocale():sub(0, 2) ~= "en" then --- if msg == DBM_COUNCIL_MOB_GATHIOS_EN then --- msg = DBM_COUNCIL_MOB_GATHIOS --- elseif msg == DBM_COUNCIL_MOB_MALANDE_EN then --- msg = DBM_COUNCIL_MOB_MALANDE --- elseif msg == DBM_COUNCIL_MOB_ZEREVOR_EN then --- msg = DBM_COUNCIL_MOB_ZEREVOR --- elseif msg == DBM_COUNCIL_MOB_VERAS_EN then --- msg = DBM_COUNCIL_MOB_VERAS --- end --- end --- self:Announce(DBM_COUNCIL_WARN_SHIELD_MELEE:format(msg), 2) --- end --- elseif msg == "CoHCast" then --- if self.Options.WarnCoH then --- self:Announce(DBM_COUNCIL_WARN_CAST_COH, 4) --- end --- self:StartStatusBarTimer(2.5, "Circle of Healing", "Interface\\Icons\\Spell_Holy_CircleOfRenewal") --- elseif msg == "CoHHeal" then --- self:StartStatusBarTimer(19.5, "Next Circle of Healing", "Interface\\Icons\\Spell_Holy_CircleOfRenewal") --- elseif msg == "CoHInterrupt" then --- self:StartStatusBarTimer(14.5, "Next Circle of Healing", "Interface\\Icons\\Spell_Holy_CircleOfRenewal") --- elseif msg:sub(0, 2) == "DP" and self.InCombat then --- msg = msg:sub(3) --- if self.Options.WarnDP then --- self:Announce(DBM_COUNCIL_WARN_POISON:format(msg), 2) --- end --- self:SetIcon(msg, 8) --- elseif msg:sub(0, 2) == "DW" then --- msg = msg:sub(3) --- if self.Options.WarnDW then --- self:Announce(DBM_COUNCIL_WARN_WRATH:format(msg), 1) --- end --- elseif msg == "ShieldNormal" then --- if self.Options.WarnShieldNormal then --- self:Announce(DBM_COUNCIL_WARN_SHIELD_NORMAL, 3) --- end --- self:StartStatusBarTimer(20, "Reflective Shield", "Interface\\Icons\\Spell_Holy_PowerWordShield") - --- elseif msg == "Vanish" and self.Options.WarnVanish then --- self:Announce(DBM_COUNCIL_WARN_VANISH, 1) --- self:StartStatusBarTimer(31, "Vanish", "Interface\\Icons\\Ability_Vanish") --- self:ScheduleEvent(26, "VanishFadeSoon") --- elseif msg == "FadeVanish" and self.Options.WarnVanishFade then --- self:Announce(DBM_COUNCIL_WARN_VANISH_FADED, 4) --- elseif msg == "DevAura" then --- if self.Options.WarnDevAura then --- self:Announce(DBM_COUNCIL_WARN_AURA_DEV, 1) --- end --- self:StartStatusBarTimer(30, "Devotion Aura", "Interface\\Icons\\Spell_Holy_SealOfProtection") --- elseif msg == "ResAura" then --- if self.Options.WarnResAura then --- self:Announce(DBM_COUNCIL_WARN_AURA_RES, 1) --- end --- self:StartStatusBarTimer(30, "Resistance Aura", "Interface\\Icons\\Spell_Frost_WizardMark") --- end --- end - +function mod:SPELL_INTERRUPT(args) + if args:IsSpellID(2144462, 2144463, 2144512, 2144513) then + timerPaintoPleasure:Cancel() + end +end +function mod:UNIT_DIED(args) + local cid = self:GetCIDFromGUID(args.destGUID) + if cid == 22952 and DBM:AntiSpam(2,8) then + self:UnscheduleMethod("SmokeBomb") + councilDeath = councilDeath + 1 + end + if args.destName =="Lady Malande" and DBM:AntiSpam(2,5) then + councilDeath = councilDeath + 1 + timerNextSadism:Cancel() + end + if args.destName =="High Nethermancer Zerevor" and DBM:AntiSpam(2,6) then + councilDeath = councilDeath + 1 + timerNextRuneofPower:Cancel() + end + if args.destName =="Gathios the Shatterer" and DBM:AntiSpam(2,7) then + councilDeath = councilDeath + 1 + timerNextDeathSentence:Cancel() + end +end \ No newline at end of file diff --git a/DBM-BlackTemple/Naj'entus.lua b/DBM-BlackTemple/Naj'entus.lua index f8dee04..3dda6c4 100644 --- a/DBM-BlackTemple/Naj'entus.lua +++ b/DBM-BlackTemple/Naj'entus.lua @@ -13,8 +13,11 @@ mod:RegisterEvents( local warningShield = mod:NewSpellAnnounce(2142521, 3) local warningDischarge = mod:NewSpellAnnounce(2142504, 3) +local specWarnYouDischarge = mod:NewSpecialWarningYou(2142504) local warningPuddle = mod:NewSpellAnnounce(2142594, 3) local warnSpine = mod:NewTargetAnnounce(2142516, 2) +local warnOozeDot = mod:NewSpellAnnounce(2142564, 2) +local specWarnDampFeet = mod:NewSpecialWarning("Move out of the water!", 2142550) local warnPhase2 = mod:NewPhaseAnnounce(2) @@ -29,12 +32,15 @@ local yellDischarge = mod:NewFadesYell(2142504) mod:AddBoolOption(L.SpineYellOpt) mod:AddBoolOption(L.DischargeYellOpt) +mod:AddBoolOption(L.SpineIconsOpt) +mod:AddBoolOption(L.RangeCheck) +local spineWreathIcon = 8 function mod:OnCombatStart(delay) self:ScheduleMethod(0-delay, "NewAdds") - timerNextSpine:Start(50-delay) - timerNextShield:Start(35-delay) + timerNextDischarge:Start(10-delay) + spineWreathIcon = 8 end function mod:OnCombatEnd() @@ -51,25 +57,45 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsSpellID(2142521) then warningShield:Show() timerNextShield:Start() - elseif args:IsSpellID(2142504) then-- This is the damage proc, not the aura. args:IsSpellID(2142505, 2142506, 2142507, 2142508) then - warningDischarge:Show() - timerNextDischarge:Start() - if args:IsPlayer() and self.Options.DischargeYellOpt then - yellDischarge:Schedule(8, 5) + timerNextSpine:Start(10) + elseif args:IsSpellID(2142504) then + if args:IsPlayer() then + if self.Options.DischargeYellOpt then + SendChatMessage(L.SayDischargeFade, "SAY") + yellDischarge:Countdown(8, 5) + end + specWarnYouDischarge:Show() + if self.Options.RangeCheck then + DBM.RangeCheck:Show(15) + end + end + if DBM:AntiSpam() then + warningDischarge:Show() + timerNextDischarge:Start() end elseif args:IsSpellID(2142516, 2142517, 2142518, 2142519) then - warnSpine:Show() + warnSpine:Show(args.destName) timerNextSpine:Start() timerTargetSpine:Start(args.destName) + if self.Options.SpineIconsOpt then + self:SetIcon(args.destName, spineWreathIcon, 20) + spineWreathIcon = spineWreathIcon - 1 + end elseif args:IsSpellID(2142526) then warnPhase2:Show() + timerNextShield:Stop() + timerNextSpine:Stop() elseif args:IsSpellID(2142594,2142595,2142596,2142597) or args:IsSpellID(2142560, 21425601,2142562,2142563) then if args:IsPlayer() then warningPuddle:Show() end - elseif args:IsSpellID() then + elseif args:IsSpellID(2142564, 2142565, 2142566, 2142567) then if args:IsPlayer() then - warningPuddle:Show() + warnOozeDot:Show() + end + elseif args:IsSpellID(2142550, 2142551) then + if args:IsPlayer() then + specWarnDampFeet:Show() end end end @@ -77,12 +103,21 @@ end function mod:SPELL_AURA_REMOVED(args) if args:IsSpellID(2142516, 2142517, 2142518, 2142519) then timerTargetSpine:Stop() + if self.Options.SpineIconsOpt then + spineWreathIcon = spineWreathIcon + 1 + end + elseif args:IsSpellID(2142504) then + if args:IsPlayer() then + if self.Options.RangeCheck then + DBM.RangeCheck:Hide() + end + end end end function mod:SPELL_PERIODIC_DAMAGE(args) - if self.Options.SpineYellOpt and args:IsPlayer() then - if args:IsSpellID(2142516, 2142517, 2142518, 2142519) then + if args:IsSpellID(2142516, 2142517, 2142518, 2142519) then + if self.Options.SpineYellOpt and args:IsPlayer() then SendChatMessage(L.SpineYell, "YELL") end end diff --git a/DBM-BlackTemple/ShadeOfAkama.lua b/DBM-BlackTemple/ShadeOfAkama.lua index 2061c5c..071b513 100644 --- a/DBM-BlackTemple/ShadeOfAkama.lua +++ b/DBM-BlackTemple/ShadeOfAkama.lua @@ -14,10 +14,12 @@ mod:RegisterEvents( "SPELL_HEAL" ) -local timerNextAdds = mod:NewNextTimer(35, 2142603) -local warnSoulDomination = mod:NewSpellAnnounce(2142603, 2) +local timerNextGroup = mod:NewNextTimer(35, 2142687) +local timerNextSorcerer = mod:NewNextTimer(30, 2142602) local timerSoulDomination = mod:NewCastTimer(300, 2142603) +local warnSorcerer = mod:NewSpellAnnounce(2142602, 2) +local warnSoulDomination = mod:NewSpellAnnounce(2142603, 2) local warnDeadlyPoison = mod:NewTargetAnnounce(2142657, 2) local warnPoisonedShiv = mod:NewTargetAnnounce(2142653, 2) @@ -25,29 +27,40 @@ local warnHealingStream = mod:NewSpellAnnounce(2142677, 2) local warnRiptide = mod:NewSpellAnnounce(2142680, 2) --Might be useful to warn if this is cast on shade of akama local warnVigilance = mod:NewSpellAnnounce(2142686, 2) --Might be useful to warn if this is cast on shade of akama +local fightStarted = false function mod:OnCombatStart(delay) - timerNextAdds:Start(5-delay) - self:ScheduleMethod(5-delay, "NewAdds") + timerNextGroup:Start(5-delay) + self:ScheduleMethod(5-delay, "NewGroup") + timerNextSorcerer:Start(60-delay) + self:ScheduleMethod(60-delay, "NewSorcerer") + fightStarted = true end function mod:OnCombatEnd() DBM.RangeCheck:Hide() end -function mod:NewAdds() - self:UnscheduleMethod("NewAdds") - timerNextAdds:Start() - self:ScheduleMethod(35, "NewAdds") +function mod:NewGroup() + self:UnscheduleMethod("NewGroup") + timerNextGroup:Start() + self:ScheduleMethod(35, "NewGroup") +end + +function mod:NewSorcerer() + self:UnscheduleMethod("NewSorcerer") + warnSorcerer:Show() + timerNextSorcerer:Start() + self:ScheduleMethod(30, "NewSorcerer") end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(2142603) then + if args:IsSpellID(2142603) and fightStarted == true then warnSoulDomination:Show() timerSoulDomination:Start() - elseif args:IsSpellID(2142657) and args.amount and args.amount >= 2 and args.amount % 2 == 0 then + elseif args:IsSpellID(2142657) and args.amount and args.amount >= 2 and args.amount % 2 == 0 and DBM:AntiSpam(5, 1) then warnDeadlyPoison:Show(args.destName) - elseif args:IsSpellID(2142653) and args.amount and args.amount >= 2 and args.amount % 2 == 0 then + elseif args:IsSpellID(2142653) and args.amount and args.amount >= 2 and args.amount % 2 == 0 and DBM:AntiSpam(5, 1) then warnPoisonedShiv:Show(args.destName) elseif args:IsSpellID(2142686) and self:GetCIDFromGUID(args.destGUID) == 22841 then warnVigilance:Show() diff --git a/DBM-BlackTemple/Shahraz.lua b/DBM-BlackTemple/Shahraz.lua index 230c5ab..92ec74e 100644 --- a/DBM-BlackTemple/Shahraz.lua +++ b/DBM-BlackTemple/Shahraz.lua @@ -3,7 +3,7 @@ local L = mod:GetLocalizedStrings() mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) mod:SetCreatureID(22947) -mod:RegisterCombat("yell", DBM_SHAHRAZ_YELL_PULL) +mod:RegisterCombat("yell", L.DBM_SHAHRAZ_YELL_PULL) mod:RegisterEvents( "SPELL_AURA_APPLIED", @@ -53,6 +53,9 @@ local warningShahrazFila = mod:NewAnnounce(L.ShahrazFila, 2, 2144003) local warningShahrazMater = mod:NewAnnounce(L.ShahrazMater, 2, 2144001) local warningWiShahrazVirgo = mod:NewAnnounce(L.ShahrazVirgo, 2, 2144096) +--Ascended +local warningALittleChat = mod:NewSpellAnnounce(2144007, 3) +local timerNextALittleChat = mod:NewNextTimer(48, 2144007) --local local isMother = false @@ -62,6 +65,7 @@ local below10 = false function mod:OnCombatStart(delay) timerNextForcedThoughts:Start(15-delay) timerNextFatalAttraction:Start(35-delay) + timerNextALittleChat:Start(20-delay) self:ScheduleMethod(15-delay, "NewThoughts") below20 = false below10 = false @@ -89,14 +93,14 @@ function mod:SPELL_AURA_APPLIED(args) timerSinisterThoughts:Stop() timerVileThoughts:Stop() timerWickedThoughts:Stop() - timerNextForcedThoughtsStop() + timerNextForcedThoughts:Stop() timerNextFatalAttraction:Stop() - timerNextSinfulBeamStop() - timerNextSinisterBeamStop() - timerNextVileBeamStop() - timerNextWickedBeamStop() + timerNextSinfulBeam:Stop() + timerNextSinisterBeam:Stop() + timerNextVileBeam:Stop() + timerNextWickedBeam:Stop() elseif args:IsSpellID(2144001) and args.amount and args.amount >= 8 and args.amount % 2 == 0 and DBM:AntiSpam(5, 1) then warningShahrazMater:Show() elseif args:IsSpellID(2144003) and args.amount and args.amount >= 8 and args.amount % 2 == 0 and DBM:AntiSpam(5, 1) then @@ -105,11 +109,13 @@ function mod:SPELL_AURA_APPLIED(args) warningShahrazAvian:Show() elseif args:IsSpellID(2144096) and args.amount and args.amount >= 8 and args.amount % 2 == 0 and DBM:AntiSpam(5, 1) then warningWiShahrazVirgo:Show() + elseif args:IsSpellID(2144007) then + warningALittleChat:Show() end end function mod:SPELL_DAMAGE(args) - if args:IsSpellID(2144017) or args:IsSpellID(2144018) or args:IsSpellID(2144019) or args:IsSpellID(2144020) and DBM:Antispam() then + if args:IsSpellID(2144017) or args:IsSpellID(2144018) or args:IsSpellID(2144019) or args:IsSpellID(2144020) and DBM:AntiSpam() then warningSinfulBeam:Show() timerCastSinfulBeam:Start() timerNextSinfulBeam:Start() @@ -120,7 +126,7 @@ function mod:SPELL_DAMAGE(args) timerVileThoughts:Stop() timerWickedThoughts:Stop() end - elseif args:IsSpellID(2144021) or args:IsSpellID(2144022) or args:IsSpellID(2144023) or args:IsSpellID(2144024) and DBM:Antispam() then + elseif args:IsSpellID(2144021) or args:IsSpellID(2144022) or args:IsSpellID(2144023) or args:IsSpellID(2144024) and DBM:AntiSpam() then warningSinisterBeam:Show() timerNextSinisterBeam:Start() if args:IsPlayer() then @@ -130,17 +136,17 @@ function mod:SPELL_DAMAGE(args) timerVileThoughts:Stop() timerWickedThoughts:Stop() end - elseif args:IsSpellID(2144025) or args:IsSpellID(2144026) or args:IsSpellID(2144027) or args:IsSpellID(2144028) and DBM:Antispam() then + elseif args:IsSpellID(2144025) or args:IsSpellID(2144026) or args:IsSpellID(2144027) or args:IsSpellID(2144028) and DBM:AntiSpam() then warningVileBeam:Show() timerNextVileBeam:Start() if args:IsPlayer() then warningSinfulThoughts:Show() timerSinfulThoughts:Stop() - warningVileThoughts:Stop() + timerSinisterThoughts:Stop() timerVileThoughts:Start() timerWickedThoughts:Stop() end - elseif args:IsSpellID(2144029) or args:IsSpellID(2144030) or args:IsSpellID(2144031) or args:IsSpellID(2144032) and DBM:Antispam() then + elseif args:IsSpellID(2144029) or args:IsSpellID(2144030) or args:IsSpellID(2144031) or args:IsSpellID(2144032) and DBM:AntiSpam() then warningWickedBeam:Show() timerNextWickedBeam:Start() if args:IsPlayer() then diff --git a/DBM-BlackTemple/Supremus.lua b/DBM-BlackTemple/Supremus.lua index f9ebecd..ee681ae 100644 --- a/DBM-BlackTemple/Supremus.lua +++ b/DBM-BlackTemple/Supremus.lua @@ -3,35 +3,73 @@ local L = mod:GetLocalizedStrings() mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) mod:SetCreatureID(22898) -mod:RegisterCombat("combat") +mod:RegisterCombat("combat", 22898) mod:RegisterEvents( "CHAT_MSG_RAID_BOSS_EMOTE", "SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED_DOSE", + "SPELL_AURA_REMOVED", "SPELL_CAST_START", - "SPELL_DAMAGE" + "SPELL_DAMAGE", + "UNIT_HEALTH" ) local warningTitanic = mod:NewSpellAnnounce(2142758, 3) local warningSupreme = mod:NewSpellAnnounce(2142764, 3) local warnCracked = mod:NewAnnounce(L.SupremusCracked, 2, 2142751) +local warnThreatDetected = mod:NewTargetAnnounce(2142765, 3) local timerTitanic = mod:NewCastTimer(6, 2142758) local timerSupreme = mod:NewCastTimer(2, 2142764) +local timerThreatDetected = mod:NewTargetTimer(60, 2142765) local timerEruption = mod:NewCastTimer(4, 2142774) +local timerNextPillar = mod:NewNextTimer(15, 2142574) local warnPhase2 = mod:NewPhaseAnnounce(2) +local warnPhase2Soon = mod:NewAnnounce(L.WarnPhase2Soon, 1) +local timerEnrage = mod:NewTimer(600, "Berserk", 44427) +local oldMarkThreat +local oldMarkTarget + +mod:AddBoolOption(L.threatIconsOpt) function mod:OnCombatStart(delay) + oldMarkThreat = 0 + self:ScheduleMethod(0-delay, "NewPillar") + timerEnrage:Start() +end + +function mod:NewPillar() + self:UnscheduleMethod("NewPillar") + timerNextPillar:Start() + self:ScheduleMethod(15, "NewPillar") end function mod:SPELL_AURA_APPLIED(args) if args:IsSpellID(2142772) then --Enrages at 30% hp need hp check warnPhase2:Show() + timerThreatDetected:Stop() + timerEnrage:Stop() elseif args:IsSpellID(2142751) then warnCracked:Show(args.spellName, args.destName, args.amount or 1) + elseif args:IsSpellID(2142765) then + -- warnThreatDetected:Show(args.destName) --Game does this + timerThreatDetected:Stop() + timerThreatDetected:Start(args.destName) + if self.Options.threatIconsOpt then + oldMarkThreat, oldMarkTarget = self:GetIcon(args.destName), args.destName + self:SetIcon(args.destName, 8, 60) + end + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args:IsSpellID(2142765) then + if self.Options.threatIconsOpt then + self:SetIcon(oldMarkTarget, oldMarkThreat or 0) + end end end @@ -56,6 +94,16 @@ function mod:SPELL_DAMAGE(args) timerEruption:Start() end end +mod.SPELL_MISSED = mod.SPELL_DAMAGE -- Hack to include SPELL_MISSED as well without more code + +function mod:UNIT_HEALTH(unit) + if mod:GetUnitCreatureId(unit) == 22898 then + local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; + if (hp <= 40) and DBM:AntiSpam(600) then + warnPhase2Soon:Show() + end + end +end -- Supremus.MinRevision = 828 diff --git a/DBM-BlackTemple/TeronGorefiend.lua b/DBM-BlackTemple/TeronGorefiend.lua index 54b9092..496f344 100644 --- a/DBM-BlackTemple/TeronGorefiend.lua +++ b/DBM-BlackTemple/TeronGorefiend.lua @@ -3,10 +3,11 @@ local L = mod:GetLocalizedStrings() mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) mod:SetCreatureID(22871) -mod:RegisterCombat("yell", DBM_GOREFIEND_YELL_PULL) +mod:RegisterCombat("yell", L.DBM_GOREFIEND_YELL_PULL) mod:RegisterEvents( - "SPELL_AURA_APPLIED" + "SPELL_AURA_APPLIED", + "UNIT_AURA" ) local warningWitherAndRot = mod:NewSpellAnnounce(2143286, 3) @@ -17,11 +18,15 @@ local warnSoulReaper = mod:NewSpellAnnounce(2143272, 2) local timerNextWitherAndRot = mod:NewNextTimer(30, 2143286) local timerNextGraspingDeath = mod:NewNextTimer(30, 2143282) local timerNextShadowofDeath = mod:NewNextTimer(30, 2143264) +local timerTargetShadowofDeath = mod:NewTargetTimer(37, 2143264) +local timerTargetShadowofDeath2 = mod:NewTargetTimer(75, 2143264) local timerSoulReaper = mod:NewNextTimer(20, 2143271) --Shadow of death has different timer for everyone. First person to expire has to run out. --Would like to add warnings for Teron's soul shards, tracked in a stacking buff on the boss. Spell id 2143255 +local shadowOfDeathName = GetSpellInfo(2143282) + function mod:OnCombatStart(delay) timerNextWitherAndRot:Start(15-delay) timerNextGraspingDeath:Start(30-delay) @@ -30,13 +35,13 @@ function mod:OnCombatStart(delay) end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and DBM:AntiSpam(10) then + if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and DBM:AntiSpam(29) then warningWitherAndRot:Show() timerNextWitherAndRot:Start() - elseif args:IsSpellID(2143282, 2143283, 2143284, 2143285) and DBM:AntiSpam(10) then + elseif args:IsSpellID(2143282, 2143283, 2143284, 2143285) and DBM:AntiSpam(29) then warningGraspingDeath:Show() timerNextGraspingDeath:Start() - elseif args:IsSpellID(2143264) then + elseif args:IsSpellID(2143264, 2143258, 2143259) and DBM:AntiSpam() then warnShadowOfDeath:Show() timerNextShadowofDeath:Start() elseif args:IsSpellID(2143271, 2143272, 2143273, 2143274) then @@ -45,7 +50,23 @@ function mod:SPELL_AURA_APPLIED(args) end end +--name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId +-- = UnitAura("unit", index or "name"[, "rank"[, "filter"]]) +function mod:UNIT_AURA(uId) + local name = UnitName(uId) + if (not name) then return end + local spellName, _, _, _, _, duration, expires, _, _, _, spellId = UnitDebuff(uId, shadowOfDeathName) + if not spellId or not expires then return end + if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and expires > 0 then + if expires < 60 then + timerTargetShadowofDeath:Start(expires, name) + end + if expires < 130 and expires > 60 then + timerTargetShadowofDeath2:Start(expires, name) + end + end +end --Gorefiend:AddOption("WarnIncinerate", false, DBM_GOREFIEND_OPTION_INCINERATE) diff --git a/DBM-BlackTemple/localization.en.lua b/DBM-BlackTemple/localization.en.lua index e9b6114..8e2ad17 100644 --- a/DBM-BlackTemple/localization.en.lua +++ b/DBM-BlackTemple/localization.en.lua @@ -11,13 +11,17 @@ L:SetWarningLocalization{ } L:SetOptionLocalization{ - SpineYellOpt = "Yell when you are affected by $spell:2142516", - DischargeYellOpt = "Yell when you are affected by $spell:2142504" + SpineYellOpt = "Yell when you are affected by $spell:2142516", + DischargeYellOpt = "Yell when you are affected by $spell:2142504", + SpineIconsOpt = DBM_CORE_AUTO_ICONS_OPTION_TEXT:format(2142516) } L:SetMiscLocalization{ SpineYell = "Spine on me!", - DBM_NAJENTUS_YELL_PULL = "You will die in the name of Lady Vashj!"; + DBM_NAJENTUS_YELL_PULL = "You will die in the name of Lady Vashj!", + SayDischarge = "Static Charge on "..UnitName("PLAYER"), + SayDischargeFade = "Discharge on "..UnitName("PLAYER"), + NewAdds = "New filth" } @@ -51,14 +55,17 @@ L:SetGeneralLocalization{ } L:SetWarningLocalization{ - SupremusCracked = "%s on >%s< (%d)" --(args.spellName, args.destName, args.amount or 1) + SupremusCracked = "%s on >%s< (%d)", --(args.spellName, args.destName, args.amount or 1) + WarnPhaseSoon = "Phase %s soon", } L:SetOptionLocalization{ - SupremusCracked = "Show $spell:2142751 targets and stack number warning" --(args.spellName, args.destName, args.amount or 1) + SupremusCracked = "Show $spell:2142751 targets and stack number warning", --(args.spellName, args.destName, args.amount or 1) + threatIconsOpt = DBM_CORE_AUTO_ICONS_OPTION_TEXT:format(2142765) } L:SetMiscLocalization{ + NewPillar = "New vulcano" } -- DBM_SUPREMUS_NAME = "Supremus"; @@ -123,6 +130,7 @@ L:SetOptionLocalization{ } L:SetMiscLocalization{ + DBM_GOREFIEND_YELL_PULL = "Vengeance is mine!" } -- DBM_GOREFIEND_NAME = "Teron Gorefiend"; @@ -151,6 +159,7 @@ L:SetOptionLocalization{ } L:SetMiscLocalization{ + DBM_BLOODBOIL_YELL_PULL = "Horde will... crush you."; } -- DBM_BLOODBOIL_NAME = "Gurtogg Bloodboil"; @@ -182,6 +191,7 @@ L:SetOptionLocalization{ } L:SetMiscLocalization{ + DBM_SOULS_YELL_PULL = "Pain and suffering are all that await you!" -- Essence of Suffering } -- DBM_SOULS_NAME = "Essence of Souls" @@ -281,6 +291,10 @@ L:SetOptionLocalization{ } L:SetMiscLocalization{ + DBM_COUNCIL_YELL_PULL1 = "Common... such a crude language. Bandal!", + DBM_COUNCIL_YELL_PULL2 = "You wish to test me?", + DBM_COUNCIL_YELL_PULL3 = "I have better things to do...", + DBM_COUNCIL_YELL_PULL4 = "Flee or die!" } -- DBM_COUNCIL_NAME = "Illidari Council" @@ -332,6 +346,7 @@ L:SetGeneralLocalization{ } L:SetWarningLocalization{ + TimerAddsSpawn = "Adds spawning" } L:SetOptionLocalization{ @@ -339,7 +354,13 @@ L:SetOptionLocalization{ L:SetMiscLocalization{ DBM_ILLIDAN_YELL_PULL = "You are not prepared!", + DBM_ILLIDAN_YELL_PULL_RP = "Akama. Your duplicity is hardly surprising. I should have slaughtered you and your malformed brethren long ago.", UnharnessedBlade = "Blade on me!", + DBM_ILLIDAN_YELL_DEMON = "You know nothing of power!", + Phase5 = "It is finished. You are beaten.", + TimerCombatStart = "Combat starts", + TimerHumanForm = "Human Form", + TimerDemonForm = "Demon Form", } -- DBM_ILLIDAN_NAME = "Illidan Stormrage" diff --git a/DBM-Core/Changelog.txt b/DBM-Core/Changelog.txt index 9011a60..874905c 100644 --- a/DBM-Core/Changelog.txt +++ b/DBM-Core/Changelog.txt @@ -249,4 +249,9 @@ v5.19 17/02/2024 - Fixed pull timer on Ragnaros - Fixed Lua errors in MC - Added a antispam to rockfall on Golemagg, defaulted to off. (go to settings to turn on manually) -- Removed spammy warnHandofRagTargets. \ No newline at end of file +- Removed spammy warnHandofRagTargets. +---------------------------------------------------------------------------------------------------- +v5.20 06/04/2024 +- Fixed many bugs to Black Temple +- Added many new mechanics to Black Temple +- Fixed auch crypt spam \ No newline at end of file diff --git a/DBM-Core/DBM-Core.lua b/DBM-Core/DBM-Core.lua index 6841439..158af8e 100644 --- a/DBM-Core/DBM-Core.lua +++ b/DBM-Core/DBM-Core.lua @@ -42,9 +42,9 @@ -- Globals/Default Options -- ------------------------------- DBM = { - Revision = ("$Revision: 5019 $"):sub(12, -3), - Version = "5.19", - DisplayVersion = "5.19", -- the string that is shown as version + Revision = ("$Revision: 5020 $"):sub(12, -3), + Version = "5.20", + DisplayVersion = "5.20", -- the string that is shown as version ReleaseRevision = 5019 -- the revision of the latest stable version that is available (for /dbm ver2) } diff --git a/DBM-Party-BC/Auct_Crypts/Maladaar.lua b/DBM-Party-BC/Auct_Crypts/Maladaar.lua index 43fa4e0..fc65ce6 100644 --- a/DBM-Party-BC/Auct_Crypts/Maladaar.lua +++ b/DBM-Party-BC/Auct_Crypts/Maladaar.lua @@ -35,10 +35,10 @@ end function mod:SPELL_CAST_START(args) if args:IsSpellID(32424) then warningAvatar:Show() - elseif args.spellId == 32422 then - warnRibbon:Show() - timerRibbonCast:Start() - timerNextRibbon:Start() + -- elseif args.spellId == 32422 then + -- warnRibbon:Show() + -- timerRibbonCast:Start() + -- timerNextRibbon:Start() elseif args.spellId == 32346 then -- warnSoul:Show() timerSoulCast:Start() diff --git a/DBM-ZulAman/Jan'alai.lua b/DBM-ZulAman/Jan'alai.lua index 7923e54..8a72731 100644 --- a/DBM-ZulAman/Jan'alai.lua +++ b/DBM-ZulAman/Jan'alai.lua @@ -101,7 +101,7 @@ 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 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. + 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 @@ -115,7 +115,7 @@ end function mod:SPELL_MISSED(args) if args:IsSpellID(2135924, 2135925, 2135926, 2135927) then - 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. + 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