106 lines
2.6 KiB
Lua
106 lines
2.6 KiB
Lua
local mod = DBM:NewMod("Huhuran", "DBM-AQ40", 1)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 185 $"):sub(12, -3))
|
|
mod:SetCreatureID(15509)
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_AURA_APPLIED_DOSE",
|
|
"SPELL_AURA_REMOVED",
|
|
"UNIT_HEALTH",
|
|
"PLAYER_ALIVE"
|
|
)
|
|
|
|
local warnSoon = mod:NewAnnounce("Adds Soon", 2, 1002077)
|
|
local warnSpawn = mod:NewAnnounce("Adds Spawned", 3, 1002077)
|
|
local prewarnSoftEnrage = mod:NewAnnounce("Soft Enrage Soon", 2, 1002304)
|
|
local warnSoftEnrage = mod:NewAnnounce("Soft Enrage Now", 3, 1002304)
|
|
local timerSpawn = mod:NewTimer(60, "Adds", 1002077)
|
|
|
|
local warnSting = mod:NewTargetAnnounce(26180, 2)
|
|
local warnAcid = mod:NewAnnounce("WarnAcid", 3)
|
|
|
|
local timerSting = mod:NewBuffActiveTimer(12, 26180)
|
|
local timerStingCD = mod:NewCDTimer(20, 26180)
|
|
local timerAcid = mod:NewTargetTimer(30, 26050)
|
|
|
|
local specWarnAcid = mod:NewSpecialWarningStack(26050, nil, 10)
|
|
|
|
local berserkTimer = mod:NewBerserkTimer(420)
|
|
local StingTargets = {}
|
|
local check1
|
|
local check2
|
|
|
|
function mod:OnCombatStart(delay)
|
|
berserkTimer:Start(-delay)
|
|
self:ScheduleMethod(0-delay, "initialSpawn")
|
|
table.wipe(StingTargets)
|
|
check1 = 0
|
|
check2 = 0
|
|
end
|
|
|
|
function mod:Soon()
|
|
warnSoon:Show()
|
|
end
|
|
|
|
function mod:Spawn()
|
|
warnSpawn:Show()
|
|
end
|
|
|
|
function mod:initialSpawn()
|
|
timera = 10
|
|
timerSpawn:Start(timera)
|
|
self:ScheduleMethod(timera-5,"Soon")
|
|
self:ScheduleMethod(timera, "Spawn")
|
|
self:ScheduleMethod(timera, "reSpawn")
|
|
end
|
|
|
|
function mod:reSpawn()
|
|
timerb = 30
|
|
timerSpawn:Start(timerb)
|
|
self:ScheduleMethod(timerb-5,"Soon")
|
|
self:ScheduleMethod(timerb, "Spawn")
|
|
self:ScheduleMethod(timerb, "reSpawn")
|
|
end
|
|
|
|
local function warnStingTargets()
|
|
warnSting:Show(table.concat(StingTargets, "<, >"))
|
|
timerSting:Start()
|
|
table.wipe(StingTargets)
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args:IsSpellID(26180) then
|
|
StingTargets[#StingTargets + 1] = args.destName
|
|
self:Unschedule(warnStingTargets)
|
|
self:Schedule(0.3, warnStingTargets)
|
|
elseif args:IsSpellID(26050) then
|
|
warnAcid:Show(args.spellName, args.destName, args.amount or 1)
|
|
timerAcid:Start(args.destName)
|
|
if args:IsPlayer() and (args.amount or 1) >= 10 then
|
|
specWarnAcid:Show()
|
|
end
|
|
end
|
|
end
|
|
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
if args:IsSpellID(26180) then
|
|
timerSting:Cancel()
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_HEALTH(args)
|
|
huhuranHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
|
|
|
|
if huhuranHealth < 35 and check1 == 0 then
|
|
check1 = 1
|
|
prewarnSoftEnrage:Show()
|
|
elseif skeramHealth < 30 and check2 == 0 then
|
|
check2 = 1
|
|
warnSoftEnrage:Show()
|
|
end
|
|
end |