Files
coa-dbm/DBM-BWL/Nefarian.lua
T
Szyler 82a9ac0937 Update to 5.21 Sunwell (#6)
* 5.20

* Update to 5.21

---------

Co-authored-by: Szyler <Szyler@Szyler.com>
2024-09-30 20:09:41 -07:00

112 lines
3.2 KiB
Lua

local mod = DBM:NewMod("Nefarian", "DBM-BWL", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 188 $"):sub(12, -3))
mod:SetCreatureID(11583)
mod:RegisterCombat("yell", L.YellPull)
mod:SetWipeTime(25)--guesswork
mod:RegisterEvents(
"SPELL_CAST_START",
"SPELL_AURA_APPLIED",
"SPELL_AURA_REMOVED",
"UNIT_HEALTH",
"CHAT_MSG_MONSTER_YELL"
)
--197216 Fear ID
--19202 Massive Shadow Flame Bolt
--197221 - Shadow Flame Breath 20 sec ICD
--Start timer on first bellowing roar
--45 sec CD on fear
--30 sec after first breath, class call
--
local warnClassCallSoon = mod:NewAnnounce("WarnClassCallSoon", 2)
local warnClassCall = mod:NewAnnounce("WarnClassCall", 3)
local warnPhaseSoon = mod:NewAnnounce("WarnPhaseSoon", 2)
local warnPhase = mod:NewAnnounce("WarnPhase", 3)
local warnShadowFlame = mod:NewCastAnnounce(22539, 2)
local warnFear = mod:NewCastAnnounce(197216, 2)
local warnVeilShadow = mod:NewTargetAnnounce(22687, 3)
local warnMC = mod:NewTargetAnnounce(22667, 4)
local timerClassCall = mod:NewTimer(30, "TimerClassCall")
local timerShadowFlame = mod:NewCastTimer(2, 22539)
local timerFearNext = mod:NewNextTimer(45, 197216)
local timerVeilShadow = mod:NewTargetTimer(6, 22687)
local timerMC = mod:NewTargetTimer(15, 22667)
local prewarn_P3
function mod:OnCombatStart(delay)
prewarn_P3 = false
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(22539) and self:IsInCombat() then
warnShadowFlame:Show()
timerShadowFlame:Start()
elseif args:IsSpellID(197216) and self:IsInCombat() then
warnFear:Show()
timerFearNext:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(22687) then
warnVeilShadow:Show(args.destName)
timerVeilShadow:Start(args.destName)
elseif args:IsSpellID(22667) then
warnMC:Show(args.destName)
timerMC:Start(args.destName)
end
end
function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(22687) then
timerVeilShadow:Cancel(args.destName)
end
end
function mod:UNIT_HEALTH(uId)
if UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and self:GetUnitCreatureId(uId) == 11583 and not prewarn_P3 then
warnPhaseSoon:Show("3")
prewarn_P3 = true
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.YellDK then
self:SendSync("ClassCall", "DK")
elseif msg == L.YellDruid then
self:SendSync("ClassCall", "Druid")
elseif msg == L.YellHunter then
self:SendSync("ClassCall", "Hunter")
elseif msg == L.YellMage then
self:SendSync("ClassCall", "Mage")
elseif msg == L.YellPaladin then
self:SendSync("ClassCall", "Paladin")
elseif msg == L.YellPriest then
self:SendSync("ClassCall", "Priest")
elseif msg == L.YellRogue then
self:SendSync("ClassCall", "Rogue")
elseif msg == L.YellShaman then
self:SendSync("ClassCall", "Shaman")
elseif msg == L.YellWarlock then
self:SendSync("ClassCall", "Warlock")
elseif msg == L.YellWarrior then
self:SendSync("ClassCall", "Warrior")
elseif msg == L.YellPhase2 then
self:SendSync("Phase", 2)
elseif msg == L.YellPhase3 then
self:SendSync("Phase", 3)
end
end
function mod:OnSync(msg, arg)
if msg == "ClassCall" then
warnClassCallSoon:Schedule(25)
warnClassCall:Show(arg)
timerClassCall:Start(arg)
elseif msg == "Phase" then
warnPhase:Show(arg)
end
end