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.
161 lines
5.2 KiB
161 lines
5.2 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Cordana Felsong", 1493, 1470)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(95888)
|
|
mod.engageId = 1818
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local warnedForStealLight = nil
|
|
local warnedForCreepingDoom = nil
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.kick_combo = "Kick Combo"
|
|
L.kick_combo_desc = "{197251}\n{197250}" -- Knockdown Kick & Turn Kick
|
|
L.kick_combo_icon = 197251
|
|
|
|
L.light_dropped = "%s dropped the Light."
|
|
L.light_picked = "%s picked up the Light."
|
|
|
|
L.warmup_text = "Cordana Felsong Active"
|
|
L.warmup_trigger = "I have what I was after. But I stayed just so that I could put an end to you... once and for all!"
|
|
L.warmup_trigger_2 = "And now you fools have fallen into my trap. Let's see how you fare in the dark."
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
"warmup",
|
|
197333, -- Fel Glaive
|
|
{206567, "FLASH"}, -- Stolen Light
|
|
{197422, "FLASH"}, -- Creeping Doom
|
|
197796, -- Avatar of Vengeance
|
|
"kick_combo",
|
|
204481, -- Elune's Light
|
|
213583, -- Deepening Shadows
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterEvent("CHAT_MSG_MONSTER_SAY", "Warmup")
|
|
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
|
|
self:Log("SPELL_CAST_SUCCESS", "ElunesLight", 204481)
|
|
self:Log("SPELL_CAST_SUCCESS", "FelGlaive", 197333)
|
|
self:Log("SPELL_AURA_APPLIED", "StolenLight", 206567)
|
|
self:Log("SPELL_AURA_REMOVED", "StolenLightRemoved", 206567)
|
|
self:Log("SPELL_CAST_START", "CreepingDoom", 197422, 213685)
|
|
self:Log("SPELL_AURA_REMOVED", "CreepingDoomRemoved", 197422)
|
|
self:Log("SPELL_CAST_START", "KnockdownKick", 197251) -- used for kick_combo
|
|
self:Death("AvatarDeath", 100351)
|
|
self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1")
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
warnedForStealLight = nil
|
|
warnedForCreepingDoom = nil
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:Warmup(event, msg)
|
|
if msg == L.warmup_trigger then
|
|
self:UnregisterEvent(event)
|
|
self:Bar("warmup", 17.8, L.warmup_text, "achievement_dungeon_vaultofthewardens")
|
|
elseif msg == L.warmup_trigger_2 then
|
|
self:UnregisterEvent(event)
|
|
self:Bar("warmup", 5.5, L.warmup_text, "achievement_dungeon_vaultofthewardens")
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev, prevGUID = 0, nil
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, unit, castGUID, spellId)
|
|
if unit == "boss1" then
|
|
if spellId == 197796 then -- Avatar of Vengeance
|
|
self:MessageOld(spellId, "orange", "long")
|
|
self:Bar(spellId, 45)
|
|
elseif spellId == 213583 or spellId == 197578 or spellId == 226312 or spellId == 213576 then -- Deepening Shadows
|
|
local t = GetTime()
|
|
if t-prev > 2 then
|
|
prev = t
|
|
self:MessageOld(213583, "yellow", "alarm")
|
|
end
|
|
end
|
|
elseif spellId == 228210 and castGUID ~= prevGUID then -- Elune's Light picked up
|
|
prevGUID = castGUID
|
|
self:MessageOld(204481, "green", "long", L.light_picked:format(self:ColorName(self:UnitName(unit))))
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:ElunesLight(args)
|
|
self:MessageOld(args.spellId, "cyan", "long", L.light_dropped:format(self:ColorName(args.sourceName)))
|
|
end
|
|
|
|
function mod:FelGlaive(args)
|
|
self:MessageOld(args.spellId, "red", "alert")
|
|
end
|
|
|
|
function mod:StolenLight(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "orange", "alarm")
|
|
if self:Me(args.destGUID) then
|
|
self:Flash(args.spellId)
|
|
end
|
|
self:StopBar(L.kick_combo)
|
|
end
|
|
|
|
function mod:StolenLightRemoved(args)
|
|
self:MessageOld(args.spellId, "cyan", "info", CL.removed:format(args.spellName))
|
|
self:CDBar("kick_combo", 16, L.kick_combo, L.kick_combo_icon)
|
|
end
|
|
|
|
function mod:CreepingDoom(args)
|
|
self:MessageOld(197422, "red", "info", CL.incoming:format(args.spellName))
|
|
self:Flash(197422)
|
|
if args.spellId == 197422 then
|
|
self:StopBar(L.kick_combo)
|
|
self:Bar(197422, 35, CL.cast:format(args.spellName))
|
|
end
|
|
end
|
|
|
|
function mod:CreepingDoomRemoved(args)
|
|
self:MessageOld(args.spellId, "cyan", "info", CL.over:format(args.spellName))
|
|
self:CDBar("kick_combo", 16, L.kick_combo, L.kick_combo_icon)
|
|
end
|
|
|
|
function mod:KnockdownKick()
|
|
self:MessageOld("kick_combo", "yellow", self:Tank() and "warning", L.kick_combo, L.kick_combo_icon)
|
|
self:CDBar("kick_combo", 16, L.kick_combo, L.kick_combo_icon)
|
|
end
|
|
|
|
function mod:AvatarDeath()
|
|
self:MessageOld(197796, "green", "long", CL.removed:format(self:SpellName(205004))) -- Vengeance removed
|
|
end
|
|
|
|
function mod:UNIT_HEALTH(event, unit)
|
|
local hp = UnitHealth(unit) / UnitHealthMax(unit) * 100
|
|
if hp < 80 and not warnedForStealLight then
|
|
warnedForStealLight = true
|
|
self:MessageOld(206567, "yellow", nil, CL.soon:format(self:SpellName(206387))) -- Steal Light soon
|
|
elseif hp < 45 and not warnedForCreepingDoom then
|
|
warnedForCreepingDoom = true
|
|
self:MessageOld(197422, "red", nil, CL.soon:format(self:SpellName(197422))) -- Creeping Doom soon
|
|
self:UnregisterUnitEvent(event, unit)
|
|
end
|
|
end
|
|
|