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.

121 lines
3.9 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Odyn", 1477, 1489)
if not mod then return end
mod:RegisterEnableMob(95676)
mod.engageId = 1809
mod.respawnTime = 30
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.custom_on_autotalk = "Autotalk"
L.custom_on_autotalk_desc = "Instantly selects the gossip option to start the fight."
L.gossip_available = "Gossip available"
L.gossip_trigger = "Most impressive! I never thought I would meet anyone who could match the Valarjar's strength... and yet here you stand."
L[197963] = "|cFF800080Top Right|r (|T1323037:15:15:0:0:64:64:4:60:4:60|t)" -- Boss_OdunRunes_Purple
L[197964] = "|cFFFFA500Bottom Right|r (|T1323039:15:15:0:0:64:64:4:60:4:60|t)" -- Boss_OdunRunes_Orange
L[197965] = "|cFFFFFF00Bottom Left|r (|T1323038:15:15:0:0:64:64:4:60:4:60|t)" -- Boss_OdunRunes_Yellow
L[197966] = "|cFF0000FFTop Left|r (|T1323035:15:15:0:0:64:64:4:60:4:60|t)" -- Boss_OdunRunes_Blue
L[197967] = "|cFF008000Top|r (|T1323036:15:15:0:0:64:64:4:60:4:60|t)" -- Boss_OdunRunes_Green
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
"custom_on_autotalk",
"warmup",
197961, -- Runic Brand
198263, -- Radiant Tempest
200988, -- Spear of Light
198077, -- Shatter Spears
}
end
function mod:OnBossEnable()
self:RegisterEvent("CHAT_MSG_MONSTER_YELL", "Warmup")
self:Log("SPELL_CAST_START", "RunicBrand", 197961)
self:Log("SPELL_AURA_APPLIED", "RunicBrandYou", 197963, 197964, 197965, 197966, 197967)
self:Log("SPELL_CAST_START", "RadiantTempest", 198263)
self:Log("SPELL_CAST_START", "ShatterSpears", 198077)
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1")
self:RegisterEvent("GOSSIP_SHOW")
self:RegisterMessage("BigWigs_BossComm")
end
function mod:OnEngage()
self:Bar(198263, self:Mythic() and 8 or 24) -- Radiant Tempest
self:Bar(198077, 40) -- Shatter Spears
self:Bar(197961, 44) -- Runic Brand
end
function mod:VerifyEnable(unit)
return UnitCanAttack("player", unit) or (UnitHealth(unit) / UnitHealthMax(unit) > 0.8)
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:Warmup(event, msg)
if msg == L.gossip_trigger then
self:UnregisterEvent(event)
self:Bar("warmup", 28.2, L.gossip_available, "achievement_boss_odyn")
end
end
function mod:RunicBrand(args)
self:MessageOld(args.spellId, "yellow", "alarm", CL.casting:format(args.spellName))
self:Bar(args.spellId, 56) -- m pull:44.0, 56.0
end
function mod:RunicBrandYou(args)
if self:Me(args.destGUID) then
self:MessageOld(197961, "orange", "warning", L[args.spellId], args.spellId)
end
end
function mod:RadiantTempest(args)
self:MessageOld(args.spellId, "red", "long")
self:CDBar(args.spellId, self:Mythic() and 80 or 56) -- hc pull:24.0 / m pull:8.0, 80.0
end
function mod:ShatterSpears(args)
self:MessageOld(args.spellId, "red", "alert", CL.incoming:format(args.spellName))
self:Bar(args.spellId, 56) -- m pull:40.0, 56.0
end
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
if spellId == 198396 then -- Spear of Light
self:MessageOld(200988, "orange", "alert")
end
end
function mod:GOSSIP_SHOW()
if self:GetOption("custom_on_autotalk") and self:MobId(self:UnitGUID("npc")) == 95676 then
if self:GetGossipOptions() then
self:SelectGossipOption(1, true) -- auto confirm it
mod:Sync("odyn")
end
end
end
function mod:BigWigs_BossComm(_, msg)
if msg == "odyn" then
local name = self:BossName(1489) -- Odyn
self:MessageOld("warmup", "cyan", "info", CL.incoming:format(name), false)
self:CDBar("warmup", 2.7, name, "achievement_boss_odyn")
end
end