90 lines
2.5 KiB
Lua
90 lines
2.5 KiB
Lua
local mod = DBM:NewMod("Chromaggus", "DBM-BWL", 1)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 188 $"):sub(12, -3))
|
|
mod:SetCreatureID(14020)
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_START",
|
|
"SPELL_CAST_SUCCESS",
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_AURA_REMOVED",
|
|
"UNIT_HEALTH"
|
|
)
|
|
|
|
local warnBreathSoon = mod:NewAnnounce("WarnBreathSoon", 1, 23316)
|
|
local warnBreath = mod:NewAnnounce("WarnBreath", 2, 23316)
|
|
local warnRed = mod:NewTargetAnnounce(23155, 2, nil, false)
|
|
local warnGreen = mod:NewTargetAnnounce(23169, 2, nil, false)
|
|
local warnBlue = mod:NewTargetAnnounce(23153, 2, nil, false)
|
|
local warnBlack = mod:NewTargetAnnounce(23154, 2, nil, false)
|
|
local warnBronze = mod:NewSpellAnnounce(23170, 2)
|
|
local warnEnrage = mod:NewSpellAnnounce(23128)
|
|
local warnPhase2Soon = mod:NewAnnounce("WarnPhase2Soon")
|
|
local warnPhase2 = mod:NewPhaseAnnounce(2)
|
|
|
|
local specWarnBronze = mod:NewSpecialWarningYou(23170)
|
|
|
|
local timerBreath = mod:NewTimer(2, "TimerBreath")
|
|
local timerBreathCD = mod:NewTimer(60, "TimerBreathCD")
|
|
local timerEnrage = mod:NewBuffActiveTimer(8, 23128)
|
|
|
|
|
|
local prewarn_P2
|
|
function mod:OnCombatStart(delay)
|
|
warnBreathSoon:Schedule(25-delay)
|
|
timerBreathCD:Start(30-delay, "Breath 1")
|
|
timerBreathCD:Start(-delay, "Breath 2")
|
|
prewarn_P2 = false;
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if args:IsSpellID(23309, 23313, 23189, 23316) or args:IsSpellID(23312) then
|
|
warnBreathSoon:Cancel()
|
|
warnBreathSoon:Schedule(25)
|
|
warnBreath:Show(args.spellName)
|
|
timerBreath:Start(args.spellName)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if args:IsSpellID(23170) then
|
|
warnBronze:Show()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args:IsSpellID(23155) then
|
|
warnRed:Show(args.destName)
|
|
elseif args:IsSpellID(23169) then
|
|
warnGreen:Show(args.destName)
|
|
elseif args:IsSpellID(23153) then
|
|
warnBlue:Show(args.destName)
|
|
elseif args:IsSpellID(23154) then
|
|
warnBlack:Show(args.destName)
|
|
elseif args:IsSpellID(23170) then
|
|
warnBronze:Show()
|
|
if args:IsPlayer() then
|
|
specWarnBronze:Show()
|
|
end
|
|
elseif args:IsSpellID(23128) then
|
|
warnEnrage:Show()
|
|
timerEnrage:Start()
|
|
elseif args:IsSpellID(23537) then
|
|
warnPhase2:Show()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
if args:IsSpellID(23128) then
|
|
timerEnrage:Cancel()
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_HEALTH(uId)
|
|
if UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and self:GetUnitCreatureId(uId) == 14020 and not prewarn_P2 then
|
|
warnPhase2Soon:Show()
|
|
prewarn_P2 = true
|
|
end
|
|
end |