From dc8afd6584149739bbd29461dd24b26830ddea20 Mon Sep 17 00:00:00 2001 From: Szyler <66376500+Szyler@users.noreply.github.com> Date: Sun, 3 Mar 2024 19:23:13 +0100 Subject: [PATCH] 5.19b (#4) Co-authored-by: Szyler --- DBM-AQ40/CThun.lua | 2 +- DBM-BlackTemple/Bloodboil.lua | 147 ++++++ DBM-BlackTemple/DBM-BlackTemple.toc | 25 ++ DBM-BlackTemple/EssenceOfSouls.lua | 317 +++++++++++++ DBM-BlackTemple/Illidan.lua | 423 ++++++++++++++++++ DBM-BlackTemple/IllidariCouncil.lua | 267 +++++++++++ DBM-BlackTemple/Naj'entus.lua | 141 ++++++ DBM-BlackTemple/ShadeOfAkama.lua | 99 ++++ DBM-BlackTemple/Shahraz.lua | 269 +++++++++++ DBM-BlackTemple/Supremus.lua | 150 +++++++ DBM-BlackTemple/TeronGorefiend.lua | 83 ++++ DBM-BlackTemple/Trash.lua | 21 + DBM-BlackTemple/localization.en.lua | 401 +++++++++++++++++ DBM-Core/Changelog.txt | 20 +- DBM-Core/DBM-Core.lua | 8 +- DBM-Hyjal/Anetheron.lua | 2 + DBM-Hyjal/Archimonde.lua | 4 +- DBM-Hyjal/Azgalor.lua | 3 +- DBM-Hyjal/Chromius.lua | 12 +- DBM-Hyjal/RageWinterchill.lua | 8 +- DBM-Hyjal/localization.en.lua | 1 + DBM-MC/Gehennas.lua | 21 +- DBM-MC/Golemagg.lua | 11 +- DBM-MC/Ragnaros.lua | 10 +- DBM-MC/Shazzrah.lua | 2 +- DBM-MC/Sulfuron.lua | 21 +- DBM-MagtheridonsLair/Magtheridon.lua | 6 +- DBM-Naxx/ArachnidQuarter/Faerlina.lua | 8 +- DBM-Naxx/ArachnidQuarter/Maexxna.lua | 10 +- DBM-Naxx/ConstructQuarter/Gluth.lua | 18 +- DBM-Naxx/ConstructQuarter/Grobbulus.lua | 9 +- DBM-Naxx/ConstructQuarter/Patchwerk.lua | 23 +- DBM-Naxx/ConstructQuarter/Thaddius.lua | 28 +- DBM-Naxx/FrostwyrmLair/Kel'Thuzad.lua | 139 +++--- DBM-Naxx/FrostwyrmLair/Sapphiron.lua | 19 +- DBM-Naxx/MilitaryQuarter/Gothik.lua | 6 +- DBM-Naxx/MilitaryQuarter/Horsemen.lua | 38 +- DBM-Naxx/MilitaryQuarter/Razuvious.lua | 19 +- DBM-Naxx/PlagueQuarter/Heigan.lua | 19 +- DBM-Naxx/PlagueQuarter/Loatheb.lua | 19 +- DBM-Naxx/PlagueQuarter/Noth.lua | 11 +- DBM-Onyxia/Onyxia.lua | 75 +++- DBM-Onyxia/localization.en.lua | 3 +- DBM-Outlands/Kazzak.lua | 4 +- DBM-Party-BC/Auct_Crypts/Shirrak.lua | 4 +- DBM-Party-BC/CoT_BlackMorass/PortalTimers.lua | 8 +- DBM-Serpentshrine/TheLurkerBelow.lua | 2 +- DBM-Serpentshrine/Vashj.lua | 12 +- DBM-Serpentshrine/localization.en.lua | 1 + DBM-ZG/Jeklik.lua | 2 +- DBM-ZulAman/Malacrass.lua | 53 ++- DBM-ZulAman/Zul'jin.lua | 48 +- DBM-ZulAman/localization.en.lua | 19 +- 53 files changed, 2770 insertions(+), 301 deletions(-) create mode 100644 DBM-BlackTemple/Bloodboil.lua create mode 100644 DBM-BlackTemple/DBM-BlackTemple.toc create mode 100644 DBM-BlackTemple/EssenceOfSouls.lua create mode 100644 DBM-BlackTemple/Illidan.lua create mode 100644 DBM-BlackTemple/IllidariCouncil.lua create mode 100644 DBM-BlackTemple/Naj'entus.lua create mode 100644 DBM-BlackTemple/ShadeOfAkama.lua create mode 100644 DBM-BlackTemple/Shahraz.lua create mode 100644 DBM-BlackTemple/Supremus.lua create mode 100644 DBM-BlackTemple/TeronGorefiend.lua create mode 100644 DBM-BlackTemple/Trash.lua create mode 100644 DBM-BlackTemple/localization.en.lua diff --git a/DBM-AQ40/CThun.lua b/DBM-AQ40/CThun.lua index 6f4d023..5c83ede 100644 --- a/DBM-AQ40/CThun.lua +++ b/DBM-AQ40/CThun.lua @@ -571,7 +571,7 @@ function mod:SPELL_AURA_APPLIED(args) -- Weakened phase (C'Thun and tentacles) end end if args:IsSpellID(2117117) then -- (From beneath it devours you) - if args.destName == UnitName("player") then + if args:IsPlayer() then SpecwarnStomach:Show() SendChatMessage(""..UnitName("PLAYER").."is being sent to the stomach", "Say") else diff --git a/DBM-BlackTemple/Bloodboil.lua b/DBM-BlackTemple/Bloodboil.lua new file mode 100644 index 0000000..dc790da --- /dev/null +++ b/DBM-BlackTemple/Bloodboil.lua @@ -0,0 +1,147 @@ +local mod = DBM:NewMod("Bloodboil", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22948) +mod:RegisterCombat("yell", DBM_BLOODBOIL_YELL_PULL) + +mod:RegisterEvents( + "SPELL_AURA_APPLIED", + "SPELL_AURA_REMOVED" +) + +local warningBoilingBlood = mod:NewSpellAnnounce(2143508, 3) +local warningSeismicSmash = mod:NewSpellAnnounce(2143531, 3) +local warnMakgora = mod:NewSpellAnnounce(2143520, 2) +local warningFatalstrike = mod:NewSpellAnnounce(2143527, 2) + +local timerNextBoilingBlood = mod:NewNextTimer(20, 2143508) +local timerNextSeismicSmash = mod:NewNextTimer(20, 2143531) +local timerSeismicSmash = mod:NewCastTimer(5, 2143531) +local timerNextMakgora = mod:NewNextTimer(70, 2143520) +local timerNextFatalstrike = mod:NewNextTimer(20, 2143527) +local timerNextMalevolentCleave = mod:NewNextTimer(5, 2143526) + +local timerMakgora = mod:NewTargetTimer(35, 2143523) + +local warningBoilBlood = mod:NewSpellAnnounce(2143517, 3) --Burst damage from boiling the pools +local timerNextBoilBlood = mod:NewNextTimer(20, 2143517) + + + +function mod:OnCombatStart(delay) + timerNextBoilingBlood:Start(10-delay) + timerNextSeismicSmash:Start(20-delay) + timerNextMakgora:Start(70-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2143508, 2143509, 2143510, 2143511) and (25 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + warningBoilingBlood:Show() + timerNextBoilingBlood:Start() + elseif args:IsSpellID(2143530, 2143531, 2143532, 2143533) and (10 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + warningSeismicSmash:Show() + timerNextSeismicSmash:Start() + timerSeismicSmash:Start() + 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 + warningFatalstrike:Show() + timerNextFatalstrike:Start() + elseif args:IsSpellID(2143517) and DBM:AntiSpam(15) and (25 >= timerMakgora:GetTime() or timerMakgora:GetTime() <= 3) then + warningBoilBlood:Show() + timerNextBoilBlood:Start() + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args:IsSpellID(2143523) then + timerNextBoilingBlood:Start() + timerNextSeismicSmash:Start() + timerNextMakgora:Start() + end +end + +-- local boilCounter = 0 + +--Bloodboil:AddOption("WarnSmash", false, DBM_BLOODBOIL_OPTION_SMASH) + +--Bloodboil:AddBarOption("Enrage") +--Bloodboil:AddBarOption("Bloodboil") +--Bloodboil:AddBarOption("Fel Rage") +--Bloodboil:AddBarOption("Normal Phase") +--Bloodboil:AddBarOption("Arcing Smash") + + + +-- boilCounter = 0 + +-- self:StartStatusBarTimer(600 - delay, "Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") +-- self:ScheduleSelf(300 - delay, "EnrageWarn", 300) +-- self:ScheduleSelf(480 - delay, "EnrageWarn", 120) +-- self:ScheduleSelf(540 - delay, "EnrageWarn", 60) +-- self:ScheduleSelf(570 - delay, "EnrageWarn", 30) +-- self:ScheduleSelf(590 - delay, "EnrageWarn", 10) + +-- self:StartStatusBarTimer(57.5, "Fel Rage", "Interface\\Icons\\Spell_Fire_ElementalDevastation") +-- self:ScheduleSelf(52.5, "FelRageWarn") +-- self:StartStatusBarTimer(11.5, "Bloodboil", "Interface\\Icons\\Spell_Shadow_BloodBoil") + + + +-- function Bloodboil:OnEvent(event, arg1) +-- if event == "SPELL_AURA_APPLIED" then +-- if arg1.spellId == 42005 then +-- self:SendSync("Bloodboil") +-- elseif arg1.spellId == 40604 then +-- self:SendSync("FelRage"..tostring(arg1.destName)) +-- elseif arg1.spellId == 40599 then +-- self:SendSync("ArcingSmash"..tostring(arg1.destName)) +-- end +-- elseif event == "SPELL_AURA_REMOVED" then +-- if arg1.spellId == 40594 then +-- boilCounter = 0 +-- self:Announce(DBM_BLOODBOIL_WARN_NORMALPHASE, 3) +-- self:ScheduleSelf(52, "FelRageWarn") +-- self:StartStatusBarTimer(57, "Fel Rage", "Interface\\Icons\\Spell_Fire_ElementalDevastation") +-- self:StartStatusBarTimer(10, "Bloodboil", "Interface\\Icons\\Spell_Shadow_BloodBoil") +-- end +-- elseif event == "FelRageWarn" then +-- self:Announce(DBM_BLOODBOIL_WARN_FELRAGE_SOON, 2) +-- elseif event == "NormalWarn" then +-- self:Announce(DBM_BLOODBOIL_WARN_NORMAL_SOON, 2) +-- elseif event == "SmashWarn" then +-- self:Announce(DBM_BLOODBOIL_WARN_SMASH_SOON, 2) +-- elseif event == "EnrageWarn" and type(arg1) == "number" then +-- if arg1 >= 60 then +-- self:Announce(string.format(DBM_BLOODBOIL_WARN_ENRAGE, (arg1/60), DBM_MIN), 1) +-- else +-- self:Announce(string.format(DBM_BLOODBOIL_WARN_ENRAGE, arg1, DBM_SEC), 3) +-- end +-- end +-- end + +-- function Bloodboil:OnSync(msg) +-- if msg == "Bloodboil" then +-- boilCounter = boilCounter + 1 +-- self:Announce(DBM_BLOODBOIL_WARN_BLOODBOIL:format(boilCounter), 1) +-- self:StartStatusBarTimer(10, "Bloodboil", "Interface\\Icons\\Spell_Shadow_BloodBoil") +-- elseif msg:sub(0, 7) == "FelRage" then +-- msg = msg:sub(8) +-- self:EndStatusBarTimer("Bloodboil") +-- self:StartStatusBarTimer(28, "Normal Phase", "Interface\\Icons\\Spell_Nature_WispSplode") +-- self:ScheduleSelf(23, "NormalWarn") +-- self:Announce(DBM_BLOODBOIL_WARN_FELRAGE:format(msg), 4) +-- boilCounter = 0 +-- elseif msg:sub(0, 11) == "ArcingSmash" then +-- msg = msg:sub(12) +-- self:StartStatusBarTimer(4, "Arcing Smash", "Interface\\Icons\\Ability_Warrior_Cleave") +-- if self.Options.WarnSmash then +-- self:ScheduleSelf(3, "SmashWarn") +-- self:Announce(DBM_BLOODBOIL_WARN_SMASH, 4) +-- end +-- end +-- end diff --git a/DBM-BlackTemple/DBM-BlackTemple.toc b/DBM-BlackTemple/DBM-BlackTemple.toc new file mode 100644 index 0000000..cec929d --- /dev/null +++ b/DBM-BlackTemple/DBM-BlackTemple.toc @@ -0,0 +1,25 @@ +## Interface: 30300 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Black Temple|r +## Author: Tandanu and Nitram, updated by Junior and Szyler. +## RequiredDeps: DBM-Core, DBM-BurningCrusade +## SavedVariablesPerCharacter: DBMBlackTemple_SavedVars, DBMBlackTemple_SavedStats +## DefaultState: Enabled +## LoadOnDemand: 1 + +## X-DBM-Mod: 1 +## X-DBM-Mod-Category: BC +## X-DBM-Name: Black Temple +## X-DBM-Mod-Sort: 307 +## X-DBM-Mod-LoadZone: Black Temple + +localization.en.lua +Naj'entus.lua +Supremus.lua +ShadeOfAkama.lua +TeronGorefiend.lua +Bloodboil.lua +EssenceOfSouls.lua +Shahraz.lua +IllidariCouncil.lua +Illidan.lua +Trash.lua diff --git a/DBM-BlackTemple/EssenceOfSouls.lua b/DBM-BlackTemple/EssenceOfSouls.lua new file mode 100644 index 0000000..a4a8bbe --- /dev/null +++ b/DBM-BlackTemple/EssenceOfSouls.lua @@ -0,0 +1,317 @@ +local mod = DBM:NewMod("Souls", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(23418) +mod:RegisterCombat("yell", DBM_SOULS_YELL_PULL, 23420) + + +mod:RegisterEvents( + "CHAT_MSG_RAID_BOSS_EMOTE", + "CHAT_MSG_MONSTER_YELL", + "SPELL_AURA_APPLIED", + "SPELL_AURA_REMOVED", + "SPELL_CAST_START", + "SPELL_DAMAGE", + "UNIT_HEALTH" +) + + +local intermissionSummonEssenceOfSuffering = mod:NewCastTimer(35, 2143967) +local intermissionSummonEssenceOfDesire = mod:NewCastTimer(35, 2143968) +local intermissionSummonEssenceOfAnger = mod:NewCastTimer(35, 2143969) + +local warnSpiritShock = mod:NewSpellAnnounce(2143804, 2) +local timerTargetSpiritShock = mod:NewTargetTimer(5, 2143804) + +local warnSoulBlast = mod:NewSpellAnnounce(2143961, 2) +local warnSoulDrain = mod:NewSpellAnnounce(2143760, 2) +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 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 timerNextSeethe = mod:NewNextTimer(15, 2143861) + +local warnSoulScream = mod:NewSpellAnnounce(2143853, 2) +local timerSoulScream = mod:NewCastTimer(2, 2143853) +local timerNextSoulScream = mod:NewNextTimer(12, 2143853) + + +local warnAuraOfSuffering = mod:NewSpellAnnounce(2143751, 2) +local warnAuraOfDesire = mod:NewSpellAnnounce(2143800, 2) +local warnAuraOfAnger = mod:NewSpellAnnounce(2143850, 2) + +--local +local isSuffer = false + +function mod:OnCombatStart(delay) + self.vb.phase = 1 + isSuffer = true +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2143804) then + warnSpiritShock:Show() + 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 + warnSoulDrain:Show() + elseif args:IsSpellID(2143808) then + warnRuneShield:Show() + timerRuneShield:Start() + 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 + self.vb.phase = 2 + warnAuraOfDesire:Show() + timerNextRuneShield:Start(16) + timerNextTease:Start(20) + elseif args:IsSpellID(2143850) and DBM:AntiSpam(60) and self.vb.phase == 2 then + self.vb.phase = 3 + warnAuraOfAnger:Show() + timerNextSoulScream:Start(10) + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args:IsSpellID(2143808) then + -- warnRuneShield:Hide() + timerRuneShield:Stop() + end +end + + +function mod:SPELL_CAST_START(args) + if args:IsSpellID(2143853, 2143854, 2143855, 2143856) or args:IsSpellID(2143857) then + warnSoulScream:Show() + timerSoulScream:Start() + timerNextSoulScream:Start() + end +end + +function mod:UNIT_HEALTH(unit) + --Essence of Suffering + if isSuffer and (mod:GetUnitCreatureId(unit) == 23418) then + local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; + if (hp <= 1) then + intermissionSummonEssenceOfSuffering:Start() + end + --Essence of Desire + elseif isSuffer and (mod:GetUnitCreatureId(unit) == 23419) then + local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; + if (hp <= 1) then + intermissionSummonEssenceOfDesire:Start() + 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 + end +end + +-- Souls.MinVersionToSync = 3.00 + + +-- local drainTargets = {} +-- local spiteTargets = {} +-- local lastFixate +-- local lastSpite = 0 +-- local phase = 1 + +--Souls:AddOption("WarnDrain", true, DBM_SOULS_OPTION_DRAIN) +--Souls:AddOption("WarnDrainCast", false, DBM_SOULS_OPTION_DRAIN_CAST) +--Souls:AddOption("WarnFixate", false, DBM_SOULS_OPTION_FIXATE) +--Souls:AddOption("WarnScream", false, DBM_SOULS_OPTION_SCREAM) +--Souls:AddOption("WarnSpite", true, DBM_SOULS_OPTION_SPITE) +--Souls:AddOption("SpecWarnSpite", true, DBM_SOULS_OPTION_SPECWARN_SPITE) +--Souls:AddOption("SpiteWhisper", false, DBM_SOULS_OPTION_WHISPER_SPITE) + +--Souls:AddBarOption("Enrage") +--Souls:AddBarOption("Next Enrage") +--Souls:AddBarOption("Fixate: (.*)") +--Souls:AddBarOption("Mana Drain") +--Souls:AddBarOption("Rune Shield") +--Souls:AddBarOption("Deaden") +--Souls:AddBarOption("Soul Scream") + +-- drainTargets = {} +-- spiteTargets = {} +-- lastFixate = nil +-- self:StartStatusBarTimer(47 - delay, "Next Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") +-- self:ScheduleSelf(42 - delay, "EnrageWarn") +-- phase = 1 + +-- function Souls:OnEvent(event, arg1) +-- if event == "CHAT_MSG_RAID_BOSS_EMOTE" then +-- if arg1 == DBM_SOULS_EMOTE_ENRAGE and self.InCombat then +-- self:Announce(DBM_SOULS_WARN_ENRAGE, 3) +-- self:StartStatusBarTimer(15, "Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") +-- self:ScheduleSelf(15, "NextEnrage") +-- end +-- elseif event == "NextEnrage" then +-- self:Announce(DBM_SOULS_WARN_ENRAGE_OVER, 2) +-- self:StartStatusBarTimer(32, "Next Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") +-- self:ScheduleSelf(27, "EnrageWarn") +-- elseif event == "EnrageWarn" then +-- self:Announce(DBM_SOULS_WARN_ENRAGE_SOON, 2) + +-- elseif event == "SPELL_AURA_APPLIED" then +-- if arg1.spellId == 41431 and bit.band(arg1.destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) == 0 then +-- self:SendSync("Runeshield") +-- elseif arg1.spellId == 41376 then +-- self:SendSync("Spite"..tostring(arg1.destName)) +-- elseif arg1.spellId == 41303 then +-- self:SendSync("SoulDrain"..tostring(arg1.destName)) +-- elseif arg1.spellId == 41294 then +-- self:SendSync("Fixate"..tostring(arg1.destName)) +-- end +-- elseif event == "RuneShieldWarn" then +-- self:Announce(DBM_SOULS_WARN_RUNESHIELD_SOON, 2) + +-- elseif event == "SPELL_CAST_START" then +-- if arg1.spellId == 41410 then +-- self:SendSync("Deaden") +-- elseif arg1.spellId == 41303 then +-- self:SendSync("DrainCast") +-- end + +-- elseif event == "SPELL_DAMAGE" then +-- if arg1.spellId == 41545 then +-- self:SendSync("SoulScream") +-- end + +-- elseif event == "DeadenWarn" then +-- self:Announce(DBM_SOULS_WARN_DEADEN_SOON, 1) + +-- elseif event == "CHAT_MSG_MONSTER_YELL" and arg1 then +-- if arg1 == DBM_SOULS_YELL_DESIRE or arg1:find(DBM_SOULS_YELL_DESIRE_DEMONIC) then +-- phase = 2 +-- self:Announce(DBM_SOULS_WARN_DESIRE_INC, 1) +-- self:StartStatusBarTimer(160, "Mana Drain", "Interface\\Icons\\Spell_Shadow_SiphonMana") +-- self:ScheduleSelf(140, "ManaDrainWarn") + +-- self:StartStatusBarTimer(13.5, "Rune Shield", "Interface\\Icons\\Spell_Arcane_Blast") +-- self:ScheduleSelf(10.5, "RuneShieldWarn") +-- self:StartStatusBarTimer(28, "Deaden", "Interface\\Icons\\Spell_Shadow_SoulLeech_1") +-- self:ScheduleSelf(23, "DeadenWarn") +-- elseif arg1 == DBM_SOULS_YELL_ANGER_INC then +-- phase = 3 +-- self:Announce(DBM_SOULS_WARN_ANGER_INC, 1) +-- end +-- elseif event == "ManaDrainWarn" then +-- self:Announce(DBM_SOULS_WARN_MANADRAIN, 1) + +-- elseif event == "WarnDrain" then +-- local msg = "" +-- for i, v in ipairs(drainTargets) do +-- msg = msg..">"..v.."<"..", " +-- end +-- msg = msg:sub(0, -3) +-- drainTargets = {} +-- self:Announce(DBM_SOULS_WARN_SOULDRAIN:format(msg), 1) +-- elseif event == "WarnSpite" then +-- if (GetTime() - lastSpite) > 12 then +-- lastSpite = GetTime() +-- local msg = "" +-- for i, v in ipairs(spiteTargets) do +-- msg = msg..">"..v.."<"..", " +-- if v == UnitName("player") then +-- if self.Options.SpecWarnSpite then +-- self:AddSpecialWarning(DBM_SOULS_SPECWARN_SPITE) +-- end +-- end +-- if self.Options.SpiteWhisper and self.Options.Announce and DBM.Rank >= 1 then +-- self:SendHiddenWhisper(DBM_SOULS_WHISPER_SPITE, v) +-- end +-- end +-- msg = msg:sub(0, -3) +-- spiteTargets = {} +-- self:Announce(DBM_SOULS_WARN_SPITE:format(msg), 2) +-- else +-- spiteTargets = {} +-- end +-- end +-- end + +-- function Souls:GetBossHP() +-- if phase == 1 then +-- return DBM_SOULS_BOSS_SUFFERING..": "..DBM.GetHPByName(DBM_SOULS_BOSS_SUFFERING) +-- elseif phase == 2 then +-- return DBM_SOULS_BOSS_DESIRE..": "..DBM.GetHPByName(DBM_SOULS_BOSS_DESIRE) +-- elseif phase == 3 then +-- return DBM_SOULS_BOSS_KILL_NAME..": "..DBM.GetHPByName(DBM_SOULS_BOSS_KILL_NAME) +-- end +-- end + +-- function Souls:OnSync(msg) +-- if msg == "Runeshield" then +-- self:Announce(DBM_SOULS_WARN_RUNESHIELD, 3) +-- self:StartStatusBarTimer(15.4, "Rune Shield", "Interface\\Icons\\Spell_Arcane_Blast") -- the timer between 2 runeshields is always about 15.5 seconds in my combatlog...this could be due to delay/lag/whatever, but this timer seems to be quite accurate +-- self:ScheduleSelf(12.4, "RuneShieldWarn") +-- elseif msg == "Deaden" then +-- self:Announce(DBM_SOULS_WARN_DEADEN, 2) +-- self:StartStatusBarTimer(31.5, "Deaden", "Interface\\Icons\\Spell_Shadow_SoulLeech_1") +-- self:ScheduleSelf(26.5, "DeadenWarn") +-- elseif msg:sub(0, 5) == "Spite" and self.Options.WarnSpite then +-- msg = msg:sub(6) +-- table.insert(spiteTargets, msg) +-- self:UnScheduleSelf("WarnSpite") +-- if #spiteTargets == 3 then +-- self:OnEvent("WarnSpite") +-- else +-- self:ScheduleSelf(1.3, "WarnSpite") +-- end +-- elseif msg:sub(0, 9) == "SoulDrain" and self.Options.WarnDrain then +-- msg = msg:sub(10) +-- table.insert(drainTargets, msg) +-- self:UnScheduleSelf("WarnDrain") +-- if #drainTargets == 5 then +-- self:OnEvent("WarnDrain") +-- else +-- self:ScheduleSelf(1.5, "WarnDrain") +-- end +-- elseif msg == "DrainCast" then +-- if self.Options.WarnDrainCast then +-- self:Announce(DBM_SOULS_WARN_SOULDRAIN_CAST, 1) +-- end +-- elseif msg:sub(0, 6) == "Fixate" and self.InCombat then +-- msg = msg:sub(7) +-- if lastFixate then +-- self:EndStatusBarTimer(lastFixate) +-- end +-- self:StartStatusBarTimer(5.5, "Fixate: "..msg, "Interface\\Icons\\Spell_Shadow_SpectralSight") +-- lastFixate = "Fixate: "..msg +-- if msg == UnitName("player") then +-- self:AddSpecialWarning(DBM_SOULS_SPECWARN_FIXATE) +-- end +-- if self.Options.WarnFixate then +-- self:Announce(DBM_SOULS_WARN_FIXATE:format(msg), 2) +-- end +-- elseif msg == "SoulScream" then +-- self:StartStatusBarTimer(10, "Soul Scream", "Interface\\Icons\\Spell_Shadow_SoulLeech") +-- if self.Options.WarnScream then +-- self:Announce(DBM_SOULS_WARN_SCREAM, 1) +-- end +-- end +-- end + diff --git a/DBM-BlackTemple/Illidan.lua b/DBM-BlackTemple/Illidan.lua new file mode 100644 index 0000000..d46e2d5 --- /dev/null +++ b/DBM-BlackTemple/Illidan.lua @@ -0,0 +1,423 @@ +local mod = DBM:NewMod("Illidan", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22917) +mod:RegisterCombat("yell", L.DBM_ILLIDAN_YELL_PULL) +-- Illidan:SetMinCombatTime(20) + + +mod:RegisterEvents( + "SPELL_CAST_SUCCESS", + "SPELL_CAST_START", + "SPELL_AURA_APPLIED", + "SPELL_CAST_SUCCESS", + "SPELL_DAMAGE", + "UNIT_DIED", + "CHAT_MSG_MONSTER_YELL", + "UNIT_SPELLCAST_START" +) + +local timerCombatStart = mod:NewTimer(3, "TimerCombatStart", 2457) + +local warnChaosBlast = mod:NewSpellAnnounce(2144802, 2) +local warnFlameCrash = mod:NewSpellAnnounce(2144720, 2) +local warnFlameCrashDot = mod:NewSpellAnnounce(2144720, 3) +local warnForceNova = mod:NewSpellAnnounce(2144724, 2) +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 yellUnharnessedBlade = mod:NewFadesYell(2144742) + +local timerChaosBlast = mod:NewCastTimer(2, 2144802) +local timerChaosBlastDebuff = mod:NewBuffActiveTimer(6, 2144802) +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 timerNextFelFireBlast = mod:NewNextTimer(20, 2144829) +local timerFelFireBlast2 = mod:NewCastTimer(2, 2144802) +local timerNextFelFireBlast2 = mod:NewNextTimer(20, 2144829) +local timerNextUnharnessedBlade = mod:NewNextTimer(30, 2144742) + +function mod:OnCombatStart(delay) + 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) +end + +function mod:UnharnessedBlade() + local target = nil + target = mod:GetBossTarget(22917) + if target == UnitName("player") then + yellUnharnessedBlade:Countdown(3,3) + end +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 + warnChaosBlast:Show() + timerChaosBlast:Start() + elseif args:IsSpellID(2144715,2144716,2144717,2144718) then + warnShear:Show() + timerNextShear:Start() + end +end + +function mod:SPELL_CAST_START(args) + if args:IsSpellID(2144737,2144738,2144739,2144740) then + warnDrawSoul:Show() + timerNextDrawSoul:Start() + elseif args:IsSpellID(2144720,2144721,2144722,2144723) then + timerNextFlameCrash:Start() + warnFlameCrash:Show() + timerFlameCrash:Start() + elseif args:IsSpellID(2144829,2144830,2144831,2144832) then + warnFelFireBlast:Show() + timerNextFelFireBlast:Start() + elseif args:IsSpellID(2144742) then + self:ScheduleMethod(0.2, "UnharnessedBlade") + warnUnharnessedBlade:Show() + timerNextUnharnessedBlade:Start() + elseif args:IsSpellID(2144715,2144716,2144717,2144718) then + warnShear:Show() + timerNextShear:Start() + elseif args:IsSpellID(2144802,2144803,2144804,2144805) then + warnChaosBlast:Show() + timerChaosBlast:Start() + end +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2144802,2144803,2144804,2144805) then + timerChaosBlastDebuff:Start() + elseif args:IsSpellID(2144720,2144721,2144722,2144723) then + if args:IsPlayer() then + warnFlameCrashDot:Show() + end + end +end + +function mod:SPELL_DAMAGE(args) + if args:IsSpellID(2144724,2144725,2144726,2144727) and DBM:AntiSpam(15) then + warnForceNova:Show() + timerNextForceNova:Start() + end +end + +function mod:OnCombatEnd() + DBM.RangeCheck:Hide() +end + +-- if self.Options.RangeCheck then +-- DBM_Gui_DistanceFrame_Hide() +-- end +-- phase2 = nil +-- phase4 = nil + +-- local flameTargets = {} +-- local flamesDown = 0 +-- local flameBursts = 0 +-- local demonTargets = {} +-- local phase2 +-- local warnedDemons +-- local phase4 + + +--Illidan:AddOption("RangeCheck", true, DBM_ILLIDAN_OPTION_RANGECHECK) +--Illidan:AddOption("WarnPhases", true, DBM_ILLIDAN_OPTION_PHASES) +----Illidan:AddOption("WarnShearCast", false, DBM_ILLIDAN_OPTION_SHEARCAST) +----Illidan:AddOption("WarnShear", true, DBM_ILLIDAN_OPTION_SHEAR) +--Illidan:AddOption("WarnShadowfiend", true, DBM_ILLIDAN_OPTION_SHADOWFIEND) +--Illidan:AddOption("IconShadowfiend", true, DBM_ILLIDAN_OPTION_ICONFIEND) +--Illidan:AddOption("WarnBarrage", true, DBM_ILLIDAN_OPTION_BARRAGE) +--Illidan:AddOption("WarnBarrageSoon", true, DBM_ILLIDAN_OPTION_BARRAGE_SOON) +--Illidan:AddOption("WarnEyeBeam", true, DBM_ILLIDAN_OPTION_EYEBEAM) +----Illidan:AddOption("WarnEyeBeamSoon", false, DBM_ILLIDAN_OPTION_EYEBEAMSOON) -- inaccurate! +--Illidan:AddOption("WarnFlames", true, DBM_ILLIDAN_OPTION_FLAMES) +--Illidan:AddOption("WarnDemonForm", true, DBM_ILLIDAN_OPTION_DEMONFORM) +--Illidan:AddOption("WarnFlameBursts", true, DBM_ILLIDAN_OPTION_FLAMEBURST) +--Illidan:AddOption("WarnShadowDemons", true, DBM_ILLIDAN_OPTION_SHADOWDEMONS) + +--Illidan:AddBarOption("Enrage") +--Illidan:AddBarOption("Illidan Stormrage") +----Illidan:AddBarOption("Shear: (.*)") +--Illidan:AddBarOption("Shadowfiend: (.*)") +--Illidan:AddBarOption("Next Dark Barrage") +--Illidan:AddBarOption("Dark Barrage: (.*)") +--Illidan:AddBarOption("Flames: (.*)", false) +--Illidan:AddBarOption("Demon Phase") +--Illidan:AddBarOption("Normal Phase") +--Illidan:AddBarOption("Shadow Demons") +--Illidan:AddBarOption("Next Flame Burst") + +-- flameTargets = {} +-- demonTargets = {} +-- flamesDown = 0 +-- flameBursts = 0 +-- phase2 = nil +-- phase4 = nil +-- delay = (delay or 0) - 7 - 33 -- 7 = time until combat starts and 33 because the timer will stop while illidan is switching from phase 1->2, 2->3 and 3->4; according to my combatlogs this should be quite accurate +-- self:StartStatusBarTimer(1500 - delay, "Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy"); +-- self:ScheduleAnnounce(900 - delay, DBM_GENERIC_ENRAGE_WARN:format(10, DBM_MIN), 1) +-- self:ScheduleAnnounce(1200 - delay, DBM_GENERIC_ENRAGE_WARN:format(5, DBM_MIN), 1) +-- self:ScheduleAnnounce(1320 - delay, DBM_GENERIC_ENRAGE_WARN:format(3, DBM_MIN), 1) +-- self:ScheduleAnnounce(1440 - delay, DBM_GENERIC_ENRAGE_WARN:format(1, DBM_MIN), 2) +-- self:ScheduleAnnounce(1470 - delay, DBM_GENERIC_ENRAGE_WARN:format(30, DBM_SEC), 3) +-- self:ScheduleAnnounce(1490 - delay, DBM_GENERIC_ENRAGE_WARN:format(10, DBM_SEC), 4) + +-- function Illidan:OnEvent(event, args) +-- if event == "CHAT_MSG_MONSTER_YELL" then +-- if args == DBM_ILLIDAN_YELL_EYEBEAM then +-- self:SendSync("EyeBeam") +-- elseif args == DBM_ILLIDAN_YELL_DEMONFORM then +-- self:SendSync("DemonForm") +-- elseif args == DBM_ILLIDAN_YELL_PHASE4 then +-- self:SendSync("Phase4") +-- elseif args == DBM_ILLIDAN_YELL_START then +-- self:StartStatusBarTimer(36.6, "Illidan Stormrage", "Interface\\Icons\\INV_Weapon_ShortBlade_07") +-- end +-- elseif event == "SPELL_AURA_APPLIED" then +-- if args.spellId == 40647 then +-- self:SendSync("Prison") +-- -- elseif args.spellId == 41032 then +-- -- self:SendSync("Shear"..tostring(args.destName)) +-- elseif args.spellId == 41917 or args.spellId == 41914 then +-- self:SendSync("Shadowfiend"..tostring(args.destName)) +-- elseif args.spellId == 40585 then +-- self:SendSync("DarkBarrage"..tostring(args.destName)) +-- elseif args.spellId == 40932 then +-- self:SendSync("Flames"..tostring(args.destName)) +-- elseif args.spellId == 41083 then +-- self:SendSync("ShadowDems"..tostring(args.destName)) +-- elseif args.spellId == 40683 then -- ?? +-- self:SendSync("P4Enrage") +-- elseif args.spellId == 40695 then +-- self:SendSync("Caged") +-- end +-- elseif event == "SPELL_CAST_SUCCESS" then +-- if args.spellId == 39855 then +-- self:SendSync("Phase2") +-- end +-- elseif event == "WarnAF" then +-- local msg = "" +-- for i, v in ipairs(flameTargets) do +-- msg = msg..">"..v.."<, " +-- end +-- msg = msg:sub(0, -3) +-- flameTargets = {} +-- if self.Options.WarnFlames then +-- self:Announce(DBM_ILLIDAN_WARN_FLAMES:format(msg), 3) +-- end +-- elseif event == "WarnSD" and not warnedDemons then +-- local msg = "" +-- for i, v in ipairs(demonTargets) do +-- msg = msg..">"..v.."<, " +-- end +-- msg = msg:sub(0, -3) +-- demonTargets = {} +-- if self.Options.WarnShadowDemons then +-- self:Announce(DBM_ILLIDAN_WARN_SHADOWDEMSON:format(msg), 4) +-- end +-- warnedDemons = true +-- elseif event == "UNIT_DIED" then +-- if args.destName == DBM_ILLIDAN_MOB_FLAME then +-- self:SendSync("FlameDown") +-- end +-- elseif event == "SPELL_DAMAGE" then +-- if args.spellId == 41131 then +-- self:SendSync("Flameburst") +-- end +-- -- elseif event == "SPELL_CAST_START" then +-- -- if args.spellId == 41032 then +-- -- self:SendSync("CastShear") +-- -- end +-- end +-- end + +-- function Illidan:GetBossHP() +-- if phase2 then +-- return DBM_ILLIDAN_STATUSMSG_PHASE2 +-- end +-- end + +-- function Illidan:OnSync(msg) +-- if msg:sub(0, 5) == "Shear" then +-- -- msg = msg:sub(6) +-- -- if self.Options.WarnShear then +-- -- self:Announce(DBM_ILLIDAN_WARN_SHEAR:format(msg), 1) +-- -- end +-- -- self:StartStatusBarTimer(7, "Shear: "..msg, "Interface\\Icons\\Spell_Shadow_FocusedPower") +-- elseif msg == "CastShear" then +-- -- if self.Options.WarnShearCast then +-- -- self:Announce(DBM_ILLIDAN_WARN_CASTSHEAR, 1) +-- -- end +-- elseif msg:sub(0, 11) == "Shadowfiend" then +-- msg = msg:sub(12) +-- if msg == UnitName("player") then +-- self:AddSpecialWarning(DBM_ILLIDAN_SELFWARN_SHADOWFIEND) +-- end +-- if self.Options.WarnShadowfiend then +-- self:Announce(DBM_ILLIDAN_WARN_SHADOWFIEND:format(msg), 2) +-- end +-- if self.Options.IconShadowfiend then +-- self:SetIcon(msg, 10) +-- end +-- self:StartStatusBarTimer(10, "Shadowfiend: "..msg, "Interface\\Icons\\Spell_Shadow_Shadowfiend") +-- elseif msg:sub(0, 11) == "DarkBarrage" then +-- msg = msg:sub(12) +-- if self.Options.WarnBarrage then +-- self:Announce(DBM_ILLIDAN_WARN_BARRAGE:format(msg), 2) +-- end +-- if self.Options.WarnBarrageSoon then +-- self:ScheduleAnnounce(42, DBM_ILLIDAN_WARN_BARRAGE_SOON, 1) +-- end +-- self:EndStatusBarTimer("Next Dark Barrage") -- synced timers may only overwrite timers that are about to expire - the barrage timer seems to be quite inaccurate...so send a end timer command before. +-- self:StartStatusBarTimer(44, "Next Dark Barrage", "Interface\\Icons\\Spell_Shadow_PainSpike") +-- self:StartStatusBarTimer(10, "Dark Barrage: "..msg, "Interface\\Icons\\Spell_Shadow_PainSpike") +-- elseif msg == "EyeBeam" then +-- if self.Options.WarnEyeBeam then +-- self:Announce(DBM_ILLIDAN_WARN_EYEBEAM, 3) +-- end +-- -- if self.Options.WarnEyeBeamSoon then -- inaccurate! +-- -- self:ScheduleAnnounce(32, DBM_ILLIDAN_WARN_EYEBEAM_SOON, 2) +-- -- end +-- -- self:StartStatusBarTimer(35, "Next Eye Blast", "Interface\\Icons\\Spell_Shadow_SiphonMana") +-- elseif msg:sub(0, 6) == "Flames" then +-- msg = msg:sub(7) +-- self:StartStatusBarTimer(60, "Flames: "..msg, "Interface\\Icons\\Spell_Fire_BlueImmolation") +-- if msg == UnitName("player") then +-- self:AddSpecialWarning(DBM_ILLIDAN_SELFWARN_SHADOW) +-- end +-- table.insert(flameTargets, msg) +-- self:UnScheduleEvent("WarnAF") +-- self:ScheduleEvent(1, "WarnAF") +-- elseif msg == "Phase2" then +-- if self.Options.WarnPhases then +-- self:Announce(DBM_ILLIDAN_WARN_PHASE2, 4) +-- end +-- if self.Options.WarnBarrageSoon then +-- self:ScheduleAnnounce(76, DBM_ILLIDAN_WARN_BARRAGE_SOON, 1) +-- end +-- self:StartStatusBarTimer(81, "Next Dark Barrage", "Interface\\Icons\\Spell_Shadow_PainSpike") +-- phase2 = true +-- flamesDown = 0 +-- elseif msg == "Phase3" then +-- if self.Options.WarnPhases then +-- self:Announce(DBM_ILLIDAN_WARN_PHASE3, 4) +-- end +-- if self.Options.RangeCheck then +-- DBM_Gui_DistanceFrame_Show() +-- end +-- phase2 = nil +-- self:StartStatusBarTimer(76, "Demon Phase", "Interface\\Icons\\Spell_Shadow_Metamorphosis") +-- if self.Options.WarnDemonForm then +-- self:ScheduleAnnounce(66, DBM_ILLIDAN_WARN_DEMONPHASE_SOON, 3) +-- end +-- self:EndStatusBarTimer("Next Dark Barrage") +-- self:UnScheduleAnnounce(DBM_ILLIDAN_WARN_BARRAGE_SOON, 1) +-- elseif msg == "Phase4" then +-- if self.Options.WarnPhases then +-- self:Announce(DBM_ILLIDAN_WARN_PHASE4, 4) +-- end +-- self:EndStatusBarTimer("Demon Phase") +-- self:EndStatusBarTimer("Normal Phase") +-- self:UnScheduleAnnounce(DBM_ILLIDAN_WARN_DEMONPHASE_SOON) +-- self:UnScheduleAnnounce(DBM_ILLIDAN_WARN_NORMALPHASE_SOON) +-- self:StartStatusBarTimer(92, "Demon Phase", "Interface\\Icons\\Spell_Shadow_Metamorphosis") +-- if self.Options.WarnDemonForm then +-- self:ScheduleAnnounce(82, DBM_ILLIDAN_WARN_DEMONPHASE_SOON, 3) +-- end + +-- self:StartStatusBarTimer(71.5, "Enrage2", "Interface\\Icons\\Ability_Warrior_EndlessRage") +-- self:ScheduleAnnounce(66.5, DBM_ILLIDAN_WARN_P4ENRAGE_SOON, 3) + +-- phase4 = true +-- elseif msg == "DemonForm" then +-- flameBursts = 0 +-- if self.Options.WarnDemonForm then +-- self:Announce(DBM_ILLIDAN_WARN_PHASE_DEMON, 4) +-- end +-- self:StartStatusBarTimer(74, "Normal Phase", "Interface\\Icons\\INV_Weapon_ShortBlade_07") +-- self:StartStatusBarTimer(34, "Shadow Demons", "Interface\\Icons\\Spell_Shadow_SoulLeech_3") +-- self:StartStatusBarTimer(20, "Next Flame Burst", "Interface\\Icons\\Spell_Fire_BlueRainOfFire") +-- if self.Options.WarnDemonForm then +-- self:ScheduleAnnounce(64, DBM_ILLIDAN_WARN_NORMALPHASE_SOON, 2) +-- end +-- if self.Options.WarnShadowDemons then +-- self:ScheduleAnnounce(29, DBM_ILLIDAN_WARN_SHADOWDEMSSOON, 2) +-- end +-- if self.Options.WarnFlameBursts then +-- self:ScheduleAnnounce(15, DBM_ILLIDAN_WARN_FLAMEBURST_SOON, 1) +-- end +-- self:ScheduleMethod(74, "SendSync", "NormalForm") +-- warnedDemons = nil +-- elseif msg == "NormalForm" then +-- if self.Options.WarnDemonForm then +-- self:Announce(DBM_ILLIDAN_WARN_PHASE_NORMAL, 4) +-- end +-- self:StartStatusBarTimer(60, "Demon Phase", "Interface\\Icons\\Spell_Shadow_Metamorphosis") +-- if self.Options.WarnDemonForm then +-- self:ScheduleAnnounce(50, DBM_ILLIDAN_WARN_DEMONPHASE_SOON, 3) +-- end +-- if phase4 then +-- self:StartStatusBarTimer(40, "Enrage2", "Interface\\Icons\\Ability_Warrior_EndlessRage") +-- self:ScheduleAnnounce(35, DBM_ILLIDAN_WARN_P4ENRAGE_SOON, 3) +-- end +-- elseif msg == "FlameDown" then +-- flamesDown = flamesDown + 1 +-- if flamesDown >= 2 then +-- self:SendSync("Phase3") +-- end +-- elseif msg == "Flameburst" then +-- flameBursts = flameBursts + 1 +-- if flameBursts < 3 then +-- self:StartStatusBarTimer(19.5, "Next Flame Burst", "Interface\\Icons\\Spell_Fire_BlueRainOfFire") +-- if self.Options.WarnFlameBursts then +-- self:ScheduleAnnounce(14.5, DBM_ILLIDAN_WARN_FLAMEBURST_SOON, 1) +-- end +-- end +-- if self.Options.WarnFlameBursts then +-- self:Announce(DBM_ILLIDAN_WARN_FLAMEBURST:format(flameBursts), 3) +-- end +-- elseif msg:sub(0, 10) == "ShadowDems" then +-- msg = msg:sub(11) +-- if msg == UnitName("player") then +-- self:AddSpecialWarning(DBM_ILLIDAN_SELFWARN_DEMONS) +-- end +-- table.insert(demonTargets, msg) +-- self:UnScheduleEvent("WarnSD") +-- if #demonTargets == 4 then +-- self:OnEvent("WarnSD") +-- else +-- self:ScheduleEvent(1, "WarnSD") +-- end +-- elseif msg == "Prison" then +-- self:Announce(DBM_ILLIDAN_WARN_PRISON) +-- self:StartStatusBarTimer(30, "Shadow Prison", "Interface\\Icons\\Spell_Shadow_SealOfKings") +-- elseif msg == "P4Enrage" then +-- self:Announce(DBM_ILLIDAN_WARN_P4ENRAGE_NOW, 4) +-- elseif msg == "Caged" then +-- self:Announce(DBM_ILLIDAN_WARN_CAGED, 1) +-- self:StartStatusBarTimer(15, "Caged", 40695) +-- end +-- end + diff --git a/DBM-BlackTemple/IllidariCouncil.lua b/DBM-BlackTemple/IllidariCouncil.lua new file mode 100644 index 0000000..2e303c6 --- /dev/null +++ b/DBM-BlackTemple/IllidariCouncil.lua @@ -0,0 +1,267 @@ +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:RegisterEvents( + "SPELL_CAST_START", + "SPELL_HEAL", + "SPELL_INTERRUPT", + "SPELL_AURA_APPLIED", + "SPELL_AURA_REMOVED" +) + +--Lady Malande +local warnPaintoPleasure = mod:NewTargetAnnounce(2144463, 3) +local timerNextPaintoPleasure = mod:NewNextTimer(30, 2144463) +local warnSadism = mod:NewSpellAnnounce(2144464, 3) +local timerNextSadism = mod:NewNextTimer(60, 2144464) + +--Veras Darkshadow +local warnSmokeBomb = mod:NewTargetAnnounce(2144560, 3) +local timerNextSmokeBomb = mod:NewNextTimer(60, 2144560) + +--Gathios the Shatterer +local timerNextDeathSentence = mod:NewNextTimer(60, 2144260) +local timerDeathSentence = mod:NewBuffActiveTimer(10, 2144260, nil, false) +local timerNextConsecrate = mod:NewNextTimer(15, 2144256, nil, false) + +--High Nethermancer Zerevor +local timerNextRuneofPower = mod:NewNextTimer(60, 2144368) +local warnNetherprotection = mod:NewSpellAnnounce(2144351, 3) +local timerNextNetherProtection = mod:NewNextTimer(30, 2144351) + + +function mod:OnCombatStart(delay) + timerNextPaintoPleasure:Start(25-delay) + timerNextSmokeBomb:Start(33-delay) + timerNextDeathSentence:Start(15-delay) + timerNextConsecrate:Start(10-delay) + timerNextRuneofPower:Start(45-delay) + timerNextSadism:Start(60-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2144560, 2144610) and DBM:AntiSpam(20, 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() + elseif args:IsSpellID(2144256) then + timerNextConsecrate:Start() + elseif args:IsSpellID(2144368, 2144418) and DBM:AntiSpam(20, 1) then + timerNextRuneofPower:Start() + elseif args:IsSpellID(2144351, 2144401) then + warnNetherprotection:Show() + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args:IsSpellID(2144351, 2144401) then + timerNextNetherProtection:Start() + end +end + +function mod:SPELL_CAST_START(args) + if args:IsSpellID(2144462, 2144463, 2144512, 2144513) then + warnPaintoPleasure:Show() + timerNextPaintoPleasure: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 + warnSadism:Show() + timerNextSadism:Start() + 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 + + diff --git a/DBM-BlackTemple/Naj'entus.lua b/DBM-BlackTemple/Naj'entus.lua new file mode 100644 index 0000000..f8dee04 --- /dev/null +++ b/DBM-BlackTemple/Naj'entus.lua @@ -0,0 +1,141 @@ +local mod = DBM:NewMod("Najentus", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22887) +mod:RegisterCombat("yell", L.DBM_NAJENTUS_YELL_PULL) + +mod:RegisterEvents( + "SPELL_AURA_APPLIED", + "SPELL_AURA_REMOVED", + "SPELL_PERIODIC_DAMAGE" +) + +local warningShield = mod:NewSpellAnnounce(2142521, 3) +local warningDischarge = mod:NewSpellAnnounce(2142504, 3) +local warningPuddle = mod:NewSpellAnnounce(2142594, 3) +local warnSpine = mod:NewTargetAnnounce(2142516, 2) + +local warnPhase2 = mod:NewPhaseAnnounce(2) + +local timerNextShield = mod:NewNextTimer(80, 2142521) +local timerNextDischarge = mod:NewNextTimer(20, 2142504) +local timerTargetSpine = mod:NewTargetTimer(30, 2142516) +local timerNextSpine = mod:NewNextTimer(30, 2142516) + +local timerNextAdds = mod:NewNextTimer(15, 2142574) + +local yellDischarge = mod:NewFadesYell(2142504) + +mod:AddBoolOption(L.SpineYellOpt) +mod:AddBoolOption(L.DischargeYellOpt) + + +function mod:OnCombatStart(delay) + self:ScheduleMethod(0-delay, "NewAdds") + timerNextSpine:Start(50-delay) + timerNextShield:Start(35-delay) +end + +function mod:OnCombatEnd() + DBM.RangeCheck:Hide() +end + +function mod:NewAdds() + self:UnscheduleMethod("NewAdds") + timerNextAdds:Start() + self:ScheduleMethod(15, "NewAdds") +end + +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) + end + elseif args:IsSpellID(2142516, 2142517, 2142518, 2142519) then + warnSpine:Show() + timerNextSpine:Start() + timerTargetSpine:Start(args.destName) + elseif args:IsSpellID(2142526) then + warnPhase2:Show() + 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 + if args:IsPlayer() then + warningPuddle:Show() + end + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args:IsSpellID(2142516, 2142517, 2142518, 2142519) then + timerTargetSpine:Stop() + end +end + +function mod:SPELL_PERIODIC_DAMAGE(args) + if self.Options.SpineYellOpt and args:IsPlayer() then + if args:IsSpellID(2142516, 2142517, 2142518, 2142519) then + SendChatMessage(L.SpineYell, "YELL") + end + end +end + +--Najentus:AddOption("RangeCheck", true, DBM_NAJENTUS_OPTION_RANGECHECK) +--Najentus:AddOption("Icon", false, DBM_NAJENTUS_OPTION_ICON) + +--Najentus:AddBarOption("Enrage") +--Najentus:AddBarOption("Next Tidal Shield") + +-- self:StartStatusBarTimer(480 - delay, "Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") +-- self:ScheduleSelf(180 - delay, "EnrageWarn", 300) +-- self:ScheduleSelf(360 - delay, "EnrageWarn", 120) +-- self:ScheduleSelf(420 - delay, "EnrageWarn", 60) +-- self:ScheduleSelf(450 - delay, "EnrageWarn", 30) +-- self:ScheduleSelf(470 - delay, "EnrageWarn", 10) +-- self:StartStatusBarTimer(60 - delay, "Next Tidal Shield", "Interface\\Icons\\Spell_Nature_CrystalBall") +-- self:ScheduleSelf(50 - delay, "ShieldWarn") + +-- function Najentus:OnEvent(event, arg1) +-- if event == "SPELL_AURA_APPLIED" then +-- if arg1.spellId == 39837 then +-- self:SendSync("Spine"..tostring(arg1.destName)) +-- elseif arg1.spellId == 39872 then +-- self:SendSync("Shield") +-- end +-- elseif event == "SPELL_AURA_REMOVED" then +-- if arg1.spellId == 39872 then +-- self:SendSync("FadeShield") +-- end +-- elseif event == "EnrageWarn" and type(arg1) == "number" then +-- if arg1 >= 60 then +-- self:Announce(string.format(DBM_NAJENTUS_WARN_ENRAGE, (arg1/60), DBM_MIN), 1) +-- else +-- self:Announce(string.format(DBM_NAJENTUS_WARN_ENRAGE, arg1, DBM_SEC), 3) +-- end +-- elseif event == "ShieldWarn" then +-- self:Announce(DBM_NAJENTUS_WARN_SHIELD_SOON, 1) +-- end +-- end + +-- function Najentus:OnSync(msg) +-- if msg:sub(0, 5) == "Spine" then +-- msg = msg:sub(6) +-- self:Announce(DBM_NAJENTUS_WARN_SPINE:format(msg), 2) +-- if self.Options.Icon then +-- self:SetIcon(msg, 15) +-- end +-- elseif msg == "Shield" then +-- self:Announce(DBM_NAJENTUS_WARN_SHIELD, 3) +-- self:ScheduleSelf(48, "ShieldWarn") +-- self:StartStatusBarTimer(58, "Next Tidal Shield", "Interface\\Icons\\Spell_Nature_CrystalBall") +-- end +-- end + diff --git a/DBM-BlackTemple/ShadeOfAkama.lua b/DBM-BlackTemple/ShadeOfAkama.lua new file mode 100644 index 0000000..2061c5c --- /dev/null +++ b/DBM-BlackTemple/ShadeOfAkama.lua @@ -0,0 +1,99 @@ +local mod = DBM:NewMod("Akama", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(23421) +mod:RegisterCombat("combat", 22841) +-- Akama:SetMinCombatTime(60) + +mod:RegisterEvents( + "UNIT_DIED", + "SPELL_AURA_APPLIED", + "SPELL_AURA_APPLIED_DOSE", + "SPELL_AURA_REMOVED", + "SPELL_HEAL" +) + +local timerNextAdds = mod:NewNextTimer(35, 2142603) +local warnSoulDomination = mod:NewSpellAnnounce(2142603, 2) +local timerSoulDomination = mod:NewCastTimer(300, 2142603) + +local warnDeadlyPoison = mod:NewTargetAnnounce(2142657, 2) +local warnPoisonedShiv = mod:NewTargetAnnounce(2142653, 2) + +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 + + +function mod:OnCombatStart(delay) + timerNextAdds:Start(5-delay) + self:ScheduleMethod(5-delay, "NewAdds") +end + +function mod:OnCombatEnd() + DBM.RangeCheck:Hide() +end + +function mod:NewAdds() + self:UnscheduleMethod("NewAdds") + timerNextAdds:Start() + self:ScheduleMethod(35, "NewAdds") +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2142603) then + warnSoulDomination:Show() + timerSoulDomination:Start() + elseif args:IsSpellID(2142657) and args.amount and args.amount >= 2 and args.amount % 2 == 0 then + warnDeadlyPoison:Show(args.destName) + elseif args:IsSpellID(2142653) and args.amount and args.amount >= 2 and args.amount % 2 == 0 then + warnPoisonedShiv:Show(args.destName) + elseif args:IsSpellID(2142686) and self:GetCIDFromGUID(args.destGUID) == 22841 then + warnVigilance:Show() + elseif args:IsSpellID(2142680) and args:GetDestCreatureID() == 22841 then --not sure if this check works + warnRiptide:Show() + end +end + +mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED -- Hack to include applied_dose as well without more code + +function mod:SPELL_AURA_REMOVED(args) + if args:IsSpellID(2142603) then + -- warnSoulDomination:Hide() + timerSoulDomination:Stop() + end +end + +function mod:SPELL_HEAL(args) + if args:IsSpellID(2142677) and DBM:AntiSpam(5) then + warnHealingStream:Show() + end +end + +-- local channelersDown = 0 +-- local sorcerersDown = 0 +-- channelersDown = 0 +-- sorcerersDown = 0 + + +-- function Akama:OnEvent(event, arg1) +-- if event == "UNIT_DIED" then +-- if arg1.destName == DBM_AKAMA_MOB_CHANNELER then +-- self:SendSync("Channeler") +-- elseif arg1.destName == DBM_AKAMA_MOB_SORCERER then +-- self:SendSync("Sorcerer") +-- end +-- end +-- end + +-- function Akama:OnSync(msg) +-- if msg == "Channeler" then +-- channelersDown = channelersDown + 1 +-- self:Announce(DBM_AKAMA_WARN_CHANNELER_DOWN:format(channelersDown), 2) +-- elseif msg == "Sorcerer" then +-- sorcerersDown = sorcerersDown + 1 +-- self:Announce(DBM_AKAMA_WARN_SORCERER_DOWN:format(sorcerersDown), 2) +-- end +-- end + diff --git a/DBM-BlackTemple/Shahraz.lua b/DBM-BlackTemple/Shahraz.lua new file mode 100644 index 0000000..230c5ab --- /dev/null +++ b/DBM-BlackTemple/Shahraz.lua @@ -0,0 +1,269 @@ +local mod = DBM:NewMod("Shahraz", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22947) +mod:RegisterCombat("yell", DBM_SHAHRAZ_YELL_PULL) + +mod:RegisterEvents( + "SPELL_AURA_APPLIED", + "SPELL_DAMAGE", + "UNIT_HEALTH" +) + +local warningFatalAttraction = mod:NewSpellAnnounce(2144012, 3) +-- local warningThoughts = mod:NewSpellAnnounce(2144033, 3) +local warningBossRunning = mod:NewSpellAnnounce(2144050, 3) +local warningBossRunning1 = mod:NewSoonAnnounce(2144050, 3) +local warningBossRunning2 = mod:NewSoonAnnounce(2144050, 3) + +local timerNextFatalAttraction = mod:NewNextTimer(30, 2144012) +local timerNextForcedThoughts = mod:NewNextTimer(40, 2144035) +-- local timerNextBeam = mod:NewNextTimer(30, 2144017) + +--Sinful +local warningSinfulBeam = mod:NewSpellAnnounce(2144017, 3) +local warningSinfulThoughts = mod:NewSpellAnnounce(2144033, 3) +local timerNextSinfulBeam = mod:NewNextTimer(50, 2144017) +local timerCastSinfulBeam = mod:NewCastTimer(3, 2144017) +local timerSinfulThoughts = mod:NewBuffActiveTimer(300, 2144033) + +--Sinister +local warningSinisterBeam = mod:NewSpellAnnounce(2144021, 3) +local warningSinisterThoughts = mod:NewSpellAnnounce(2144034, 3) +local timerNextSinisterBeam = mod:NewNextTimer(50, 2144021) +local timerSinisterThoughts = mod:NewBuffActiveTimer(300, 2144034) + +--Vile +local warningVileBeam = mod:NewSpellAnnounce(2144025, 3) +local warningVileThoughts = mod:NewSpellAnnounce(2144035, 3) +local timerNextVileBeam = mod:NewNextTimer(50, 2144025) +local timerVileThoughts = mod:NewBuffActiveTimer(300, 2144035) + +--Wicked +local warningWickedBeam = mod:NewSpellAnnounce(2144029, 3) +local warningWickedThoughts = mod:NewSpellAnnounce(2144036, 3) +local timerNextWickedBeam = mod:NewNextTimer(50, 2144029) +local timerWickedThoughts = mod:NewBuffActiveTimer(300, 2144036) + + + +local warningShahrazAvian = mod:NewAnnounce(L.ShahrazAvian, 2, 2144004) +local warningShahrazFila = mod:NewAnnounce(L.ShahrazFila, 2, 2144003) +local warningShahrazMater = mod:NewAnnounce(L.ShahrazMater, 2, 2144001) +local warningWiShahrazVirgo = mod:NewAnnounce(L.ShahrazVirgo, 2, 2144096) + + +--local +local isMother = false +local below20 = false +local below10 = false + +function mod:OnCombatStart(delay) + timerNextForcedThoughts:Start(15-delay) + timerNextFatalAttraction:Start(35-delay) + self:ScheduleMethod(15-delay, "NewThoughts") + below20 = false + below10 = false + isMother = true +end + +function mod:OnCombatEnd() + DBM.RangeCheck:Hide() + self:UnscheduleMethod("NewThoughts") +end + +function mod:NewThoughts() + self:UnscheduleMethod("NewThoughts") + timerNextForcedThoughts:Start() + self:ScheduleMethod(40, "NewThoughts") +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2144012) then + warningFatalAttraction:Show() + timerNextFatalAttraction:Start() + elseif args:IsSpellID(2144050, 2144051) then + warningBossRunning:Show() + timerSinfulThoughts:Stop() + timerSinisterThoughts:Stop() + timerVileThoughts:Stop() + timerWickedThoughts:Stop() + timerNextForcedThoughtsStop() + + timerNextFatalAttraction:Stop() + + timerNextSinfulBeamStop() + timerNextSinisterBeamStop() + timerNextVileBeamStop() + timerNextWickedBeamStop() + 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 + warningShahrazFila:Show() + elseif args:IsSpellID(2144004) and args.amount and args.amount >= 8 and args.amount % 2 == 0 and DBM:AntiSpam(5, 1) then + 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() + 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 + warningSinfulBeam:Show() + timerCastSinfulBeam:Start() + timerNextSinfulBeam:Start() + if args:IsPlayer() then + warningSinfulThoughts:Show() + timerSinfulThoughts:Start() + timerSinisterThoughts:Stop() + 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 + warningSinisterBeam:Show() + timerNextSinisterBeam:Start() + if args:IsPlayer() then + warningSinisterThoughts:Show() + timerSinfulThoughts:Stop() + timerSinisterThoughts:Start() + 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 + warningVileBeam:Show() + timerNextVileBeam:Start() + if args:IsPlayer() then + warningSinfulThoughts:Show() + timerSinfulThoughts:Stop() + warningVileThoughts: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 + warningWickedBeam:Show() + timerNextWickedBeam:Start() + if args:IsPlayer() then + warningWickedThoughts:Show() + timerSinfulThoughts:Stop() + timerSinisterThoughts:Stop() + timerVileThoughts:Stop() + timerWickedThoughts:Start() + end + end +end + +function mod:UNIT_HEALTH(unit) + if isMother and (not below20 and not below10) and (mod:GetUnitCreatureId(unit) == 22947) then + local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100; + if (hp <= 23) and (below20 == false) then + warningBossRunning1:Show() + below20 = true + timerNextFatalAttraction:Stop() + timerSinfulThoughts:Stop() + timerSinisterThoughts:Stop() + timerVileThoughts:Stop() + timerWickedThoughts:Stop() + elseif (hp <= 13) and (below10 == false) then + warningBossRunning2:Show() + below10 = true + end + end +end + +--Shahraz:AddOption("WarnBeam", false, DBM_SHAHRAZ_OPTION_BEAM) +--Shahraz:AddOption("WarnBeamSoon", false, DBM_SHAHRAZ_OPTION_BEAM_SOON) +--Shahraz:AddOption("WhisperFA", false, DBM_SEND_WHISPER) + +--Shahraz:AddBarOption("Enrage") +--Shahraz:AddBarOption("Next Beam", false) + +-- local fa = {} +-- local icon = 8 + + +-- self:StartStatusBarTimer(600 - delay, "Enrage", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") +-- self:ScheduleSelf(300 - delay, "EnrageWarn", 300) +-- self:ScheduleSelf(480 - delay, "EnrageWarn", 120) +-- self:ScheduleSelf(540 - delay, "EnrageWarn", 60) +-- self:ScheduleSelf(570 - delay, "EnrageWarn", 30) +-- self:ScheduleSelf(590 - delay, "EnrageWarn", 10) + +-- fa = {} +-- icon = 8 + +-- function Shahraz:OnEvent(event, arg1) +-- if event == "SPELL_AURA_APPLIED" then +-- if arg1.spellId == 41001 then +-- self:SendSync("FA"..tostring(arg1.destName)) +-- elseif arg1.spellId == 40860 then +-- self:SendSync("BeamVile") +-- end +-- elseif event == "SPELL_DAMAGE" then +-- if arg1.spellId == 40859 then +-- self:SendSync("BeamSinister") +-- elseif arg1.spellId == 40827 then +-- self:SendSync("BeamSinful") +-- elseif arg1.spellId == 40861 then +-- self:SendSync("BeamWicked") +-- end +-- elseif event == "EnrageWarn" and type(arg1) == "number" then +-- if arg1 >= 60 then +-- self:Announce(string.format(DBM_SHAHRAZ_WARN_ENRAGE, (arg1/60), DBM_MIN), 1) +-- else +-- self:Announce(string.format(DBM_SHAHRAZ_WARN_ENRAGE, arg1, DBM_SEC), 3) +-- end +-- elseif event == "WarnFA" then +-- local msg = "" +-- for i, v in ipairs(fa) do +-- msg = msg..">"..v.."<, " +-- end +-- msg = msg:sub(0, -3) +-- fa = {} +-- self:Announce(DBM_SHAHRAZ_WARN_FA:format(msg), 4) +-- icon = 8 +-- elseif event == "WarnBeam" then +-- if self.Options.WarnBeamSoon then +-- self:Announce(DBM_SHAHRAZ_WARN_BEAM_SOON, 1) +-- end +-- end +-- end + +-- function Shahraz:OnSync(msg) +-- if msg:sub(0, 2) == "FA" then +-- msg = msg:sub(3) +-- table.insert(fa, msg) +-- if self.Options.Announce and DBM.Rank >= 1 then +-- if self.Options.WhisperFA then +-- self:SendHiddenWhisper(DBM_SHAHRAZ_WHISPER_FA, msg) +-- end +-- self:SetIcon(msg, 7.5, icon) +-- icon = icon - 1 +-- end +-- if msg == UnitName("player") then +-- self:AddSpecialWarning(DBM_SHAHRAZ_SPECWARN_FA) +-- end +-- self:UnScheduleSelf("WarnFA") +-- if #fa == 3 then +-- self:OnEvent("WarnFA") +-- else +-- self:ScheduleSelf(1, "WarnFA") +-- end +-- elseif msg:sub(0, 4) == "Beam" then +-- if self.Options.WarnBeam then +-- msg = msg:sub(5) +-- if msg == "Vile" then +-- self:Announce(DBM_SHAHRAZ_WARN_BEAM_VILE, 2) +-- elseif msg == "Sinister" then +-- self:Announce(DBM_SHAHRAZ_WARN_BEAM_SINISTER, 2) +-- elseif msg == "Sinful" then +-- self:Announce(DBM_SHAHRAZ_WARN_BEAM_SINFUL, 2) +-- elseif msg == "Wicked" then +-- self:Announce(DBM_SHAHRAZ_WARN_BEAM_WICKED, 2) +-- end +-- end +-- self:ScheduleSelf(6, "WarnBeam") +-- self:StartStatusBarTimer(9, "Next Beam", "Interface\\Icons\\Spell_Shadow_ShadowBolt") +-- end +-- end + diff --git a/DBM-BlackTemple/Supremus.lua b/DBM-BlackTemple/Supremus.lua new file mode 100644 index 0000000..f9ebecd --- /dev/null +++ b/DBM-BlackTemple/Supremus.lua @@ -0,0 +1,150 @@ +local mod = DBM:NewMod("Supremus", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22898) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "CHAT_MSG_RAID_BOSS_EMOTE", + "SPELL_AURA_APPLIED", + "SPELL_AURA_APPLIED_DOSE", + "SPELL_CAST_START", + "SPELL_DAMAGE" +) + +local warningTitanic = mod:NewSpellAnnounce(2142758, 3) +local warningSupreme = mod:NewSpellAnnounce(2142764, 3) +local warnCracked = mod:NewAnnounce(L.SupremusCracked, 2, 2142751) + +local timerTitanic = mod:NewCastTimer(6, 2142758) +local timerSupreme = mod:NewCastTimer(2, 2142764) + +local timerEruption = mod:NewCastTimer(4, 2142774) + +local warnPhase2 = mod:NewPhaseAnnounce(2) + +function mod:OnCombatStart(delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2142772) then --Enrages at 30% hp need hp check + warnPhase2:Show() + elseif args:IsSpellID(2142751) then + warnCracked:Show(args.spellName, args.destName, args.amount or 1) + end +end + +function mod:SPELL_AURA_APPLIED_DOSE(args) + if args:IsSpellID(2142751) then + warnCracked:Show(args.spellName, args.destName, args.amount or 1) + end +end + +function mod:SPELL_CAST_START(args) + if args:IsSpellID(2142758) then + warningTitanic:Show() + timerTitanic:Start() + elseif args:IsSpellID(2142758) then + warningSupreme:Show() + timerSupreme:Start() + end +end + +function mod:SPELL_DAMAGE(args) + if args:IsSpellID(2142774) and DBM:AntiSpam(3) then + timerEruption:Start() + end +end + +-- Supremus.MinRevision = 828 + +-- local lastIcon = nil +-- local phase2 = nil + + + +--Supremus:AddOption("WarnKiteTarget", true, DBM_SUPREMUS_OPTION_TARGETWARN) +--Supremus:AddOption("IconKiteTarget", true, DBM_SUPREMUS_OPTION_TARGETICON) +--Supremus:AddOption("WhisperKiteTarget", false, DBM_SUPREMUS_OPTION_TARGETWHISPER) + +--Supremus:AddBarOption("Enrage") +--Supremus:AddBarOption("Kite Phase") +--Supremus:AddBarOption("Tank & Spank Phase") + + + + +-- 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) + +-- self:StartStatusBarTimer(60 - delay, "Kite Phase", "Interface\\Icons\\Spell_Fire_BurningSpeed") +-- self:ScheduleSelf(50 - delay, "PhaseWarn", 2) +-- lastIcon = nil +-- phase2 = nil + + + +-- if lastIcon then +-- DBM.ClearIconByName(lastIcon) +-- lastIcon = nil +-- end + +-- function Supremus:OnEvent(event, arg1) +-- if event == "CHAT_MSG_RAID_BOSS_EMOTE" and arg1 then +-- if arg1:find(DBM_SUPREMUS_EMOTE_PHASE1) then +-- self:StartStatusBarTimer(60, "Tank & Spank Phase", "Interface\\Icons\\Ability_Defend") + +-- self:ScheduleSelf(50, "PhaseWarn", 2) +-- self:Announce(DBM_SUPREMUS_WARN_PHASE_1, 3) +-- if lastIcon then +-- DBM.ClearIconByName(lastIcon) +-- lastIcon = nil +-- end +-- phase2 = nil +-- elseif arg1 == DBM_SUPREMUS_EMOTE_PHASE2 then +-- self:StartStatusBarTimer(60, "Kite Phase", "Interface\\Icons\\Spell_Fire_BurningSpeed") +-- self:ScheduleSelf(50, "PhaseWarn", 1) +-- self:Announce(DBM_SUPREMUS_WARN_PHASE_2, 3) +-- self:ScheduleMethod(4, "NewTarget") -- he waits a few seconds before changing the target since patch 2.2 +-- phase2 = true +-- elseif phase2 and arg1:find(DBM_SUPREMUS_EMOTE_NEWTARGET) then -- he sometimes uses this emote just after switching in phase 2 since 2.2 +-- self:ScheduleMethod(0.5, "NewTarget") +-- end +-- elseif event == "PhaseWarn" and arg1 then +-- self:Announce(getglobal("DBM_SUPREMUS_WARN_PHASE_"..tostring(arg1).."_SOON"), 1) +-- elseif event == "SPELL_AURA_APPLIED" then +-- if arg1.spellId == 42052 and arg1.destName == UnitName("player") then +-- self:AddSpecialWarning(DBM_SUPREMUS_SPECWARN_VOLCANO) +-- end +-- end +-- end + +-- function Supremus:NewTarget() +-- local target +-- for i = 1, GetNumRaidMembers() do +-- if UnitName("raid"..i.."target") == DBM_SUPREMUS_NAME then +-- target = UnitName("raid"..i.."targettarget") +-- break +-- end +-- end +-- if target then +-- if self.Options.WarnKiteTarget then +-- self:Announce(DBM_SUPREMUS_WARN_KITE_TARGET:format(target), 2) +-- end +-- if self.Options.IconKiteTarget and DBM.Rank >= 1 and self.Options.Announce then +-- lastIcon = target +-- self:SetIcon(target) +-- end +-- if self.Options.WhisperKiteTarget and DBM.Rank >= 1 and self.Options.Announce then +-- self:SendHiddenWhisper(DBM_SUPREMUS_WHISPER_RUN_AWAY, target) +-- end +-- end +-- end + + diff --git a/DBM-BlackTemple/TeronGorefiend.lua b/DBM-BlackTemple/TeronGorefiend.lua new file mode 100644 index 0000000..54b9092 --- /dev/null +++ b/DBM-BlackTemple/TeronGorefiend.lua @@ -0,0 +1,83 @@ +local mod = DBM:NewMod("TeronGorefiend", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22871) +mod:RegisterCombat("yell", DBM_GOREFIEND_YELL_PULL) + +mod:RegisterEvents( + "SPELL_AURA_APPLIED" +) + +local warningWitherAndRot = mod:NewSpellAnnounce(2143286, 3) +local warningGraspingDeath = mod:NewSpellAnnounce(2143282, 3) +local warnShadowOfDeath = mod:NewSpellAnnounce(2143264, 2) +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 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 + +function mod:OnCombatStart(delay) + timerNextWitherAndRot:Start(15-delay) + timerNextGraspingDeath:Start(30-delay) + timerNextShadowofDeath:Start(10-delay) + timerSoulReaper:Start(20-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and DBM:AntiSpam(10) then + warningWitherAndRot:Show() + timerNextWitherAndRot:Start() + elseif args:IsSpellID(2143282, 2143283, 2143284, 2143285) and DBM:AntiSpam(10) then + warningGraspingDeath:Show() + timerNextGraspingDeath:Start() + elseif args:IsSpellID(2143264) then + warnShadowOfDeath:Show() + timerNextShadowofDeath:Start() + elseif args:IsSpellID(2143271, 2143272, 2143273, 2143274) then + warnSoulReaper:Show() + timerSoulReaper:Start() + end +end + + + +--Gorefiend:AddOption("WarnIncinerate", false, DBM_GOREFIEND_OPTION_INCINERATE) + +--Gorefiend:AddBarOption("Vengeful Spirit: (.*)") +--Gorefiend:AddBarOption("Shadow of Death: (.*)") + +-- function Gorefiend:OnEvent(event, arg1) +-- if event == "SPELL_AURA_APPLIED" then +-- if arg1.spellId == 40251 then +-- if arg1.destName == UnitName("player") then +-- self:AddSpecialWarning(DBM_GOREFIEND_SPECWARN_SOD) +-- end +-- self:SendSync("SoD"..tostring(arg1.destName)) +-- elseif arg1.spellId == 40239 then +-- self:SendSync("Inc"..tostring(arg1.destName)) +-- end +-- elseif event == "Ghost" and arg1 then +-- self:StartStatusBarTimer(60, "Vengeful Spirit: "..tostring(arg1), "Interface\\Icons\\Spell_Shadow_DemonicTactics") +-- end +-- end + +-- function Gorefiend:OnSync(msg) +-- if msg:sub(0, 3) == "SoD" then +-- msg = msg:sub(4) +-- self:Announce(DBM_GOREFIEND_WARN_SOD:format(msg), 3) +-- self:StartStatusBarTimer(55, "Shadow of Death: "..msg, "Interface\\Icons\\Spell_Arcane_PrismaticCloak") +-- self:ScheduleSelf(55, "Ghost", msg) +-- elseif msg:sub(0, 3) == "Inc" then +-- msg = msg:sub(4) +-- if self.Options.WarnIncinerate then +-- self:Announce(DBM_GOREFIEND_WARN_INCINERATE:format(msg), 2) +-- end +-- end +-- end + diff --git a/DBM-BlackTemple/Trash.lua b/DBM-BlackTemple/Trash.lua new file mode 100644 index 0000000..ad86079 --- /dev/null +++ b/DBM-BlackTemple/Trash.lua @@ -0,0 +1,21 @@ +local mod = DBM:NewMod("Trash", "DBM-BlackTemple") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 5019 $"):sub(12, -3)) +mod:SetCreatureID(22879) +mod:RegisterCombat("combat", 22879) + +mod:RegisterEvents( + "SPELL_AURA_APPLIED" +) + +local warningIgnorePain = mod:NewSpellAnnounce(2142343, 3) +local timerIgnorePain = mod:NewBuffActiveTimer(8, 2142343) + + +function mod:SPELL_AURA_APPLIED(args) + if args:IsSpellID(2142343) then + warningIgnorePain:Show() + timerIgnorePain:Start() + end +end \ No newline at end of file diff --git a/DBM-BlackTemple/localization.en.lua b/DBM-BlackTemple/localization.en.lua new file mode 100644 index 0000000..e9b6114 --- /dev/null +++ b/DBM-BlackTemple/localization.en.lua @@ -0,0 +1,401 @@ +local L + +--High Warlord Naj'entus +L = DBM:GetModLocalization("Najentus") + +L:SetGeneralLocalization{ + name = "High Warlord Naj'entus" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ + SpineYellOpt = "Yell when you are affected by $spell:2142516", + DischargeYellOpt = "Yell when you are affected by $spell:2142504" +} + +L:SetMiscLocalization{ + SpineYell = "Spine on me!", + DBM_NAJENTUS_YELL_PULL = "You will die in the name of Lady Vashj!"; +} + + + +-- DBM_NAJENTUS_NAME = "High Warlord Naj'entus"; +-- DBM_NAJENTUS_DESCRIPTION = "Announce Impaling Spine and Tidal Shield."; + +-- DBM_NAJENTUS_OPTION_ICON = "Set icon on Impaling Spine target"; +-- DBM_NAJENTUS_OPTION_RANGECHECK = "Show range check frame"; +-- DBM_NAJENTUS_OPTION_FRAME = "Show players with less than 8500 health"; + + + +-- DBM_NAJENTUS_WARN_SPINE = "*** Impaling Spine on >%s< ***"; +-- DBM_NAJENTUS_WARN_ENRAGE = "*** Enrage in %s %s ***"; +-- DBM_NAJENTUS_WARN_SHIELD = "*** Tidal Shield ***"; +-- DBM_NAJENTUS_WARN_SHIELD_SOON = "*** Tidal Shield soon ***"; + +-- DBM_NAJENTUS_FRAME_TITLE = "Naj'entus" +-- DBM_NAJENTUS_FRAME_TEXT = "Players with less than 8500 health:" +-- DBM_NAJENTUS_SPELL_PWS = "Power Word: Shield" +-- DBM_NAJENTUS_SPELL_FW = "Frost Ward" +-- DBM_NAJENTUS_SPELL_FB = "Fel Blossom" + + +-- Supremus +L = DBM:GetModLocalization("Supremus") + +L:SetGeneralLocalization{ + name = "Supremus" +} + +L:SetWarningLocalization{ + SupremusCracked = "%s on >%s< (%d)" --(args.spellName, args.destName, args.amount or 1) +} + +L:SetOptionLocalization{ + SupremusCracked = "Show $spell:2142751 targets and stack number warning" --(args.spellName, args.destName, args.amount or 1) +} + +L:SetMiscLocalization{ +} + +-- DBM_SUPREMUS_NAME = "Supremus"; +-- DBM_SUPREMUS_DESCRIPTION = "Announces phases and targets."; +-- DBM_SUPREMUS_OPTION_TARGETWARN = "Announces Supremus' target in phase 2"; +-- DBM_SUPREMUS_OPTION_TARGETICON = "Set icon on Supremus' target"; +-- DBM_SUPREMUS_OPTION_TARGETWHISPER = "Send whisper to Supremus' target"; + +-- DBM_SUPREMUS_EMOTE_PHASE1 = "punches the ground in anger!"; +-- DBM_SUPREMUS_EMOTE_PHASE2 = "The ground begins to crack open!"; +-- DBM_SUPREMUS_EMOTE_NEWTARGET = "acquires a new target"; + +-- DBM_SUPREMUS_WARN_KITE_TARGET = "Target: >%s<"; +-- DBM_SUPREMUS_WARN_PHASE_1_SOON = "*** Tank & Spank phase in 10 sec ***"; +-- DBM_SUPREMUS_WARN_PHASE_2_SOON = "*** Kite phase in 10 sec ***"; +-- DBM_SUPREMUS_WARN_PHASE_1 = "*** Tank & Spank phase ****"; +-- DBM_SUPREMUS_WARN_PHASE_2 = "*** Kite phase ***"; +-- DBM_SUPREMUS_SPECWARN_FIRE = "Molten Fire"; +-- DBM_SUPREMUS_SPECWARN_VOLCANO = "Volcano"; +-- DBM_SUPREMUS_WHISPER_RUN_AWAY = "Run away!"; + +-- Shade of Akama +L = DBM:GetModLocalization("Akama") + +L:SetGeneralLocalization{ + name = "Shade of Akama" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ + } + +L:SetMiscLocalization{ +} + + +-- DBM_AKAMA_NAME = "Shade of Akama"; +-- DBM_AKAMA_DESCRIPTION = nil; + +-- DBM_AKAMA_MOB_AKAMA = "Akama"; +-- DBM_AKAMA_MOB_DEFENDER = "Ashtongue Defender"; +-- DBM_AKAMA_MOB_CHANNELER = "Ashtongue Channeler"; +-- DBM_AKAMA_MOB_SORCERER = "Ashtongue Sorcerer"; +-- DBM_AKAMA_MOB_DIES = "%s dies."; + +-- DBM_AKAMA_WARN_CHANNELER_DOWN = "**** %s/6 channelers down ****"; +-- DBM_AKAMA_WARN_SORCERER_DOWN = "**** %s sorcerers down ****"; + +-- Teron Gorefiend +L = DBM:GetModLocalization("TeronGorefiend") + +L:SetGeneralLocalization{ + name = "Teron Gorefiend" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ + } + +L:SetMiscLocalization{ +} + +-- DBM_GOREFIEND_NAME = "Teron Gorefiend"; +-- DBM_GOREFIEND_DESCRIPTION = "Announces Shadow of Death and Incinerate."; + +-- DBM_GOREFIEND_OPTION_INCINERATE = "Announce incinerate"; + +-- DBM_GOREFIEND_YELL_PULL = "Vengeance is mine!"; + +-- DBM_GOREFIEND_WARN_SOD = "*** Shadow of Death: >%s< ***"; +-- DBM_GOREFIEND_WARN_INCINERATE = "*** Incinerate: >%s< ***"; + +-- DBM_GOREFIEND_SPECWARN_SOD = "Shadow of Death"; + +-- Bloodboil +L = DBM:GetModLocalization("Bloodboil") + +L:SetGeneralLocalization{ + name = "Gurtogg Bloodboil" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ + } + +L:SetMiscLocalization{ +} + +-- DBM_BLOODBOIL_NAME = "Gurtogg Bloodboil"; +-- DBM_BLOODBOIL_DESCRIPTION = "Announces Bloodboil and Fel Rage."; +-- DBM_BLOODBOIL_OPTION_SMASH = "Announce Arcing Smash"; + +-- DBM_BLOODBOIL_YELL_PULL = "Horde will... crush you."; + +-- DBM_BLOODBOIL_WARN_BLOODBOIL = "*** Bloodboil #%s ***"; +-- DBM_BLOODBOIL_WARN_ENRAGE = "*** Enrage in %s %s ***"; +-- DBM_BLOODBOIL_WARN_FELRAGE_SOON = "*** Fel Rage soon ***"; +-- DBM_BLOODBOIL_WARN_NORMAL_SOON = "*** Normal Phase in 5 sec ***"; +-- DBM_BLOODBOIL_WARN_FELRAGE = "*** Fel Rage on >%s< ***"; +-- DBM_BLOODBOIL_WARN_NORMALPHASE = "*** Normal Phase ***"; +-- DBM_BLOODBOIL_WARN_SMASH = "*** Arcing Smash ***"; +-- DBM_BLOODBOIL_WARN_SMASH_SOON = "*** Arcing Smash soon ***"; + +-- Essence (Reliquary) of Souls +L = DBM:GetModLocalization("Souls") + +L:SetGeneralLocalization{ + name = "Essence of Souls" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ + } + +L:SetMiscLocalization{ +} + +-- DBM_SOULS_NAME = "Essence of Souls" +-- DBM_SOULS_DESCRIPTION = "Announces Enrage, Fixate, Souldrain, Rune Shield, Deaden and Spite." +-- DBM_SOULS_OPTION_DRAIN = "Announce Souldrain" +-- DBM_SOULS_OPTION_DRAIN_CAST = "Announce Souldrain cast (useful for Mass Dispel)" +-- DBM_SOULS_OPTION_FIXATE = "Announce Fixate" +-- DBM_SOULS_OPTION_SPITE = "Announce Spite" +-- DBM_SOULS_OPTION_SCREAM = "Announce Soul Scream" +-- DBM_SOULS_OPTION_SPECWARN_SPITE = "Show special warning when you are afflicted by Spite" +-- DBM_SOULS_OPTION_WHISPER_SPITE = "Send whisper to Spite targets" + +-- DBM_SOULS_BOSS_SUFFERING = "Essence of Suffering" +-- DBM_SOULS_BOSS_DESIRE = "Essence of Desire" +-- DBM_SOULS_BOSS_KILL_NAME = "Essence of Anger" +-- DBM_SOULS_YELL_PULL = "Pain and suffering are all that await you!" -- Essence of Suffering +-- DBM_SOULS_EMOTE_ENRAGE = "%s becomes enraged!" +-- DBM_SOULS_YELL_DESIRE = "You can have anything you desire... for a price." +-- DBM_SOULS_YELL_DESIRE_DEMONIC = "Shi shi rikk rukadare shi tichar kar x gular" +-- DBM_SOULS_DEBUFF_SPITE = "([^%s]+) (%w+) afflicted by Spite%." +-- DBM_SOULS_DEBUFF_SOULDRAIN = "([^%s]+) (%w+) afflicted by Soul Drain%." +-- DBM_SOULS_DEBUFF_FIXATE = "([^%s]+) (%w+) afflicted by Fixate%." +-- DBM_SOULS_YELL_ANGER_INC = "Beware: I live!" + +-- DBM_SOULS_WARN_ENRAGE_SOON = "*** Enrage soon ***" +-- DBM_SOULS_WARN_ENRAGE = "*** Enrage ***" +-- DBM_SOULS_WARN_ENRAGE_OVER = "*** Enrage over ***" +-- DBM_SOULS_WARN_RUNESHIELD = "*** Rune Shield ***" +-- DBM_SOULS_WARN_RUNESHIELD_SOON = "*** Rune Shield in 3 sec ***" +-- DBM_SOULS_WARN_DEADEN = "*** Deaden ****" +-- DBM_SOULS_WARN_DEADEN_SOON = "*** Deaden in 5 sec ***" +-- DBM_SOULS_WARN_DESIRE_INC = "*** Essence of Desire - Zero mana in ~3 minutes ***" +-- DBM_SOULS_WARN_MANADRAIN = "*** Zero mana in 20 sec ***" +-- DBM_SOULS_WARN_SPITE = "*** Spite on %s ***" +-- DBM_SOULS_WARN_SOULDRAIN = "*** Souldrain on %s ***" +-- DBM_SOULS_WARN_SOULDRAIN_CAST = "*** Souldrain is casting ***" +-- DBM_SOULS_WARN_FIXATE = "*** Fixate: >%s< ***" +-- DBM_SOULS_SPECWARN_FIXATE = "Fixate!" +-- DBM_SOULS_WARN_SCREAM = "*** Soul Scream ***" +-- DBM_SOULS_SPECWARN_SPITE = "Spite!" +-- DBM_SOULS_WARN_ANGER_INC = "*** Essence of Anger ***"; +-- DBM_SOULS_WHISPER_SPITE = "Spite on you!" + +-- Mother Shahraz +L = DBM:GetModLocalization("Shahraz") + +L:SetGeneralLocalization{ + name = "Mother Shahraz" +} + +L:SetWarningLocalization{ + AttSunderAvian = "%s on >%s< (%d)", --(args.spellName, args.destName, args.amount or 1) + AttSunderFila = "%s on >%s< (%d)", --(args.spellName, args.destName, args.amount or 1) + AttSunderMater = "%s on >%s< (%d)", --(args.spellName, args.destName, args.amount or 1) + AttSunderVirgo = "%s on >%s< (%d)" --(args.spellName, args.destName, args.amount or 1) +} + +L:SetOptionLocalization{ + ShahrazAvian = "Show $spell:2144004 targets and stack number warning", --(args.spellName, args.destName, args.amount or 1) + ShahrazFila = "Show $spell:2144003 targets and stack number warning", --(args.spellName, args.destName, args.amount or 1) + ShahrazMater = "Show $spell:2144001 targets and stack number warning", --(args.spellName, args.destName, args.amount or 1) + ShahrazVirgo = "Show $spell:2144096 targets and stack number warning" --(args.spellName, args.destName, args.amount or 1) +} + +L:SetMiscLocalization{ +} + + +-- DBM_SHAHRAZ_NAME = "Mother Shahraz" +-- DBM_SHAHRAZ_DESCRIPTION = "Announces Fatal Attraction, sets an icons and sends whispers. Announces and shows a timer for Beams." +-- DBM_SHAHRAZ_OPTION_BEAM = "Announce Beams" +-- DBM_SHAHRAZ_OPTION_BEAM_SOON = "Show \"Beam soon\" warning" + +-- DBM_SHAHRAZ_YELL_PULL = "So... business or pleasure?" + +-- DBM_SHAHRAZ_WARN_ENRAGE = "*** Enrage in %s %s ***" +-- DBM_SHAHRAZ_WARN_FA = "*** Fatal Attraction on %s ***" +-- DBM_SHAHRAZ_SPECWARN_FA = "Fatal Attraction" +-- DBM_SHAHRAZ_WHISPER_FA = "Fatal Attraction on you!" +-- DBM_SHAHRAZ_WARN_BEAM_VILE = "*** Vile Beam ***" +-- DBM_SHAHRAZ_WARN_BEAM_SINISTER = "*** Sinister Beam ***" +-- DBM_SHAHRAZ_WARN_BEAM_SINFUL = "*** Sinful Beam ***" +-- DBM_SHAHRAZ_WARN_BEAM_WICKED = "*** Wicked Beam ***" +-- DBM_SHAHRAZ_WARN_BEAM_SOON = "*** Beam in 3 sec ***" + +-- Illidari Council +L = DBM:GetModLocalization("Council") + +L:SetGeneralLocalization{ + name = "Illidari Council" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ + } + +L:SetMiscLocalization{ +} + +-- DBM_COUNCIL_NAME = "Illidari Council" +-- DBM_COUNCIL_DESCRIPTION = "Announces Circle of Healing, Deadly Poison, Divine Wrath, Vanish and shields." +-- DBM_COUNCIL_OPTION_COH = "Announce Circle of Healing" +-- DBM_COUNCIL_OPTION_DP = "Announce Deadly Poison" +-- DBM_COUNCIL_OPTION_DW = "Announce Divine Wrath" +-- DBM_COUNCIL_OPTION_VANISH = "Announce Vanish" +-- DBM_COUNCIL_OPTION_VANISHFADED = "Show warning when Vanish fades" +-- DBM_COUNCIL_OPTION_VANISHFADESOON = "Show warning 5 seconds before Vanish fades" +-- DBM_COUNCIL_OPTION_SN = "Announce Reflective Shield" +-- DBM_COUNCIL_OPTION_SS = "Announce Spell Shield" +-- DBM_COUNCIL_OPTION_SM = "Announce Melee Shield" +-- DBM_COUNCIL_OPTION_DEVAURA = "Announce Devotion Aura" +-- DBM_COUNCIL_OPTION_RESAURA = "Announce Resistance Aura" + +-- DBM_COUNCIL_MOB_GATHIOS = "Gathios the Shatterer" +-- DBM_COUNCIL_MOB_MALANDE = "Lady Malande" +-- DBM_COUNCIL_MOB_ZEREVOR = "High Nethermancer Zerevor" +-- DBM_COUNCIL_MOB_VERAS = "Veras Darkshadow" + +-- DBM_COUNCIL_MOB_GATHIOS_EN = "Gathios the Shatterer" +-- DBM_COUNCIL_MOB_MALANDE_EN = "Lady Malande" +-- DBM_COUNCIL_MOB_ZEREVOR_EN = "High Nethermancer Zerevor" +-- DBM_COUNCIL_MOB_VERAS_EN = "Veras Darkshadow" + +-- 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_WARN_CAST_COH = "Circle of Healing" +-- DBM_COUNCIL_WARN_POISON = "Deadly Poison on >%s<" +-- DBM_COUNCIL_WARN_SHIELD_NORMAL = "Reflective Shield" +-- DBM_COUNCIL_WARN_SHIELD_SPELL = "Spell Shield on %s" +-- DBM_COUNCIL_WARN_SHIELD_MELEE = "Melee Shield on %s" +-- DBM_COUNCIL_WARN_VANISH = "Vanish" +-- DBM_COUNCIL_WARN_VANISH_FADED = "Vanished faded" +-- DBM_COUNCIL_WARN_WRATH = "Divine Wrath on >%s<" +-- DBM_COUNCIL_WARN_AURA_DEV = "Devotion Aura" +-- DBM_COUNCIL_WARN_AURA_RES = "Resistance Aura" +-- DBM_COUNCIL_WARN_VANISHFADE_SOON = "Vanish fades in 5 sec" + +-- Illidan Stormrage +L = DBM:GetModLocalization("Illidan") + +L:SetGeneralLocalization{ + name = "Illidan Stormrage" +} + +L:SetWarningLocalization{ +} + +L:SetOptionLocalization{ +} + +L:SetMiscLocalization{ + DBM_ILLIDAN_YELL_PULL = "You are not prepared!", + UnharnessedBlade = "Blade on me!", +} + +-- DBM_ILLIDAN_NAME = "Illidan Stormrage" +-- DBM_ILLIDAN_DESCRIPTION = "Announces Phases, Shear, Shadowfiends, Barrage, Eye Blast, Agonizing Flames, Shadow Demons, Flame Burst and Enrage." +-- DBM_ILLIDAN_OPTION_RANGECHECK = "Show range check frame in phase 3" +-- DBM_ILLIDAN_OPTION_PHASES = "Announce phases" +-- DBM_ILLIDAN_OPTION_SHEARCAST = "Announce Shear cast" +-- DBM_ILLIDAN_OPTION_SHEAR = "Announce Shear" +-- DBM_ILLIDAN_OPTION_SHADOWFIEND = "Announce Shadowfiends" +-- DBM_ILLIDAN_OPTION_ICONFIEND = "Set icons on Shadowfiend targets" +-- DBM_ILLIDAN_OPTION_BARRAGE = "Announce Dark Barrage" +-- DBM_ILLIDAN_OPTION_BARRAGE_SOON = "Show \"Dark Barrage soon\" warning" +-- DBM_ILLIDAN_OPTION_EYEBEAM = "Announce Eye Blast" +-- DBM_ILLIDAN_OPTION_FLAMES = "Announce Agonizing Flames" +-- DBM_ILLIDAN_OPTION_DEMONFORM = "Announce demon/normal form" +-- DBM_ILLIDAN_OPTION_FLAMEBURST = "Announce Flame Burst" +-- DBM_ILLIDAN_OPTION_SHADOWDEMONS = "Announce Shadow Demons" +-- DBM_ILLIDAN_OPTION_EYEBEAMSOON = "Show \"Eye Blast soon\" warning" + + +-- DBM_ILLIDAN_YELL_EYEBEAM = "Stare into the eyes of the Betrayer!" +-- DBM_ILLIDAN_YELL_DEMONFORM = "Behold the power... of the demon within!" +-- DBM_ILLIDAN_YELL_PHASE4 = "Is this it, mortals? Is this all the fury you can muster?" +-- DBM_ILLIDAN_MOB_FLAME = "Flame of Azzinoth" +-- DBM_ILLIDAN_SPELL_SHADOWDEMONS = "Summon Shadow Demons" +-- DBM_ILLIDAN_SPELL_SHEAR = "Shear" +-- DBM_ILLIDAN_YELL_START = "Akama. Your duplicity is hardly surprising. I should have slaughtered you and your malformed brethren long ago." + +-- DBM_ILLIDAN_WARN_SHEAR = "Shear on >%s<" +-- DBM_ILLIDAN_WARN_SHADOWFIEND = "Shadowfiend on >%s<" +-- DBM_ILLIDAN_WARN_BARRAGE = "Dark Barrage on >%s<" +-- DBM_ILLIDAN_WARN_BARRAGE_SOON = "Dark Barrage soon" +-- DBM_ILLIDAN_WARN_EYEBEAM = "Eye Blast" +-- DBM_ILLIDAN_WARN_FLAMES = "Agonizing Flames on %s" +-- DBM_ILLIDAN_WARN_PHASE2 = "Phase 2" +-- DBM_ILLIDAN_WARN_PHASE3 = "Phase 3" +-- DBM_ILLIDAN_WARN_PHASE4 = "Phase 4" +-- DBM_ILLIDAN_WARN_PHASE_DEMON = "Demon Phase" +-- DBM_ILLIDAN_WARN_FLAMEBURST = "Flame Burst #%s" +-- DBM_ILLIDAN_WARN_FLAMEBURST_SOON = "Flame Burst soon" +-- DBM_ILLIDAN_WARN_SHADOWDEMSSOON = "Shadow Demons soon" +-- DBM_ILLIDAN_WARN_SHADOWDEMS = "Shadow Demons" +-- DBM_ILLIDAN_WARN_NORMALPHASE_SOON = "Normal Phase in 10 sec" +-- DBM_ILLIDAN_WARN_CASTSHEAR = "Casting Shear" +-- DBM_ILLIDAN_WARN_EYEBEAM_SOON = "Eye Blast soon" +-- DBM_ILLIDAN_WARN_PHASE_NORMAL = "Normal Phase" +-- DBM_ILLIDAN_WARN_DEMONPHASE_SOON = "Demon Phase in 10 sec" +-- DBM_ILLIDAN_WARN_SHADOWDEMSON = "Shadow Demons on %s" +-- DBM_ILLIDAN_STATUSMSG_PHASE2 = "Phase 2" +-- DBM_ILLIDAN_WARN_PRISON = "Shadow Prison" +-- DBM_ILLIDAN_WARN_P4ENRAGE_SOON = "Enrage in 5 sec" +-- DBM_ILLIDAN_WARN_P4ENRAGE_NOW = "Enrage" +-- DBM_ILLIDAN_WARN_CAGED = "Caged" + +-- DBM_ILLIDAN_SELFWARN_SHADOWFIEND = "Parasitic Shadowfiend" +-- DBM_ILLIDAN_SELFWARN_SHADOW = "Agonizing Flames" +-- DBM_ILLIDAN_SELFWARN_DEMONS = "Shadow Demon" + +-- DBM_SBT["Enrage2"] = "Enrage" -- you cannot have two timers with the same id, so the 2nd enrage bar needs a "localization" diff --git a/DBM-Core/Changelog.txt b/DBM-Core/Changelog.txt index 83da907..9011a60 100644 --- a/DBM-Core/Changelog.txt +++ b/DBM-Core/Changelog.txt @@ -231,4 +231,22 @@ v5.17 07/05/2023 v5.17 15/05/2023 - Rewrote most of the Naxx fights, updating Spell IDs - Added UNIT_DIED triggers to all -- Added AntiSpam \ No newline at end of file +- Added AntiSpam +---------------------------------------------------------------------------------------------------- +v5.18 15/05/2023 +- Fixed druid spells on Malacrass +- Fixed warlock spell Ids on Warlock Malacrass being swapped +- Removed warning to look away on Malacrass (its a LOS mechanic) +- Added Deathknight spells to Malacrass +- Added some Ascended mechanics on Zuljin +- Fixed new spellIDs on Onyxia +- Fixed Blast Nova timers on Onyxia +- Added yell for Fireball on Onyxia +---------------------------------------------------------------------------------------------------- +v5.19 17/02/2024 +- Added all bosses from Black Temple +- Fixed repeating timers on Chromius for FinalCountdown due to server delay +- 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 diff --git a/DBM-Core/DBM-Core.lua b/DBM-Core/DBM-Core.lua index 656f244..6841439 100644 --- a/DBM-Core/DBM-Core.lua +++ b/DBM-Core/DBM-Core.lua @@ -42,10 +42,10 @@ -- Globals/Default Options -- ------------------------------- DBM = { - Revision = ("$Revision: 5016 $"):sub(12, -3), - Version = "5.17", - DisplayVersion = "5.17", -- the string that is shown as version - ReleaseRevision = 5016 -- the revision of the latest stable version that is available (for /dbm ver2) + Revision = ("$Revision: 5019 $"):sub(12, -3), + Version = "5.19", + DisplayVersion = "5.19", -- the string that is shown as version + ReleaseRevision = 5019 -- the revision of the latest stable version that is available (for /dbm ver2) } DBM_SavedOptions = {} diff --git a/DBM-Hyjal/Anetheron.lua b/DBM-Hyjal/Anetheron.lua index 5d777c5..a0ef8b6 100644 --- a/DBM-Hyjal/Anetheron.lua +++ b/DBM-Hyjal/Anetheron.lua @@ -174,6 +174,8 @@ function mod:OnCombatEnd() target1 = nil target2 = nil target3 = nil + self:UnscheduleMethod("Nightmare") + self:UnscheduleMethod("InfernalRain") end diff --git a/DBM-Hyjal/Archimonde.lua b/DBM-Hyjal/Archimonde.lua index 2c7aa7d..a59a534 100644 --- a/DBM-Hyjal/Archimonde.lua +++ b/DBM-Hyjal/Archimonde.lua @@ -106,8 +106,8 @@ function mod:OnCombatStart(delay) prewarn = 0 phase = 0 terror = 0 -lastDoomfire = nil -lastForce = nil +lastDoomfire = 0 +lastForce = 0 drawFlames = 0 end diff --git a/DBM-Hyjal/Azgalor.lua b/DBM-Hyjal/Azgalor.lua index bf3f534..6a44754 100644 --- a/DBM-Hyjal/Azgalor.lua +++ b/DBM-Hyjal/Azgalor.lua @@ -127,8 +127,7 @@ function mod:SPELL_CAST_START(args) end function mod:UNIT_DIED(args) - local cid = self:GetCIDFromGUID(args.destGUID) - if cid == 26665 then + if args.destName == "Legion Portal" then DBM.BossHealth:Clear() end end diff --git a/DBM-Hyjal/Chromius.lua b/DBM-Hyjal/Chromius.lua index def4e4e..4c953a4 100644 --- a/DBM-Hyjal/Chromius.lua +++ b/DBM-Hyjal/Chromius.lua @@ -19,7 +19,7 @@ mod:RegisterEvents( -- Final Countdown local specWarnFinalCountdown = mod:NewSpecialWarning("Final Countdown! The Hourglass will vibrate %s times!", 2141735) local warnCountdown = mod:NewAnnounce("There are %s vibrations left!", 2141735) -local timerNextFinalCountdown = mod:NewTimer(60,"Next Final Countdown: (%s)", 2141735) +local timerNextFinalCountdown = mod:NewTimer(62,"Next Final Countdown: (%s)", 2141735) local timerFinalDuration = mod:NewTimer(2,"Final Countdown (%s ticks)", 2141735) local warnFinalCDSoon = mod:NewAnnounce("Final Countdown soon!", 2141735) local timerFinalDelay = mod:NewTimer(3, "Vibration travel time", 2141735) @@ -92,9 +92,9 @@ function mod:OnCombatStart(delay) ThrallHP = 0 insanity = 0 timerArcaneBreath:Start(40-delay) - timerNextFinalCountdown:Start(65-delay, count) + timerNextFinalCountdown:Start(67-delay, count) warnFinalCDSoon:Schedule(60-delay) - self:ScheduleMethod(65-delay,"FinalCountdown") + self:ScheduleMethod(67-delay,"FinalCountdown") end function mod:FinalCountdown() @@ -105,9 +105,9 @@ function mod:FinalCountdown() timerFinalDuration:Start(duration, count) count = count + 1 duration = duration + 2.5 - timerNextFinalCountdown:Start(60,count) - warnFinalCDSoon:Schedule(55) - self:ScheduleMethod(60,"FinalCountdown") + timerNextFinalCountdown:Start(62,count) + warnFinalCDSoon:Schedule(57) + self:ScheduleMethod(62,"FinalCountdown") elseif phase == 1 then timerFinalDelay:Start(3) self:ScheduleMethod(3,"FinalDuration") diff --git a/DBM-Hyjal/RageWinterchill.lua b/DBM-Hyjal/RageWinterchill.lua index ab961da..3c795b6 100644 --- a/DBM-Hyjal/RageWinterchill.lua +++ b/DBM-Hyjal/RageWinterchill.lua @@ -67,6 +67,8 @@ local lastSlap local remainingSlap local berserkTimer = mod:NewBerserkTimer(600) +mod:AddBoolOption("ChainWhisper", false) + function mod:OnCombatStart(delay) prewarn = 1 phylDeath = 0 @@ -164,8 +166,10 @@ function mod:SPELL_AURA_APPLIED(args) timerFrozen:Start() end if args:IsSpellID(2140654) and args:IsPlayer() then - warnChains:show(args.sourceName, args.destName) --- SendChatMessage("sourceName is "..args.sourceName.."", "SAY") + warnChains:Show(args.sourceName, args.destName) + if self.Options.ChainWhisper then + SendChatMessage("I'm linked with you", "WHISPER") + end -- SendChatMessage("destName is "..args.destName.."", "SAY") -- if args.destName == UnitName("Player") then -- specWarnChains:Show(args.destName) diff --git a/DBM-Hyjal/localization.en.lua b/DBM-Hyjal/localization.en.lua index b43c6a1..81894d7 100644 --- a/DBM-Hyjal/localization.en.lua +++ b/DBM-Hyjal/localization.en.lua @@ -16,6 +16,7 @@ L:SetTimerLocalization({ }) L:SetOptionLocalization({ + ChainWhisper = "Enable this if you want to whisper your partner when you get linked by $spell:2140654." }) L:SetMiscLocalization({ diff --git a/DBM-MC/Gehennas.lua b/DBM-MC/Gehennas.lua index 0e08d6a..b5d0391 100644 --- a/DBM-MC/Gehennas.lua +++ b/DBM-MC/Gehennas.lua @@ -29,11 +29,11 @@ function mod:OnCombatStart(delay) timerNextCurse:Start() end -function mod:warnFistTargets() - warnFist:Show(table.concat(FistTargets, "<, >")) - timerFist:Start(7-delay) - table.wipe(FistTargets) -end +-- function mod:warnFistTargets() -- too spammy +-- warnFist:Show(table.concat(FistTargets, "<, >")) +-- timerFist:Start(7-delay) +-- table.wipe(FistTargets) +-- end -- function mod:SPELL_CAST_SUCCESS(args) -- if args:IsSpellID(19716) then @@ -45,11 +45,12 @@ end -- end function mod:SPELL_AURA_APPLIED(args) - if args:IsSpellID(20277) and args:IsDestTypePlayer() then - self:UnscheduleMethod("warnFistTargets") - FistTargets[#FistTargets + 1] = args.destName - self:ScheduleMethod(0.3, "warnFistTargets") - elseif args:IsSpellID(20277) then + -- if args:IsSpellID(20277) and args:IsDestTypePlayer() then + -- self:UnscheduleMethod("warnFistTargets") + -- FistTargets[#FistTargets + 1] = args.destName + -- self:ScheduleMethod(0.3, "warnFistTargets") + -- else + if args:IsSpellID(20277) then if args:IsPlayer() then specWarnRain:Show() end diff --git a/DBM-MC/Golemagg.lua b/DBM-MC/Golemagg.lua index 61929ff..1ffee28 100644 --- a/DBM-MC/Golemagg.lua +++ b/DBM-MC/Golemagg.lua @@ -11,7 +11,7 @@ mod:RegisterEvents( "SPELL_PERIODIC_DAMAGE" ) -mod:AddBoolOption(L.CaveinYellOpt) +mod:AddBoolOption(L.CaveinYellOpt, false) local CaveInSpam = 0 local warnTrust = mod:NewSpellAnnounce(20553) @@ -35,14 +35,11 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(350098, 975009) then if args:IsPlayer() then warnCaveIn:Show() - if self.Options.CaveinYellOpt then + if self.Options.CaveinYellOpt and DBM:AntiSpam(5, 1) then SendChatMessage(L.CaveinYell, "YELL") end end - if GetTime() > CaveInSpam then - CaveInSpam = GetTime() - timerNextCaveIn:Start() - end + timerNextCaveIn:Start() end end @@ -50,7 +47,7 @@ function mod:SPELL_PERIODIC_DAMAGE(args) if args:IsSpellID(350098, 975009) then if args:IsPlayer() then warnCaveIn:Show() - if self.Options.CaveinYellOpt then + if self.Options.CaveinYellOpt and DBM:AntiSpam(5, 1) then SendChatMessage(L.CaveinYell, "YELL") end end diff --git a/DBM-MC/Ragnaros.lua b/DBM-MC/Ragnaros.lua index b132b7d..fc6adfc 100644 --- a/DBM-MC/Ragnaros.lua +++ b/DBM-MC/Ragnaros.lua @@ -13,7 +13,7 @@ mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) -local timerCombatStart = mod:NewTimer(78, "TimerCombatStart", 2457) +local timerCombatStart = mod:NewTimer(68, "TimerCombatStart", 2457) local warnSunder = mod:NewAnnounce(L.RagFire, 2, 2105107) local warnHand = mod:NewSpellAnnounce(2105119) @@ -46,10 +46,10 @@ function mod:OnCombatStart(delay) end function mod:Emerged() - timerNextHand:Start(-delay) - warnSubmergeSoon:Schedule(85-delay) - timerSubmerge:Start(-delay) - timerEmerge:Schedule(90-delay) + timerNextHand:Start() + warnSubmergeSoon:Schedule(85) + timerSubmerge:Start() + timerEmerge:Schedule(90) self:ScheduleMethod(150, "Emerged") end diff --git a/DBM-MC/Shazzrah.lua b/DBM-MC/Shazzrah.lua index 112a559..2bc3573 100644 --- a/DBM-MC/Shazzrah.lua +++ b/DBM-MC/Shazzrah.lua @@ -60,7 +60,7 @@ end function mod:SPELL_CAST_START(args) if args:IsSpellID(2105085, 2105086) or args:IsSpellID(2105087, 2105088) then timerNextExplo:Start() - warnCastExplo:Start() + warnCastExplo:Show() timerExplo:Start() end end diff --git a/DBM-MC/Sulfuron.lua b/DBM-MC/Sulfuron.lua index 6354fec..54ed864 100644 --- a/DBM-MC/Sulfuron.lua +++ b/DBM-MC/Sulfuron.lua @@ -29,28 +29,29 @@ function mod:OnCombatStart(delay) table.wipe(HandofRagTargets) end -function mod:warnHandofRagTargets() - warnHandRagnaros:Show(table.concat(HandofRagTargets, "<, >")) - timerHandRagnaros:Start() - table.wipe(HandofRagTargets) -end +-- function mod:warnHandofRagTargets() -- too spammy +-- warnHandRagnaros:Show(table.concat(HandofRagTargets, "<, >")) +-- timerHandRagnaros:Start() +-- table.wipe(HandofRagTargets) +-- end function mod:SPELL_AURA_APPLIED(args) -- if args:IsSpellID(19779) then -- warnInspire:Show(args.destName) -- timerInspire:Start(args.destName) -- else - if args:IsSpellID(19780) and args:IsDestTypePlayer() then - self:UnscheduleMethod("warnHandofRagTargets") - HandofRagTargets[#HandofRagTargets + 1] = args.destName - self:ScheduleMethod(0.3, "warnHandofRagTargets") + -- if args:IsSpellID(19780) and args:IsDestTypePlayer() then + -- self:UnscheduleMethod("warnHandofRagTargets") + -- HandofRagTargets[#HandofRagTargets + 1] = args.destName + -- self:ScheduleMethod(0.3, "warnHandofRagTargets") + -- elseif args:IsSpellID(19776) then -- warnShadowPain:Show(args.destName) -- timerShadowPain:Start(args.destName) -- elseif args:IsSpellID(20294) then -- warnImmolate:Show(args.destName) -- timerImmolate:Start(args.destName) - end + -- end end -- function mod:SPELL_AURA_REMOVED(args) diff --git a/DBM-MagtheridonsLair/Magtheridon.lua b/DBM-MagtheridonsLair/Magtheridon.lua index 6505920..66b9d20 100644 --- a/DBM-MagtheridonsLair/Magtheridon.lua +++ b/DBM-MagtheridonsLair/Magtheridon.lua @@ -121,7 +121,7 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(30168) then warnInterrupt:Show() elseif args:IsSpellID(85405) then - if args.destName == UnitName("player") then + if args:IsPlayer() then -- SendChatMessage("Fel Shock on "..UnitName("PLAYER")..", STACK ON ME!", "YELL") specWarnYouFelShock:Show() end @@ -129,7 +129,7 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(30619) then warnMortalCleave:Show(args.spellName, args.destName, args.amount or 1) elseif args:IsSpellID(351085) then - if args.destName == UnitName("player") then + if args:IsPlayer() then specWarnConflag:Show() end end @@ -139,7 +139,7 @@ function mod:SPELL_AURA_APPLIED_DOSE(args) if args:IsSpellID(30619) and args.amount >= 4 then warnMortalCleave:Show(args.spellName, args.destName, args.amount or 1) elseif args:IsSpellID(351085) then - if args.destName == UnitName("player") then + if args:IsPlayer() then specWarnConflag:Show() end end diff --git a/DBM-Naxx/ArachnidQuarter/Faerlina.lua b/DBM-Naxx/ArachnidQuarter/Faerlina.lua index 81f9aa9..78755c0 100644 --- a/DBM-Naxx/ArachnidQuarter/Faerlina.lua +++ b/DBM-Naxx/ArachnidQuarter/Faerlina.lua @@ -92,10 +92,10 @@ end function mod:SPELL_AURA_REFRESH(args) if args:IsSpellID(2123102) then - timerSadism:Stop() - timerBloodBath:Start() - warnBloodBathSoon:Cancel() - warnBloodBathSoon:Schedule(40) + timerSadism:Stop() + timerBloodBath:Start() + warnBloodBathSoon:Cancel() + warnBloodBathSoon:Schedule(40) end end diff --git a/DBM-Naxx/ArachnidQuarter/Maexxna.lua b/DBM-Naxx/ArachnidQuarter/Maexxna.lua index ccfe86f..d0cff74 100644 --- a/DBM-Naxx/ArachnidQuarter/Maexxna.lua +++ b/DBM-Naxx/ArachnidQuarter/Maexxna.lua @@ -63,13 +63,12 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(2123206, 2123207, 2123208, 2123209) and DBM:AntiSpam() then warnWebSprayNow:Show() timerWebStunSoon:Start() - timerWebSpray:Start() elseif args:IsSpellID(2123211,2123212,2123216,2123217) and (GetTime() - webSpam) > 5 then -- Web Wrap webSpam = GetTime() warnWebWrap:Show(args.destName) timerWebWrap:Start() - if args.destName == UnitName("player") then + if args:IsPlayer() then SendChatMessage(L.YellWebWrap, "YELL") end elseif args:IsSpellID(2123210) then @@ -86,12 +85,11 @@ function mod:SPELL_AURA_APPLIED_DOSE(args) necroticSpam = GetTime() warnNecrotic:Show(args.spellName, args.destName, args.amount or 1) end - end - if args:IsSpellID(2123202) then + elseif args:IsSpellID(2123202) then if args:IsPlayer() and args.amount >= 1 then - specWarnDigestive:Show(args.amount) + specWarnDigestive:Show(args.amount) elseif args:IsPlayer() == false and args.amount >= 4 and args.amount <=10 then - warnDigestive:Show(args.spellName, args.destName, args.amount or 1) + warnDigestive:Show(args.spellName, args.destName, args.amount or 1) end end end diff --git a/DBM-Naxx/ConstructQuarter/Gluth.lua b/DBM-Naxx/ConstructQuarter/Gluth.lua index acafe86..6886e8f 100644 --- a/DBM-Naxx/ConstructQuarter/Gluth.lua +++ b/DBM-Naxx/ConstructQuarter/Gluth.lua @@ -48,10 +48,9 @@ function mod:SPELL_AURA_APPLIED_DOSE(args) if args:IsPlayer() then SpecWarnVicStacks:Show(args.amount) else - warnViciousStacks:Show(args.spellName, args.destName, args.amount or 1) + warnViciousStacks:Show(args.spellName, args.destName, args.amount or 1) end - end - if args:IsSpellID(2122904) then + elseif args:IsSpellID(2122904) then if args.amount >=1 then specWarnAngry:Show(args.spellName, args.destName, args.amount or 1) end @@ -63,16 +62,13 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then SpecWarnVicStacks:Show(args.amount or 1) else - warnViciousStacks:Show(args.spellName, args.destName, args.amount or 1) + warnViciousStacks:Show(args.spellName, args.destName, args.amount or 1) end - end - if args:IsSpellID(2122904) then + elseif args:IsSpellID(2122904) then specWarnAngry:Show(args.spellName, args.destName, args.amount or 1) - end - if args:IsSpellID(2122903) then + elseif args:IsSpellID(2122903) then warnHungry:Show() - end - if args:IsSpellID(2122923) and (args.destName == "Gluth") then + elseif args:IsSpellID(2122923) and (args.destName == "Gluth") then timerFeedFrenzy:Start() end end @@ -80,7 +76,7 @@ end function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 15932 or cid == 26628 then - timerDecimate:Stop() + timerDecimate:Stop() end end diff --git a/DBM-Naxx/ConstructQuarter/Grobbulus.lua b/DBM-Naxx/ConstructQuarter/Grobbulus.lua index ebfe27c..87ebb3d 100644 --- a/DBM-Naxx/ConstructQuarter/Grobbulus.lua +++ b/DBM-Naxx/ConstructQuarter/Grobbulus.lua @@ -72,7 +72,7 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specWarnInjection:Show() else - warnInjection:Show(args.destName) + warnInjection:Show(args.destName) end timerInjection:Start(args.destName) timerNextInjection:Start() @@ -123,6 +123,7 @@ function mod:StitchedGiant() timerStitchedGiant:Start() self:ScheduleMethod(60,"StitchedGiant") end + --if args:IsSpellID(28240) then -- timer = 15 -- timerCloud:Start(timer) @@ -132,9 +133,9 @@ end function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 15931 or cid == 26627 then - timerInjection:Stop() - timerSpray:Stop() - timerNextInjection:Stop() + timerInjection:Stop() + timerSpray:Stop() + timerNextInjection:Stop() end end diff --git a/DBM-Naxx/ConstructQuarter/Patchwerk.lua b/DBM-Naxx/ConstructQuarter/Patchwerk.lua index 77e94e1..92cb5dd 100644 --- a/DBM-Naxx/ConstructQuarter/Patchwerk.lua +++ b/DBM-Naxx/ConstructQuarter/Patchwerk.lua @@ -49,23 +49,21 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specWarnGastric:Show(); else - warnGastric:Show(args.destName) + warnGastric:Show(args.destName) end timerGastricSelf:Start(args.destName) self:SetIcon(args.destName, 8, 15) timerGastric:Start() - end - if args:IsSpellID(2122516) then + elseif args:IsSpellID(2122516) then if args:IsPlayer() then - specWarnNotFavToy:Show(args.destName) - timerNotFavToy:Start(args.destName) + specWarnNotFavToy:Show(args.destName) + timerNotFavToy:Start(args.destName) end MT = args.destName - end - if args:IsSpellID(2122515) then + elseif args:IsSpellID(2122515) then if args:IsPlayer() then - specWarnFavToy:Show(args.destName) - timerFavToy:Start(args.destName) + specWarnFavToy:Show(args.destName) + timerFavToy:Start(args.destName) end end end @@ -73,10 +71,9 @@ end function mod:SPELL_DAMAGE(args) if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then announceStrike(args.destName, args.amount or 0) - end - if args:IsSpellID(2122505) and (args.destName == MT) then - timerNotFavToy:Stop() - timerNotFavToy:Start(MT) + elseif args:IsSpellID(2122505) and (args.destName == MT) then + timerNotFavToy:Stop() + timerNotFavToy:Start(MT) end end diff --git a/DBM-Naxx/ConstructQuarter/Thaddius.lua b/DBM-Naxx/ConstructQuarter/Thaddius.lua index 36b47c5..97e564b 100644 --- a/DBM-Naxx/ConstructQuarter/Thaddius.lua +++ b/DBM-Naxx/ConstructQuarter/Thaddius.lua @@ -102,17 +102,16 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then SendChatMessage("Magnetic Reversal on "..UnitName("PLAYER").."!", "Say") end - warnMagnetic:Show(args.destName) - timerMagnetic:Start() - mod:SetIcon(args.destName, i, 15) - i = i-1 - end - if args:IsSpellID(2124222) then + warnMagnetic:Show(args.destName) + timerMagnetic:Start() + mod:SetIcon(args.destName, i, 15) + i = i-1 + elseif args:IsSpellID(2124222) then local tanktarget = args.destName if args:IsPlayer() then specWarnTankOvercharged:Show() else - warnTankOvercharged:Show(tanktarget) + warnTankOvercharged:Show(tanktarget) end mod:SetIcon(tanktarget, 8, 15) end @@ -139,17 +138,16 @@ function mod:UNIT_AURA(unit) if currentCharge == 1 or currentCharge == 0 then specWarnNegative:Show() end - currentCharge = 2 - negativePolarity:Show() - positivePolarity:Hide() - end - if UnitDebuff("Player","Polarity: Positive") then + currentCharge = 2 + negativePolarity:Show() + positivePolarity:Hide() + elseif UnitDebuff("Player","Polarity: Positive") then if currentCharge == 2 or currentCharge == 0 then specWarnPositive:Show() end - currentCharge = 1 - negativePolarity:Hide() - positivePolarity:Show() + currentCharge = 1 + negativePolarity:Hide() + positivePolarity:Show() end end diff --git a/DBM-Naxx/FrostwyrmLair/Kel'Thuzad.lua b/DBM-Naxx/FrostwyrmLair/Kel'Thuzad.lua index 803ef5c..425e924 100644 --- a/DBM-Naxx/FrostwyrmLair/Kel'Thuzad.lua +++ b/DBM-Naxx/FrostwyrmLair/Kel'Thuzad.lua @@ -156,8 +156,8 @@ function mod:PhaseTwo() end function mod:PhaseThreeTransition() -timerDnD:Start(10) -timerPhase3:Start() + timerDnD:Start(10) + timerPhase3:Start() end function mod:PhaseThree() @@ -184,8 +184,8 @@ end ]]-- function mod:FrostPhase() - self:UnscheduleMethod(44, "DnD") - timerDnD:Cancel(44) + self:UnscheduleMethod(0, "DnD") + timerDnD:Cancel() timerFrostPhase:Start() self:ScheduleMethod(45, "FrostPhaseFinished") end @@ -196,9 +196,9 @@ function mod:FrostPhaseFinished() end function mod:DnD() -timerDnD:Start() -warnDnD:Show() -self:ScheduleMethod(20,"DnD") + timerDnD:Start() + warnDnD:Show() + self:ScheduleMethod(20,"DnD") end function mod:SPELL_CAST_START(args) @@ -210,7 +210,7 @@ function mod:SPELL_AURA_APPLIED(args) warnChains:Show(args.destName) -----SHADOW FISSURE----- elseif args:IsSpellID(2124579) and DBM:AntiSpam(5,5) then - if args.destName == UnitName("player") then + if args:IsPlayer() then specWarnFissure:Show() else warnFissure:Show() @@ -218,7 +218,7 @@ function mod:SPELL_AURA_APPLIED(args) timerFissure:Start() -----DEATH AND DECAY----- elseif args:IsSpellID(2124575, 2124576, 2124577, 2124578) then - if args.destName == UnitName("player") then + if args:IsPlayer() then specWarnDnD:Show() end elseif args:IsSpellID(2124512) then @@ -236,11 +236,11 @@ function mod:SPELL_AURA_APPLIED(args) specWarnManaBomb:Show() else warnManaBomb:Show(args.destName) - timerNextManaBomb:Start() - timerManaBomb:Start() - self:SetIcon(args.destName, mana) - mana = mana - 1 end + self:SetIcon(args.destName, mana) + mana = mana - 1 + timerNextManaBomb:Start() + timerManaBomb:Start() end end @@ -265,7 +265,7 @@ function mod:UNIT_HEALTH(uId) frostPhase = 2 self:ScheduleMethod(43, "FrostPhase") timerKTteleport:Start(43) - elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.40 and frostPhase == 2 then + elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.45 and frostPhase == 2 then frostPhase = 3 warnAddsSoon:Show() end @@ -294,64 +294,65 @@ function mod:UNIT_DIED(args) elseif not (mod:IsDifficulty("heroic10") or mod:IsDifficulty("heroic25")) and shadeCounter == 16 then self:ScheduleMethod(0, "phaseThreeTransition") end - end - if cid == 26614 then --Anub - timerLocust:Stop() - timerImpale:Stop() - elseif cid == 26615 then -- Faerlina - timerSadism:Stop() - elseif cid == 26617 then -- Noth - timerCurse:Stop() - elseif cid == 26619 then -- Loatheb - timerNextDeathbloom:Stop() - timerDeathblooming:Stop() - timerNecrotic:Stop() - elseif cid == 26620 then -- Raz - timerenrage:Stop() - timerKnife:Stop() - elseif (cid >= 26622 and cid <= 2665) then -- Horsemen - timerMark:Stop() - timerNextHolyWrath:Stop() - timerNextDeepChill:Stop() - timerNextMeteor:Stop() - timerNextFamine:Stop() - elseif cid == 26626 then -- Patch - timerGastric:Stop() - timerGastricSelf:Stop() - elseif cid == 26627 then -- Grobb - timerNextInjection:Stop() - timerSpray:Stop() - elseif cid == 26628 then -- Gluth - timerDecimate:Stop() - elseif cid == 26629 then -- Thadd - timerNextShift:Stop() - self:UnscheduleMethod("ShiftingPolarity") - elseif cid == 26630 then -- Sapph - timerNextBellowing:Stop() + + if cid == 26614 then --Anub + timerLocust:Stop() + timerImpale:Stop() + elseif cid == 26615 then -- Faerlina + timerSadism:Stop() + elseif cid == 26617 then -- Noth + timerCurse:Stop() + elseif cid == 26619 then -- Loatheb + timerNextDeathbloom:Stop() + timerDeathblooming:Stop() + timerNecrotic:Stop() + elseif cid == 26620 then -- Raz + timerenrage:Stop() + timerKnife:Stop() + elseif (cid >= 26622 and cid <= 26625) then -- Horsemen + timerMark:Stop() + timerNextHolyWrath:Stop() + timerNextDeepChill:Stop() + timerNextMeteor:Stop() + timerNextFamine:Stop() + elseif cid == 26626 then -- Patch + timerGastric:Stop() + timerGastricSelf:Stop() + elseif cid == 26627 then -- Grobb + timerNextInjection:Stop() + timerSpray:Stop() + elseif cid == 26628 then -- Gluth + timerDecimate:Stop() + elseif cid == 26629 then -- Thadd + timerNextShift:Stop() + self:UnscheduleMethod("ShiftingPolarity") + elseif cid == 26630 then -- Sapph + timerNextBellowing:Stop() + end end end function mod:OnCombatEnd() self:UnscheduleMethod("DnD") - timerLocust:Stop() - timerImpale:Stop() - timerSadism:Stop() - timerCurse:Stop() - timerNextDeathbloom:Stop() - timerDeathblooming:Stop() - timerNecrotic:Stop() - timerenrage:Stop() - timerKnife:Stop() - timerMark:Stop() - timerNextHolyWrath:Stop() - timerNextDeepChill:Stop() - timerNextMeteor:Stop() - timerNextFamine:Stop() - timerGastric:Stop() - timerGastricSelf:Stop() - timerNextInjection:Stop() - timerSpray:Stop() - timerDecimate:Stop() - timerNextShift:Stop() - timerNextBellowing:Stop() + timerLocust:Stop() + timerImpale:Stop() + timerSadism:Stop() + timerCurse:Stop() + timerNextDeathbloom:Stop() + timerDeathblooming:Stop() + timerNecrotic:Stop() + timerenrage:Stop() + timerKnife:Stop() + timerMark:Stop() + timerNextHolyWrath:Stop() + timerNextDeepChill:Stop() + timerNextMeteor:Stop() + timerNextFamine:Stop() + timerGastric:Stop() + timerGastricSelf:Stop() + timerNextInjection:Stop() + timerSpray:Stop() + timerDecimate:Stop() + timerNextShift:Stop() + timerNextBellowing:Stop() end \ No newline at end of file diff --git a/DBM-Naxx/FrostwyrmLair/Sapphiron.lua b/DBM-Naxx/FrostwyrmLair/Sapphiron.lua index 9898965..7758040 100644 --- a/DBM-Naxx/FrostwyrmLair/Sapphiron.lua +++ b/DBM-Naxx/FrostwyrmLair/Sapphiron.lua @@ -88,17 +88,17 @@ end function mod:SPELL_AURA_APPLIED(args) if args:IsSpellID(2124344) then if args:IsPlayer() then - specWarnTombTarget:Show() - SendChatMessage("Ice Tomb incoming on "..UnitName("PLAYER").."!", "Say") + specWarnTombTarget:Show() + SendChatMessage("Ice Tomb incoming on "..UnitName("PLAYER").."!", "Say") else - warnTombTarget:Show(args.destName) + warnTombTarget:Show(args.destName) end elseif args:IsSpellID(2124328) and args.IsPlayer() then specWarningBlizzard:Show() elseif args:IsSpellID(2124338) then timerNextCurse:Start() warnCurse:Show(args.destName) - elseif args:IsSpellID(2124332) then + elseif args:IsSpellID(2124332) and DBM:AntiSpam(2,7) then timerTerrified:Start() end end @@ -106,12 +106,11 @@ end function mod:SPELL_CAST_START(args) if args:IsSpellID(2124332) then - specWarnBellowing:Show() - timerBellowing:Start() - timerNextBellowing:Start() - timerTerrified:Schedule(4.5) - end - if args:IsSpellID(2124322) then + specWarnBellowing:Show() + timerBellowing:Start() + timerNextBellowing:Start() + timerTerrified:Schedule(4.5) + elseif args:IsSpellID(2124322) then timerNextBreath:Start() timerBreath:Start() end diff --git a/DBM-Naxx/MilitaryQuarter/Gothik.lua b/DBM-Naxx/MilitaryQuarter/Gothik.lua index b1b9573..6d254ed 100644 --- a/DBM-Naxx/MilitaryQuarter/Gothik.lua +++ b/DBM-Naxx/MilitaryQuarter/Gothik.lua @@ -76,9 +76,9 @@ end function mod:UNIT_HEALTH(uId) if self:GetUnitCreatureId(uId) == 16060 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.11 and phase ==1 then - self:UnscheduleMethod("HarvestSoul") - timerHarvest:Stop() - phase = 2 + self:UnscheduleMethod("HarvestSoul") + timerHarvest:Stop() + phase = 2 end end diff --git a/DBM-Naxx/MilitaryQuarter/Horsemen.lua b/DBM-Naxx/MilitaryQuarter/Horsemen.lua index 583fc7e..9606a44 100644 --- a/DBM-Naxx/MilitaryQuarter/Horsemen.lua +++ b/DBM-Naxx/MilitaryQuarter/Horsemen.lua @@ -48,6 +48,7 @@ mod:SetBossHealthInfo( 16063, L.Zeliek ) local markCounter = 0 +local markSpam = 0 -----BOSS FUNCTIONS----- function mod:OnCombatStart(delay) @@ -101,18 +102,17 @@ end function mod:Famine() local famineTarget = mod:GetBossTarget(16065) or mod:GetBossTarget(26625) --Finds target of boss (if exsists) otherwise, find target of shade (if exists) - if famineTarget == UnitName("player") then --if target == player - specWarnFamineYou:Show() - SendChatMessage("Field of Famine on "..UnitName("PLAYER").."!", "Say") - else - warnFamine:Show(famineTarget) - end - timerFamine:Start(famineTarget) --we want timers to start even if player is the target, you had the timers only in the "if not player". - timerNextFamine:Start() - self:SetIcon(famineTarget, 3, 4) + if famineTarget == UnitName("player") then --if target == player + specWarnFamineYou:Show() + SendChatMessage("Field of Famine on "..UnitName("PLAYER").."!", "Say") + else + warnFamine:Show(famineTarget) + end + timerFamine:Start(famineTarget) --we want timers to start even if player is the target, you had the timers only in the "if not player". + timerNextFamine:Start() + self:SetIcon(famineTarget, 3, 4) end -local markSpam = 0 function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(2124103,2124107,2124111,2124115) and (GetTime() - markSpam) > 5 then markSpam = GetTime() @@ -123,11 +123,9 @@ end function mod:SPELL_CAST_START(args) if args:IsSpellID(2124141) then self:ScheduleMethod(0.25, "HolyWrath") - end - if args:IsSpellID(2124167) then + elseif args:IsSpellID(2124167) then self:ScheduleMethod(0.25, "DeepChill") - end - if args:IsSpellID(2124166) then + elseif args:IsSpellID(2124166) then self:ScheduleMethod(0.25, "Famine") end end @@ -155,17 +153,13 @@ function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 16063 or 26624 then timerNextHolyWrath:Stop() - end - if cid == 16064 or 26623 then + elseif cid == 16064 or 26623 then timerNextMeteor:Stop() - end - if cid == 16065 or 26625 then + elseif cid == 16065 or 26625 then timerNextFamine:Stop() - end - if cid == 30549 or 26622 then + elseif cid == 30549 or 26622 then timerNextDeepChill:Stop() - end - if cid >= 26622 and cid <= 26625 then + elseif cid >= 26622 and cid <= 26625 then timerMark:Stop() end end diff --git a/DBM-Naxx/MilitaryQuarter/Razuvious.lua b/DBM-Naxx/MilitaryQuarter/Razuvious.lua index e765897..316f755 100644 --- a/DBM-Naxx/MilitaryQuarter/Razuvious.lua +++ b/DBM-Naxx/MilitaryQuarter/Razuvious.lua @@ -98,8 +98,7 @@ function mod:SPELL_AURA_APPLIED(args) SendChatMessage("Jagged Cold Steel Knife on "..UnitName("PLAYER").."!", "Say") end timerKnife:Start() - end - if args:IsSpellID(2123914) then + elseif args:IsSpellID(2123914) then self:ScheduleMethod(0,"PhaseTwo") end end @@ -107,18 +106,17 @@ end function mod:SPELL_AURA_APPLIED_DOSE(args) if args:IsSpellID(2123919) and args.amount >=1 then if args:IsPlayer() then - specwarnDeathStrike:Show(args.amount) + specwarnDeathStrike:Show(args.amount) end end end function mod:SPELL_CAST_SUCCESS(args) - if args:IsSpellID(2123905) then - timerPlagueStrike:Start() - end - if args:IsSpellID(2123904) then - timerFrostStrike:Start() - end + if args:IsSpellID(2123905) then + timerPlagueStrike:Start() + elseif args:IsSpellID(2123904) then + timerFrostStrike:Start() + end end function mod:SPELL_DAMAGE(args) @@ -138,8 +136,7 @@ end function mod:SPELL_CAST_START(args) if args:IsSpellID(2123928,2123929,2123930,2123931) then self:ScheduleMethod(0,"BreakUnholyBlade") - end - if args:IsSpellID(2123919) then + elseif args:IsSpellID(2123919) then self:ScheduleMethod(0, "DeathStrike") end end diff --git a/DBM-Naxx/PlagueQuarter/Heigan.lua b/DBM-Naxx/PlagueQuarter/Heigan.lua index a94979d..8e170b5 100644 --- a/DBM-Naxx/PlagueQuarter/Heigan.lua +++ b/DBM-Naxx/PlagueQuarter/Heigan.lua @@ -85,16 +85,16 @@ function mod:PositionTwo() if dance == 1 then timerPositionTwo:Start(4) if forward == 1 then - self:ScheduleMethod(4, "PositionThree") + self:ScheduleMethod(4, "PositionThree") else - self:ScheduleMethod(4, "PositionOne") + self:ScheduleMethod(4, "PositionOne") end else timerPositionTwo:Start(10) if forward == 1 then - self:ScheduleMethod(10, "PositionThree") + self:ScheduleMethod(10, "PositionThree") else - self:ScheduleMethod(10, "PositionOne") + self:ScheduleMethod(10, "PositionOne") end end end @@ -103,19 +103,20 @@ function mod:PositionThree() if dance == 1 then timerPositionThree:Start(4) if forward == 1 then - self:ScheduleMethod(4, "PositionFour") + self:ScheduleMethod(4, "PositionFour") else - self:ScheduleMethod(4, "PositionTwo") + self:ScheduleMethod(4, "PositionTwo") end else timerPositionThree:Start(10) if forward == 1 then self:ScheduleMethod(10, "PositionFour") - else + else self:ScheduleMethod(10, "PositionTwo") - end + end end end + function mod:PositionFour() forward = 0 if dance == 1 then @@ -175,7 +176,7 @@ end function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 15936 or cid == 26618 then - self:ScheduleMethod(0,"KillPositions") + self:ScheduleMethod(0,"KillPositions") end end diff --git a/DBM-Naxx/PlagueQuarter/Loatheb.lua b/DBM-Naxx/PlagueQuarter/Loatheb.lua index ee6cddc..13bfe6d 100644 --- a/DBM-Naxx/PlagueQuarter/Loatheb.lua +++ b/DBM-Naxx/PlagueQuarter/Loatheb.lua @@ -75,25 +75,25 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specWarnCloudOfBlight:Show(); end - end - if args:IsSpellID(2122623,2122624,2122625,2122626) and (GetTime() - doomSpam) > 5 then + elseif args:IsSpellID(2122623,2122624,2122625,2122626) and (GetTime() - doomSpam) > 5 then doomSpam = GetTime() -- Inevitable Doom doomCounter = doomCounter + 1 local timer = 30 if doomCounter >= 7 then - if doomCounter % 2 == 0 then timer = 17 - else timer = 12 end + if doomCounter % 2 == 0 then + timer = 17 + else + timer = 12 + end end warnDoomNow:Show(doomCounter) timerNextDoom:Start(timer, doomCounter + 1) timerDoomDamage:Start() - end - if args:IsSpellID(2122601) and DBM:AntiSpam(5,2) then + elseif args:IsSpellID(2122601) and DBM:AntiSpam(5,2) then timerNecrotic:Start() warnHealNow:Schedule(16) timerCastHeal:Schedule(16) - end - if args:IsSpellID(2122627) and DBM:AntiSpam(5,4) then + elseif args:IsSpellID(2122627) and DBM:AntiSpam(5,4) then specWarnDeathblooming:Show() timerDeathblooming:Start() timerNextDeathbloom:Start() @@ -105,8 +105,7 @@ function mod:SPELL_AURA_APPLIED_DOSE(args) if args:IsPlayer() then specWarnCloudOfBlight:Show(); end - end - if args:IsSpellID(2122631) then + elseif args:IsSpellID(2122631) then if args:IsPlayer() and (args.amount == 5 or args.amount == 10 or args.amount == 15 or args.amount == 20) and (GetTime() - bloomSpam) > 5 then bloomSpam = GetTime() warnDeathbloomStack:Show(args.spellName, args.destName, args.amount or 1) diff --git a/DBM-Naxx/PlagueQuarter/Noth.lua b/DBM-Naxx/PlagueQuarter/Noth.lua index 1eb53a1..0684f50 100644 --- a/DBM-Naxx/PlagueQuarter/Noth.lua +++ b/DBM-Naxx/PlagueQuarter/Noth.lua @@ -96,27 +96,28 @@ function mod:UNIT_HEALTH(uId) if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.80 and prePhase ==0 then warnIntermissionSoon:Show() prePhase = 1 - end + -- end --if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.753 and phase ==0 then --self:ScheduleMethod(0,"Intermission") --phase = 1 --end - if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and prePhase ==1 then + elseif self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and prePhase ==1 then warnIntermissionSoon:Show() prePhase = 2 - end + -- end --if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.503 and phase ==1 then -- self:ScheduleMethod(0,"Intermission") -- phase = 2 --end - if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.30 and prePhase ==2 then + elseif self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.30 and prePhase ==2 then warnIntermissionSoon:Show() prePhase = 3 - end + -- end --if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.253 and phase ==2 then -- self:ScheduleMethod(0,"Intermission") -- phase = 3 --end + end end function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) diff --git a/DBM-Onyxia/Onyxia.lua b/DBM-Onyxia/Onyxia.lua index b2100bb..85b8b06 100644 --- a/DBM-Onyxia/Onyxia.lua +++ b/DBM-Onyxia/Onyxia.lua @@ -10,6 +10,7 @@ mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL", "CHAT_MSG_RAID_BOSS_EMOTE", "SPELL_CAST_START", + "UNIT_DIED", "UNIT_HEALTH", "PLAYER_ALIVE" ) @@ -18,24 +19,29 @@ local warnPhase2 = mod:NewPhaseAnnounce(2) local warnPhase3 = mod:NewPhaseAnnounce(3) local warnPhase2Soon = mod:NewAnnounce("Phase 2 Soon", 1) local warnPhase3Soon = mod:NewAnnounce("Phase 3 Soon", 1) -local warnFireball = mod:NewTargetAnnounce(2105160, 3) -local warnBlastNova = mod:NewCastAnnounce(2105147, 2) +local warnFireball = mod:NewTargetAnnounce(2108300, 3) +local warnBlastNova = mod:NewCastAnnounce(2108401, 2) local WarnWhelpsSoon = mod:NewAnnounce("Onyxian Whelps soon", 1) +local WarnSpearTarget = mod:NewTimer(30, "%s", 2108415) local specWarnDeepBreath = mod:NewSpecialWarningMove(18609, 2) -local specWarnFireballYou = mod:NewSpecialWarningYou(2105160, 2) +local specWarnFireballYou = mod:NewSpecialWarningYou(2108300, 2) +local timerFlameBreath = mod:NewCastTimer(2, 2108321) local timerBreath = mod:NewCastTimer(8, 17086) -local timerBlastNova = mod:NewCastTimer(4, 2105147) -local timerBellowingRoar = mod:NewCastTimer(4, 18431) -local timerFireball = mod:NewCastTimer(4, 2105160) - +local timerBlastNova = mod:NewCastTimer(4, 2108401) +local timerBellowingRoar = mod:NewCastTimer(5, 2108326) +local timerFireball = mod:NewTargetTimer(4, 2108300) +local timerIntBlastNova = mod:NewCDTimer(40, 2108401)-- Internal CD for a Guard to cast Blast Nova twice local timerWhelps = mod:NewTimer(95, "Onyxian Whelps", "Interface\\Icons\\INV_Misc_Head_Dragon_Red") + +local timerNextFlameBreath = mod:NewNextTimer(20, 2108321) local timerNextDeepBreath = mod:NewCDTimer(75, 17086)--Range from 75-80 seconds in between based on where she moves to. -local timerNextBellowingRoar= mod:NewCDTimer(45, 18431) -local timerNextBlastNova = mod:NewCDTimer(32, 2105147)-- +/- a few seconds as it varies depending on Guard movement. -local timerIntBlastNova = mod:NewCDTimer(40, 2105147)-- Internal CD for a Guard to cast Blast Nova twice --- local timerIntBlastNova2 = mod:NewCDTimer(40, 2105147)-- second one for secondary add +local timerNextBellowingRoar= mod:NewCDTimer(45, 2108326) +local timerNextBlastNova = mod:NewCDTimer(40, 2108401) +local timerNextSecondNova = mod:NewCDTimer(30, 2108401) +local timerNextTailSwipe = mod:NewNextTimer(22, 2108312) +-- local timerIntBlastNova2 = mod:NewCDTimer(40, 2108401)-- second one for secondary add local lastBlastNova = 0 @@ -43,6 +49,7 @@ local prewarnP2 local warnP2 local prewarnP3 local warnP3 +local lastTargetGUID mod:AddBoolOption(L.FireballMark) @@ -74,6 +81,9 @@ function mod:OnCombatStart(delay) warnP2 = 0 prewarnP3 = 0 warnP3 = 0 + lastTargetGUID = 0 + timerFlameBreath:Start() + timerNextTailSwipe:Start() end function mod:CHAT_MSG_MONSTER_YELL(msg) @@ -97,6 +107,10 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) timerBreath:Start() timerNextDeepBreath:Stop() timerNextDeepBreath:Start() + elseif msg:find(L.EmoteSpear) then + name = string.match(msg, "is picked up by (.*)") + --"A scream releases as the spear is picked up by XXX!" + WarnSpearTarget:Show(name); end end @@ -106,6 +120,7 @@ function mod:MassiveFireball() local myName = UnitName("player") if target == myName then specWarnFireballYou:Show() + SendChatMessage("Fireball on "..UnitName("player"), "YELL") else warnFireball:Show(target) end @@ -116,29 +131,31 @@ function mod:MassiveFireball() end function mod:SPELL_CAST_START(args) - if args:IsSpellID(2105158, 2105159, 2105160, 2105161) then + if args:IsSpellID(2108300, 2108301, 2108302, 2108303) then self:ScheduleMethod(0.4, "MassiveFireball") - end - if args:IsSpellID(2105145, 2105146, 2105147, 2105148) then - warnBlastNova:Show() - timerBlastNova:Start() - timerNextBlastNova:Start() - if GetTime() - lastBlastNova > 20 then --Trying it to only trigger from new Add Blast Nova. - timerIntBlastNova:Start() + elseif args:IsSpellID(2108401, 2108402, 2108403, 2108404) then + if args.sourceGUID ~= lastTargetGUID then + warnBlastNova:Show() + timerBlastNova:Start() + timerNextSecondNova:Start() + timerNextBlastNova:Start() + lastTargetGUID = args.sourceGUIDs end - lastBlastNova = GetTime() - end - if args:IsSpellID(18431) then + -- if GetTime() - lastBlastNova > 20 then --Trying it to only trigger from new Add Blast Nova. + -- timerIntBlastNova:Start() + -- end + -- lastBlastNova = GetTime() + elseif args:IsSpellID(2108326) then --18431 timerBellowingRoar:Start() timerNextBellowingRoar:Stop() timerNextBellowingRoar:Start() - end --if args:IsSpellID(17086, 18351, 18564, 18576) or args:IsSpellID(18584, 18596, 18609, 18617) then -- 1 ID for each direction -- specWarnDeepBreath:Show() -- potentially deprecated because all new spell IDs -- timerBreath:Start() -- timerNextDeepBreath:Stop() -- timerNextDeepBreath:Start() --end + end end function mod:UNIT_HEALTH(uId) @@ -155,4 +172,14 @@ function mod:UNIT_HEALTH(uId) warnP3 = 1 self:ScheduleMethod(0, "alertP3") end -end \ No newline at end of file +end + +function mod:UNIT_DIED(args) + if args.destGUID == lastTargetGUID then + timerNextSecondNova:Cancel() + lastTargetGUID = 0 + end +end + +--429201 item of spear + diff --git a/DBM-Onyxia/localization.en.lua b/DBM-Onyxia/localization.en.lua index 4bf721f..2636993 100644 --- a/DBM-Onyxia/localization.en.lua +++ b/DBM-Onyxia/localization.en.lua @@ -31,6 +31,7 @@ L:SetOptionLocalization{ L:SetMiscLocalization{ YellP2 = "This meaningless exertion bores me. I'll incinerate you all from above!", YellP3 = "It seems you'll need another lesson, mortals!", - EmoteDeepBreath = "%s takes in a deep breath..." + EmoteDeepBreath = "%s takes in a deep breath...", + EmoteSpear = "A scream releases as the spear is picked up by" } diff --git a/DBM-Outlands/Kazzak.lua b/DBM-Outlands/Kazzak.lua index cbe48a6..918c167 100644 --- a/DBM-Outlands/Kazzak.lua +++ b/DBM-Outlands/Kazzak.lua @@ -89,14 +89,14 @@ end function mod:SPELL_AURA_APPLIED(args) if args:IsSpellID(21063) then - if args.destName == UnitName("player") then + if args:IsPlayer() then WarnTwistedYou:Show() end WarnTwisted:Show(args.destName) TimerTwisted:Start(args.destName) elseif args:IsSpellID(32960) then -- local target = tostring(args.destName) - if args.destName == UnitName("player") then + if args:IsPlayer() then WarnMarkYou:Show() else if self.Options.KazzakWhisper and DBM:GetRaidRank() >= 1 then diff --git a/DBM-Party-BC/Auct_Crypts/Shirrak.lua b/DBM-Party-BC/Auct_Crypts/Shirrak.lua index ecb0ebe..1965770 100644 --- a/DBM-Party-BC/Auct_Crypts/Shirrak.lua +++ b/DBM-Party-BC/Auct_Crypts/Shirrak.lua @@ -18,8 +18,8 @@ local warnBite = mod:NewAnnounce(L.ShirrakBite, 2, 85178) function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 32265 then - timerAcid:Start() - wardAcid:Show(args.destName) + timerNextAttract:Start() + warnAttract:Show(args.destName) end end diff --git a/DBM-Party-BC/CoT_BlackMorass/PortalTimers.lua b/DBM-Party-BC/CoT_BlackMorass/PortalTimers.lua index fd7d678..1d6e44e 100644 --- a/DBM-Party-BC/CoT_BlackMorass/PortalTimers.lua +++ b/DBM-Party-BC/CoT_BlackMorass/PortalTimers.lua @@ -65,9 +65,7 @@ function mod:CHAT_MSG_MONSTER_YELL(msg) end end -function mod:OnSync(msg, arg) - if msg == "Wipe" then - warnWavePortalSoon:Unschedule() - timerNextPortal:Cancel() - end +function mod:OnCombatEnd() + warnWavePortalSoon:Cancel() + timerNextPortal:Cancel() end \ No newline at end of file diff --git a/DBM-Serpentshrine/TheLurkerBelow.lua b/DBM-Serpentshrine/TheLurkerBelow.lua index 04913a8..ccb53dc 100644 --- a/DBM-Serpentshrine/TheLurkerBelow.lua +++ b/DBM-Serpentshrine/TheLurkerBelow.lua @@ -45,7 +45,7 @@ function mod:SPELL_AURA_APPLIED(args) -- DBM:AddMsg("Fishing applied - Pull inc") -- else if args:IsSpellID(2137622) then - if args.destName == UnitName("player") then + if args:IsPlayer() then warnFocusedYou:Show() else warnFocusedFire:Show(args.destName) diff --git a/DBM-Serpentshrine/Vashj.lua b/DBM-Serpentshrine/Vashj.lua index 7e725aa..94107eb 100644 --- a/DBM-Serpentshrine/Vashj.lua +++ b/DBM-Serpentshrine/Vashj.lua @@ -61,7 +61,8 @@ local timerParasite = mod:NewNextTimer(45, 2138027) local timerSiren = mod:NewNextTimer(17, 2138025) local timerPhoenix = mod:NewNextTimer(16, 2138015) -local warnParasite = mod:NewTargetAnnounce(2138027, 3) +local warnParasite = mod:NewTargetAnnounce(2138027, 3) +local yellParasite = mod:NewFadesYell(2138027) local warnSong = mod:NewTargetAnnounce(2138026, 3) local specWarnSiren = mod:NewSpecialWarning("SpecWarnSiren") @@ -74,6 +75,7 @@ mod:AddBoolOption(L.AimedIcon) mod:AddBoolOption(L.ChargeYellOpt) mod:AddBoolOption(L.AimedYellOpt) mod:AddBoolOption(L.LootYellOpt) +mod:AddBoolOption(L.ParasiteYellOpt) mod:AddBoolOption("AutoChangeLootToFFA", false) mod.vb.phase = 1 @@ -208,6 +210,14 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(2138027, 2138028, 2138029, 2138030) then warnParasite:Show(args.destName) timerParasite:Start() + if args:IsPlayer() and self.Options.ParasiteYellOpt then + yellParasite:Countdown(8,5) + end + elseif args:IsSpellID(2138031, 2138032, 2138033, 2138034) then + warnParasite:Show(args.destName) + if args:IsPlayer() and self.Options.ParasiteYellOpt then + yellParasite:Countdown(16,5) + end elseif args.spellId == 2138026 then warnSong:Show(args.destName) specWarnSiren:Show() diff --git a/DBM-Serpentshrine/localization.en.lua b/DBM-Serpentshrine/localization.en.lua index 108f675..0ff0423 100644 --- a/DBM-Serpentshrine/localization.en.lua +++ b/DBM-Serpentshrine/localization.en.lua @@ -230,6 +230,7 @@ L:SetOptionLocalization{ AimedYellOpt = "Yell when you are affected by $spell:351310", LootIcon = "Set icon on the target carrying Tainted Core", LootYellOpt = "Yell when you are carrying Tainted Core", + ParasiteYellOpt = "Coundown yell when you are infected by $spell:2138027", AutoChangeLootToFFA = "Switch loot mode to Free for All in Phase 2", SpecWarnSiren = "Show special warning for when Coilfang Siren spawns", Discharge = "Show timer for when Shield Generator will deal its damage", diff --git a/DBM-ZG/Jeklik.lua b/DBM-ZG/Jeklik.lua index 02a0645..b922d48 100644 --- a/DBM-ZG/Jeklik.lua +++ b/DBM-ZG/Jeklik.lua @@ -62,7 +62,7 @@ function mod:SPELL_CAST_SUCCESS(args) elseif args:IsSpellID(340040) and args:GetSrcCreatureID(14965) then warnConcoc:Show(args.destName) TimerConcoc:Show(args.destName) - if args.destName == UnitName("player") then + if args:IsPlayer() then SendChatMessage("Unstable Concoction on me!", "YELL") end end diff --git a/DBM-ZulAman/Malacrass.lua b/DBM-ZulAman/Malacrass.lua index 2a42630..eda7d90 100644 --- a/DBM-ZulAman/Malacrass.lua +++ b/DBM-ZulAman/Malacrass.lua @@ -23,7 +23,7 @@ local warnPatch = mod:NewSpellAnnounce(43429, 3) local specWarnBolt = mod:NewSpecialWarningSpell(2136100) local specWarnHeal = mod:NewSpecialWarning("Interrupt Heal!")--#NewInterruptAnnounce(43548) -local specWarnBlindingLight = mod:NewSpecialWarning("Look Away!") +-- local specWarnBlindingLight = mod:NewSpecialWarning("Look Away!") -- It's a LOS mechanic -- local specWarnHeal2 = mod:NewSpecialWarning("Interrupt Heal!")--mod:NewInterruptAnnounce(43451) -- local specWarnHeal3 = mod:NewSpecialWarning("Interrupt Heal!")--mod:NewInterruptAnnounce(43431) -- local specWarnHeal4 = mod:NewSpecialWarning("Dispel!")--mod:NewSpecialWarningDispel(43421) @@ -37,7 +37,9 @@ local timerPatch = mod:NewCastTimer(20, 43429) local timerNextDrain = mod:NewNextTimer(60, 2136100) local warnDruidSoul = mod:NewSpecialWarning("Druid Soul Absorbed") -local timerNextTranquility = mod:NewNextTimer(5, 2136126) +local timerNextUrsol = mod:NewNextTimer(5, 2136123) +local timerNextSolar = mod:NewNextTimer(15, 2136125) +local timerNextTranquility = mod:NewNextTimer(25, 2136126) local timerCastTranquility = mod:NewCastTimer(10, 2136126) local warnHunterSoul = mod:NewSpecialWarning("Hunter Soul Absorbed") @@ -55,6 +57,7 @@ local timerRuneOfPowerduration = mod:NewTimer(10, "Rune of Power duration", 2136 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 +local warnYouLivingBomb = mod:NewSpecialWarningYou(2136141) --2136141 local warnPaladinSoul = mod:NewSpecialWarning("Paladin Soul Absorbed") local timerNextBlindingLight = mod:NewNextTimer(5, 2136155) @@ -87,8 +90,8 @@ local timerNextCurseOfDoom = mod:NewNextTimer(5, 2136177) --2136177, 2136178, 2 local timerCurseOfDoom = mod:NewTargetTimer(15, 2136177) 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) +local specWarnRainofFire = mod:NewSpecialWarningRun(2136186) +local specWarnHellfire = mod:NewSpecialWarningRun(2136182) local warnWarriorSoul = mod:NewSpecialWarning("Warrior Soul Absorbed") local timerNextSpellReflect = mod:NewNextTimer(5, 2136190) --2136190 @@ -97,6 +100,22 @@ local timerNextColossusSmash = mod:NewNextTimer(25, 2136193) --2136193 local timerColossusSmash = mod:NewTargetTimer(6, 2136193) --2136193 local timerSpellReflect = mod:NewTargetTimer(6, 2136190) --2136190 +local warnDeathKnightSoul = mod:NewSpecialWarning("Death Knight Soul Absorbed") +local timerNextArmy = mod:NewNextTimer(5, 2136284) +local timerNextDnD = mod:NewNextTimer(15, 2136297) +local timerNextAbsolute = mod:NewNextTimer(25, 2136292) +local timerCastAbsolute = mod:NewCastTimer(5, 2136292) +-- local timerColossusSmash = mod:NewTargetTimer(6, 2136193) --2136193 +-- local timerSpellReflect = mod:NewTargetTimer(6, 2136190) --2136190 + +-- Mythic/Ascended mechanics +local timerNextBloodScythe = mod:NewNextTimer(15, 2136280) +local warnBloodScythe = mod:NewSpecialWarningStack(2136280) + +local timerNextSiphon = mod:NewNextTimer(85, 2136260) -- 2136260, 2136261, 2136262, 2136263 +local timerNextWill = mod:NewNextTimer(15, 2107116) -- 2107116, 2107117, 2107118, 2107119 +local timerNextCorrupted = mod:NewNextTimer(20, 2136242) -- 2136242, 2136243, 2136244, 2136245 + function mod:OnCombatStart(delay) timerNextBolt:Start(10) warnBoltSoon:Schedule(5) @@ -109,7 +128,9 @@ function mod:SPELL_AURA_APPLIED(args) -- timerSiphon:Show(args.destName) if args:IsSpellID(2136114) then warnDruidSoul:Show() - timerNextTranquility:Start() + timerNextUrsol:Start() -- 2136123 + timerNextSolar:Start() -- 2136125 + timerNextTranquility:Start() -- 2136126 elseif args:IsSpellID(2136115) then warnHunterSoul:Show() timerNextMultiShot:Start() @@ -128,6 +149,9 @@ function mod:SPELL_AURA_APPLIED(args) timerRuneOfPowerduration:Start() elseif args:IsSpellID(2136141) then timerLivingBomb:Show(args.destName) + if args:IsPlayer() then + warnYouLivingBomb:Show() + end elseif args:IsSpellID(2136137, 2136138, 2136139, 2136140) then specWarnRainofFire:Show() elseif args:IsSpellID(2136117) then @@ -174,6 +198,19 @@ function mod:SPELL_AURA_APPLIED(args) timerSpellReflect:Show(args.destName) elseif args:IsSpellID(2136193) then timerColossusSmash:Show(args.destName) + elseif args:IsSpellID(2136283) then + warnDeathKnightSoul:Show() + timerNextArmy:Start() -- 2136284 + timerNextDnD:Start() -- 2136297 + timerNextAbsolute:Start() -- 2136292 + elseif args:IsSpellID(2136292, 2136293, 2136294, 2136295) then + timerCastAbsolute:Start() + elseif args:IsSpellID(2136280) and (args.amount and args.amount >= 5) then + warnBloodScythe:Show() + elseif args:IsSpellID(2107116) then + timerNextWill:Show() + elseif args:IsSpellID(2136242) then + timerNextCorrupted:Show() end end @@ -192,7 +229,7 @@ function mod:SPELL_CAST_START(args) specWarnHeal:Show() elseif args:IsSpellID(2136155) then timerCastBlindingLight:Start() - specWarnBlindingLight:Show() + -- specWarnBlindingLight:Show() -- It's a LOS mechanic end end @@ -203,6 +240,10 @@ function mod:SPELL_CAST_SUCCESS(args) timerBolt:Start() timerNextBolt:Start() timerNextDrain:Schedule(10) + elseif args:IsSpellID(2136280) then + timerNextBloodScythe:Start() + elseif args:IsSpellID(2136260, 2136261, 2136262, 2136263) then + timerNextSiphon:Start() -- 2136260, 2136261, 2136262, 2136263 end end diff --git a/DBM-ZulAman/Zul'jin.lua b/DBM-ZulAman/Zul'jin.lua index f26198b..eca0c46 100644 --- a/DBM-ZulAman/Zul'jin.lua +++ b/DBM-ZulAman/Zul'jin.lua @@ -37,6 +37,8 @@ local specWarnTurbulentWinds = mod:NewSpecialWarningYou(2136342) local warnTurbulentWindsTarget = mod:NewTargetAnnounce(2136342, 4) local warnStorm = mod:NewTargetAnnounce(2135724, 4) local specWarnStorm = mod:NewSpecialWarningSpell(2135724) +local timerNextBladestorm = mod:NewNextTimer(45, 2136315) +local timerBladestorm = mod:NewCastTimer(15, 2136315) local warnPhaseBear = mod:NewSpecialWarningSpell(2136337) --2136337, Shape of the Eagle, ASC D0 T5 local timerNextDeafeningRoar = mod:NewNextTimer(15, 2135829) --2135829, 2135830, 2135831, 2135832 @@ -61,6 +63,10 @@ local specWarnSpiritLink = mod:NewSpecialWarningRun(2136414) --2136413, 2136414 local timerNextGrievous = mod:NewNextTimer(10, 2136300) --2136301, 2136302, 2136303 local timerNextWhirlwind = mod:NewNextTimer(45, 2136316) --2136316, Whirlwind local timerNextImpale = mod:NewNextTimer(45, 2136304) --2136304, 2136305, 2136306, 2136307, 2136308, 2136309 +local timerNextScentOfCorruption = mod:NewNextTimer(35, 2136464) -- 2136464, 2136465, Scent of Corruption + +local specWarnBloodScythe = mod:NewSpecialWarningYou(2136461) +local warnBloodScythe = mod:NewTargetAnnounce(2136461, 4) mod.vb.phase = 1 local eosSpam = 0 @@ -92,10 +98,22 @@ function mod:LightningStrike() self:ScheduleMethod(10,"LightningStrike") end +function mod:BloodScythe() + local target = nil + local myName = UnitName("player") + target = mod:GetBossTarget(14982) + if target == myName then + specWarnBloodScythe:Show() + SendChatMessage(L.DBM_BLOOD_SCYTHE, "YELL") + else + warnBloodScythe:Show(target) + end +end + function mod:TurbulentWinds() local target = nil local myName = UnitName("player") - target = mod:GetBossTarget(80468) -- need to confirm ID ! + target = mod:GetBossTarget(23863) -- need to confirm ID ! if target == myName then specWarnTurbulentWinds:Show(target) SendChatMessage(L.DBM_TURBULENT_WINDS, "YELL") @@ -149,6 +167,10 @@ function mod:SPELL_AURA_APPLIED(args) self:PhaseIncrease() warnPhaseLynx:Show() end + elseif args:IsSpellID(2136315) then + timerBladestorm:Start() + timerNextImpale:Start(27) + timerNextBladestorm:Start() end end @@ -158,30 +180,47 @@ function mod:SPELL_CAST_SUCCESS(args) timerNextTurbulentWinds:Start() self:ScheduleMethod(10, "WallMechanic", "Lightning") self:PhaseIncrease() + timerNextImpale:Cancel() + timerNextWhirlwind:Cancel() + timerNextScentOfCorruption:Cancel() elseif args:IsSpellID(2136337) then --Phase 2-3-4-5 warnPhaseBear:Show() timerNextDeafeningRoar:Start(8) timerNextStampede:Start() self:ScheduleMethod(10, "WallMechanic", "Bear") self:PhaseIncrease() + timerNextImpale:Cancel() + timerNextWhirlwind:Cancel() + timerNextScentOfCorruption:Cancel() elseif args:IsSpellID(2136357) then --Phase 2-3-4-5 warnPhaseDragonhawk:Show() timerNextScorchingBreath:Start() timerNextArmageddon:Start() timerNextFlameWhirl:Start(1.5) self:PhaseIncrease() + timerNextImpale:Cancel() + timerNextWhirlwind:Cancel() + timerNextScentOfCorruption:Cancel() elseif args:IsSpellID(2136376) then --Phase 2-3-4-5 warnPhaseLynx:Show() self:PhaseIncrease() timerNextLynxRush:Start() - elseif args:IsSpellID(2136316) then - timerNextWhirlwind:Start() + timerNextWhirlwind:Cancel() + timerNextScentOfCorruption:Cancel() + elseif args:IsSpellID(2136315) then + timerNextImpale:Cancel() elseif args:IsSpellID(2136402) then timerBombCast:Start() specWarnBomb:Show() elseif args:IsSpellID(2136363) then timerFlameWhirlCast:Start() timerNextFlameWhirl:Start() -- timer is probably wrong + elseif args:IsSpellID(2136304,2136305,2136306,2136307) then + timerNextImpale:Start(45) + timerNextWhirlwind:Start(18) + if mod:IsDifficulty("heroic10", "heroic25") then + timerNextScentOfCorruption:Start(20) + end end end @@ -190,6 +229,8 @@ function mod:SPELL_CAST_START(args) timerNextTurbulentWinds:Start() timerCastTurbulentWinds:Start() self:ScheduleMethod(0.2, "TurbulentWinds") + elseif args:IsSpellID(2136461) then + self:ScheduleMethod(0.2, "BloodScythe") end end @@ -234,5 +275,4 @@ function mod:UNIT_DIED(args) else return end - print("Should only appear if phase = 10, otherwise contact DBM developers.") end diff --git a/DBM-ZulAman/localization.en.lua b/DBM-ZulAman/localization.en.lua index 7220b8b..d1fc4c7 100644 --- a/DBM-ZulAman/localization.en.lua +++ b/DBM-ZulAman/localization.en.lua @@ -53,7 +53,7 @@ L:SetOptionLocalization{ L:SetMiscLocalization{ DBM_ROD_PLAYER = "Lightnig rod on "..UnitName("PLAYER").."! I have to run!", DBM_EOS_PLAYER = "Eye of storm on "..UnitName("PLAYER").."! Get under me!", - DBM_TURBULENT_WINDS = "Turbulent winds on "..UnitName("PLAYER")..", Position! Move!" + DBM_TURBULENT_WINDS = "Turbulent winds on "..UnitName("PLAYER")"!" } --------------- @@ -129,11 +129,14 @@ L:SetGeneralLocalization{ } L:SetMiscLocalization{ - YellPhase2 = "Got me some new tricks... like me brudda bear....", - YellPhase3 = "Dere be no hidin' from da eagle!", - YellPhase4 = "Let me introduce you to me new bruddas: fang and claw!", - YellPhase5 = "Ya don' have to look to da sky to see da dragonhawk!", - DBM_JANALAI_HATCHERS = "Where ma hatcha? Get to work on dem eggs!", - DBM_ROD_PLAYER = "Lightnig rod on "..UnitName("PLAYER").."! I have to run!", - DBM_EOS_PLAYER = "Eye of storm on "..UnitName("PLAYER").."! Get under me!" + YellPhase2 = "Got me some new tricks... like me brudda bear....", + YellPhase3 = "Dere be no hidin' from da eagle!", + YellPhase4 = "Let me introduce you to me new bruddas: fang and claw!", + YellPhase5 = "Ya don' have to look to da sky to see da dragonhawk!", + DBM_JANALAI_HATCHERS = "Where ma hatcha? Get to work on dem eggs!", + DBM_ROD_PLAYER = "Lightnig rod on "..UnitName("PLAYER").."! I have to run!", + DBM_EOS_PLAYER = "Eye of storm on "..UnitName("PLAYER").."! Get under me!", + DBM_TURBULENT_WINDS = "Turbulent winds on "..UnitName("PLAYER").."!", + DBM_BLOOD_SCYTHE = "Massive Blood Scythe on "..UnitName("PLAYER"), + DBM_BLOOD_ORBS = "Blood orbs on"..UnitName("PLAYER").."! " }