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.
136 lines
3.8 KiB
136 lines
3.8 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Adderis and Aspix", 1877, 2142)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(133379, 133944) -- Adderis, Aspix
|
|
mod.engageId = 2124
|
|
mod.respawnTime = 20
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local cycloneStrikeCount = 0
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
{263246, "ICON"}, -- Lightning Shield
|
|
263257, -- Static Shock
|
|
{263371, "SAY", "SAY_COUNTDOWN"}, -- Conduction
|
|
263424, -- Arc Dash
|
|
{263309, "SAY", "FLASH"}, -- Cyclone Strike
|
|
}, {
|
|
[263246] = "general",
|
|
[263257] = -18484, -- Aspix
|
|
[263424] = -18485, -- Adderis
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterUnitEvent("UNIT_POWER_FREQUENT", nil, "boss1", "boss2")
|
|
self:Log("SPELL_AURA_APPLIED", "LightningShield", 263246)
|
|
self:Log("SPELL_AURA_APPLIED", "Conduction", 263371)
|
|
self:Log("SPELL_AURA_REMOVED", "ConductionRemoved", 263371)
|
|
self:Log("SPELL_CAST_START", "CycloneStrike", 263309)
|
|
self:Log("SPELL_CAST_START", "StaticShock", 263257)
|
|
self:Death("BossDeath", 133379, 133944)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
cycloneStrikeCount = 0
|
|
self:Bar(263309, 8.5) -- Cyclone Strike
|
|
self:Bar(263371, 22.5) -- Conduction
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
do
|
|
local prevDash = 0
|
|
local prevShieldGUID = nil
|
|
function mod:UNIT_POWER_FREQUENT(event, unit)
|
|
local guid = self:UnitGUID(unit)
|
|
local t = GetTime()
|
|
-- Adderis gets 100 energy when he dies
|
|
if t-prevDash > 2 and self:MobId(guid) == 133379 and not UnitIsDead(unit) then -- Adderis
|
|
if UnitPower(unit) == 100 then
|
|
prevDash = t
|
|
self:Message(263424, "orange") -- Arc Dash
|
|
self:PlaySound(263424, "alert") -- Arc Dash
|
|
end
|
|
end
|
|
if guid ~= prevShieldGUID and UnitPower(unit) == 0 then
|
|
prevShieldGUID = guid
|
|
self:Bar(263246, 4) -- Lightning Shield
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:LightningShield(args)
|
|
self:Message(args.spellId, "cyan", CL.other:format(args.spellName, args.destName))
|
|
self:PlaySound(args.spellId, "info")
|
|
local otherBoss = self:UnitGUID("boss1") == args.destGUID and "boss2" or "boss1"
|
|
self:PrimaryIcon(args.spellId, otherBoss)
|
|
if self:MobId(args.destGUID) == 133379 then -- Adderis
|
|
self:Bar(263424, 20) -- Arc Dash
|
|
else -- Aspix
|
|
if cycloneStrikeCount ~= 0 then -- Timer is slightly different from the first
|
|
self:Bar(263309, 6.5) -- Cyclone Strike
|
|
end
|
|
self:Bar(263257, 20) -- Static Shock
|
|
end
|
|
end
|
|
|
|
function mod:Conduction(args)
|
|
self:TargetMessage(args.spellId, "orange", args.destName)
|
|
if self:Me(args.destGUID) then
|
|
self:PlaySound(args.spellId, "warning")
|
|
self:Say(args.spellId)
|
|
self:SayCountdown(args.spellId, 5)
|
|
end
|
|
end
|
|
|
|
function mod:ConductionRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
self:CancelSayCountdown(args.spellId)
|
|
end
|
|
end
|
|
|
|
do
|
|
local function printTarget(self, name, guid)
|
|
if self:Me(guid) then
|
|
self:Say(263309) -- Cyclone Strike
|
|
self:Flash(263309) -- Cyclone Strike
|
|
end
|
|
end
|
|
|
|
function mod:CycloneStrike(args)
|
|
cycloneStrikeCount = cycloneStrikeCount + 1
|
|
if cycloneStrikeCount % 2 == 1 then
|
|
self:Bar(args.spellId, 13.5)
|
|
end
|
|
self:GetBossTarget(printTarget, 0.3, args.sourceGUID)
|
|
self:Message(args.spellId, "yellow")
|
|
self:PlaySound(args.spellId, "alert")
|
|
self:CastBar(args.spellId, 2.5)
|
|
end
|
|
end
|
|
|
|
function mod:StaticShock(args)
|
|
self:Message(args.spellId, "orange")
|
|
self:PlaySound(args.spellId, "alarm")
|
|
self:CastBar(args.spellId, 2)
|
|
end
|
|
|
|
function mod:BossDeath(args)
|
|
self:StopBar(263424) -- Arc Dash
|
|
self:StopBar(263257) -- Static Shock
|
|
end
|
|
|