You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.8 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Galvazzt", 1877, 2144)
if not mod then return end
mod:RegisterEnableMob(133389)
mod.engageId = 2126
mod.respawnTime = 25
--------------------------------------------------------------------------------
-- Locals
--
local galvanizeList = {}
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.percent = "%s (%d%%)"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
{266923, "INFOBOX"}, -- Galvanize
266512, -- Consume Charge
}
end
function mod:OnBossEnable()
self:RegisterUnitEvent("UNIT_POWER_FREQUENT", nil, "boss1")
self:Log("SPELL_AURA_APPLIED", "Galvanize", 266923)
self:Log("SPELL_AURA_APPLIED_DOSE", "GalvanizeStack", 266923)
self:Log("SPELL_AURA_REMOVED", "GalvanizeRemoved", 266923)
self:Log("SPELL_AURA_APPLIED", "GalvanizeOnBoss", 265986) -- Spell aura on boss is called 'Arc'
self:Log("SPELL_CAST_START", "ConsumeCharge", 266512)
end
function mod:OnEngage()
galvanizeList = {}
self:OpenInfo(266923, self:SpellName(266923)) -- Galvanize
end
--------------------------------------------------------------------------------
-- Event Handlers
--
do
local prev = 0
function mod:UNIT_POWER_FREQUENT(_, unit, powerType)
if powerType == "ALTERNATE" then
local t = GetTime()
if t-prev > (self:Normal() and 3 or 0.5) then
prev = t
local power = UnitPower(unit, 10) -- Alternate power, max 100
if power > 0 then
self:Message(266512, "orange", L.percent:format(self:SpellName(266512), power)) -- Consume Charge
self:PlaySound(266512, "alarm") -- Consume Charge
end
end
end
end
end
function mod:Galvanize(args)
galvanizeList[args.destName] = 1
self:SetInfoByTable(args.spellId, galvanizeList)
end
function mod:GalvanizeStack(args)
galvanizeList[args.destName] = args.amount
self:SetInfoByTable(args.spellId, galvanizeList)
if self:Me(args.destGUID) then
if args.amount % 3 == 0 then
self:StackMessage(args.spellId, args.destName, args.amount, "blue")
if args.amount > 6 then
self:PlaySound(args.spellId, "info")
end
end
end
end
function mod:GalvanizeRemoved(args)
galvanizeList[args.destName] = 0
self:SetInfoByTable(args.spellId, galvanizeList)
end
function mod:GalvanizeOnBoss(args)
self:Message(266923, "orange", -18921) -- Galvanize, Energy Core
self:PlaySound(266923, "alert")
end
function mod:ConsumeCharge(args)
self:Message(args.spellId, "red")
self:PlaySound(args.spellId, "warning")
self:CastBar(args.spellId, 3)
end