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.

103 lines
2.8 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Gatewatcher Iron-Hand", 554)
if not mod then return end
mod:RegisterEnableMob(19710)
-- mod.engageId = 1934 -- no boss frames
-- mod.respawnTime = 0 -- resets, doesn't respawn
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.bossName = "Gatewatcher Iron-Hand"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
39193, -- Shadow Power
35311, -- Stream of Machine Fluid
39194, -- Jackhammer
}
end
function mod:OnRegister()
self.displayName = L.bossName -- no journal entry
end
function mod:OnBossEnable()
self:RegisterEvent("CHAT_MSG_RAID_BOSS_EMOTE")
self:Log("SPELL_CAST_START", "ShadowPower", 39193, 35322) -- normal, heroic
self:Log("SPELL_AURA_APPLIED", "ShadowPowerApplied", 39193, 35322)
self:Log("SPELL_AURA_REMOVED", "ShadowPowerRemoved", 39193, 35322)
self:Log("SPELL_AURA_APPLIED", "StreamOfMachineFluid", 35311)
self:Log("SPELL_AURA_REMOVED", "StreamOfMachineFluidRemoved", 35311)
self:Log("SPELL_DAMAGE", "JackhammersDamage", 39195)
self:Log("SPELL_MISSED", "JackhammersDamage", 39195)
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:CHAT_MSG_RAID_BOSS_EMOTE(_, _, source)
if source == self.displayName then
self:MessageOld(39194, "yellow", "long", CL.casting:format(self:SpellName(39194)))
self:CastBar(39194, 10) -- 3s cast + ~7s channel
end
end
function mod:ShadowPower(args)
self:MessageOld(39193, "red", nil, CL.casting:format(args.spellName))
end
function mod:ShadowPowerApplied()
self:Bar(39193, 15)
end
function mod:ShadowPowerRemoved()
self:StopBar(39193)
end
do
local playerList, playersAffected = mod:NewTargetList(), 0
function mod:StreamOfMachineFluid(args)
playersAffected = playersAffected + 1
playerList[#playerList + 1] = args.destName
if #playerList == 1 then
self:Bar(args.spellId, 10)
self:ScheduleTimer("TargetMessageOld", 0.3, args.spellId, playerList, "orange", "alarm", nil, nil, self:Dispeller("poison"))
end
end
function mod:StreamOfMachineFluidRemoved(args)
playersAffected = playersAffected - 1
if playersAffected == 0 then
self:StopBar(args.spellName)
end
end
end
do
local prev = 0
function mod:JackhammersDamage(args)
if self:Me(args.destGUID) then
local t = GetTime()
if t - prev > (self:Melee() and 6 or 1.5) then
prev = t
self:MessageOld(39194, "blue", "alert", CL.you:format(self:SpellName(39194))) -- args.spellName is "Jackhammer Effect"
end
end
end
end