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.
208 lines
8.2 KiB
208 lines
8.2 KiB
local mod = DBM:NewMod(1489, "DBM-Party-Legion", 4, 721)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240714045506")
|
|
mod:SetCreatureID(95676)
|
|
mod:SetEncounterID(1809)
|
|
mod:SetHotfixNoticeRev(20230306000000)
|
|
mod:SetMinSyncRevision(20221228000000)
|
|
mod.sendMainBossGUID = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 198072 198263 198077 198750",
|
|
"SPELL_CAST_SUCCESS 197961",
|
|
"SPELL_AURA_APPLIED 197963 197964 197965 197966 197967",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
)
|
|
mod:RegisterEvents(
|
|
"CHAT_MSG_MONSTER_YELL"
|
|
)
|
|
|
|
--http://legion.wowhead.com/icons/name:boss_odunrunes_
|
|
--["198263-Radiant Tempest"] = "pull:8.0, 72.0, 40.0", huh?
|
|
--[[
|
|
(ability.id = 198072 or ability.id = 198263 or ability.id = 198077) and type = "begincast"
|
|
or ability.id = 197961 and type = "cast"
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
or ability.id = 198750 and type = "begincast"
|
|
--]]
|
|
--TODO, does boss still have old random tempest timers system from legion or are 10.0.2 changes universal?
|
|
local warnSpear = mod:NewSpellAnnounce(198072, 2)--Target not available so no target warning.
|
|
|
|
local specWarnTempest = mod:NewSpecialWarningRunCount(198263, nil, nil, nil, 4, 2)
|
|
local specWarnShatterSpears = mod:NewSpecialWarningDodge(198077, nil, nil, nil, 2, 2)
|
|
local specWarnRunicBrand = mod:NewSpecialWarningMoveTo(197961, nil, nil, nil, 2, 6)
|
|
local specWarnAdd = mod:NewSpecialWarningSwitch(201221, "-Healer", nil, nil, 1, 2)
|
|
local specWarnSurge = mod:NewSpecialWarningInterrupt(198750, "HasInterrupt", nil, nil, 1, 2)
|
|
|
|
local timerRP = mod:NewCombatTimer(28.5)
|
|
--local timerSpearCD = mod:NewCDTimer(8, 198077, nil, nil, nil, 3)--More data needed
|
|
local timerTempestCD = mod:NewCDCountTimer(56, 198263, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)--More data needed
|
|
local timerShatterSpearsCD = mod:NewCDTimer(56, 198077, nil, nil, nil, 2)
|
|
local timerRunicBrandCD = mod:NewCDCountTimer(56, 197961, nil, nil, nil, 3)
|
|
local timerAddCD = mod:NewCDTimer(54, 201221, nil, nil, nil, 1, 201215)--54-58
|
|
|
|
mod:AddDropdownOption("RuneBehavior", {"Icon", "Entrance", "Minimap", "Generic"}, "Generic", "misc", nil, 197961)
|
|
|
|
--Boss has (at least) three timer modes, cannot determine which one on pull so on fly figuring out is used
|
|
local oldTempestTimers = {
|
|
[1] = {8, 56, 72},
|
|
[2] = {16, 48, 64},--If such a beast exists, it'll look like this based on theory. This sequence is COPMLETE guesswork
|
|
[3] = {24, 40, 56},
|
|
[4] = {32, 32, 48},--32 and 48 are guessed based on theory
|
|
}
|
|
--local oldbrandTimers = {44, 56}
|
|
mod.vb.temptestMode = 1
|
|
mod.vb.tempestCount = 0
|
|
mod.vb.brandCount = 0
|
|
|
|
--Should run at 10, 18, 26, and 34
|
|
--[[
|
|
local function tempestDelayed(self)
|
|
if self.vb.tempestCount == 0 then
|
|
DBM:AddMsg(L.tempestModeMessage:format(self.vb.temptestMode))
|
|
self.vb.temptestMode = self.vb.temptestMode + 1
|
|
self:Schedule(8, tempestDelayed, self)
|
|
timerTempestCD:Start(6, 1)
|
|
else
|
|
return
|
|
end
|
|
end
|
|
--]]
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.temptestMode = 1
|
|
self.vb.tempestCount = 0
|
|
self.vb.brandCount = 0
|
|
-- timerSpearCD:Start(-delay)
|
|
timerTempestCD:Start(24-delay, 1)
|
|
-- self:Schedule(10, tempestDelayed, self, 1)
|
|
timerShatterSpearsCD:Start(40-delay)
|
|
timerRunicBrandCD:Start(45.9-delay, 1)
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 198072 then
|
|
warnSpear:Show()
|
|
elseif spellId == 198263 then
|
|
self.vb.tempestCount = self.vb.tempestCount + 1
|
|
specWarnTempest:Show(self.vb.tempestCount)
|
|
specWarnTempest:Play("runout")
|
|
timerTempestCD:Start(55, self.vb.tempestCount+1)
|
|
-- timerSpearCD:Start(12)
|
|
-- local timers = tempestTimers[self.vb.temptestMode]
|
|
-- if timers then
|
|
-- local nextCast = self.vb.tempestCount+1
|
|
-- if timers[nextCast] then
|
|
-- timerTempestCD:Start(timers[nextCast], nextCast)
|
|
-- end
|
|
-- end
|
|
elseif spellId == 198077 then
|
|
specWarnShatterSpears:Show()
|
|
specWarnShatterSpears:Play("watchorb")
|
|
timerShatterSpearsCD:Start()
|
|
elseif spellId == 198750 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnSurge:Show(args.sourceName)
|
|
specWarnSurge:Play("kickcast")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if args.spellId == 197961 then
|
|
self.vb.brandCount = self.vb.brandCount + 1
|
|
-- timerSpearCD:Start(18)
|
|
local nextCount = self.vb.brandCount+1
|
|
-- local timer = brandTimers[nextCount]
|
|
-- if timer then
|
|
timerRunicBrandCD:Start(nil, nextCount)
|
|
-- end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 197963 and args:IsPlayer() then--Purple K (NE)
|
|
specWarnRunicBrand:Show("|TInterface\\Icons\\Boss_OdunRunes_Purple.blp:12:12|tNE|TInterface\\Icons\\Boss_OdunRunes_Purple.blp:12:12|t")
|
|
if self.Options.RuneBehavior == "Entrance" then
|
|
specWarnRunicBrand:Play("frontleft")
|
|
elseif self.Options.RuneBehavior == "Icon" then
|
|
specWarnRunicBrand:Play("mm3")--Purple Diamond
|
|
elseif self.Options.RuneBehavior == "Minimap" then
|
|
specWarnRunicBrand:Play("frontright")
|
|
else
|
|
specWarnRunicBrand:Play("targetyou")
|
|
end
|
|
elseif spellId == 197964 and args:IsPlayer() then--Orange N (SE)
|
|
specWarnRunicBrand:Show("|TInterface\\Icons\\Boss_OdunRunes_Orange.blp:12:12|tSE|TInterface\\Icons\\Boss_OdunRunes_Orange.blp:12:12|t")
|
|
if self.Options.RuneBehavior == "Entrance" then
|
|
specWarnRunicBrand:Play("backleft")
|
|
elseif self.Options.RuneBehavior == "Icon" then
|
|
specWarnRunicBrand:Play("mm2")--Orange Circle
|
|
elseif self.Options.RuneBehavior == "Minimap" then
|
|
specWarnRunicBrand:Play("backright")
|
|
else
|
|
specWarnRunicBrand:Play("targetyou")
|
|
end
|
|
elseif spellId == 197965 and args:IsPlayer() then--Yellow H (SW)
|
|
specWarnRunicBrand:Show("|TInterface\\Icons\\Boss_OdunRunes_Yellow.blp:12:12|tSW|TInterface\\Icons\\Boss_OdunRunes_Yellow.blp:12:12|t")
|
|
if self.Options.RuneBehavior == "Entrance" then
|
|
specWarnRunicBrand:Play("backright")
|
|
elseif self.Options.RuneBehavior == "Icon" then
|
|
specWarnRunicBrand:Play("mm1")--Yellow Star
|
|
elseif self.Options.RuneBehavior == "Minimap" then
|
|
specWarnRunicBrand:Play("backleft")
|
|
else
|
|
specWarnRunicBrand:Play("targetyou")
|
|
end
|
|
elseif spellId == 197966 and args:IsPlayer() then--Blue fishies (NW)
|
|
specWarnRunicBrand:Show("|TInterface\\Icons\\Boss_OdunRunes_Blue.blp:12:12|tNW|TInterface\\Icons\\Boss_OdunRunes_Blue.blp:12:12|t")
|
|
if self.Options.RuneBehavior == "Entrance" then
|
|
specWarnRunicBrand:Play("frontright")
|
|
elseif self.Options.RuneBehavior == "Icon" then
|
|
specWarnRunicBrand:Play("mm6")--Blue Square
|
|
elseif self.Options.RuneBehavior == "Minimap" then
|
|
specWarnRunicBrand:Play("frontleft")
|
|
else
|
|
specWarnRunicBrand:Play("targetyou")
|
|
end
|
|
elseif spellId == 197967 and args:IsPlayer() then--Green box (N)
|
|
specWarnRunicBrand:Show("|TInterface\\Icons\\Boss_OdunRunes_Green.blp:12:12|tN|TInterface\\Icons\\Boss_OdunRunes_Green.blp:12:12|t")
|
|
if self.Options.RuneBehavior == "Entrance" then
|
|
specWarnRunicBrand:Play("frontcenter")
|
|
elseif self.Options.RuneBehavior == "Icon" then
|
|
specWarnRunicBrand:Play("mm4")--Green Triangle
|
|
elseif self.Options.RuneBehavior == "Minimap" then
|
|
specWarnRunicBrand:Play("frontcenter")
|
|
else
|
|
specWarnRunicBrand:Play("targetyou")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 198396 then
|
|
warnSpear:Show()
|
|
elseif spellId == 201221 then--Summon Stormforged
|
|
specWarnAdd:Show()
|
|
specWarnAdd:Play("killmob")
|
|
timerAddCD:Start()
|
|
end
|
|
end
|
|
|
|
--"<1368.18 21:44:20> [CHAT_MSG_MONSTER_YELL] Most impressive! I never thought I would meet anyone who could match the Valarjar's strength... and yet here you stand.#Odyn###Odyn##0#0##0#1600#nil#0#false#false#false#false", -- [6314]
|
|
--About 3 seconds to trigger gossip, since RP is for when gossip becomes available
|
|
--"<1399.95 21:44:52> [DBM_Debug] StartCombat called by : ENCOUNTER_START. LastInstanceMapID is 1477#nil", -- [6329]
|
|
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
|
if (msg == L.OdynRP or msg:find(L.OdynRP)) then
|
|
self:SendSync("OdynRP")--Syncing to help unlocalized clients
|
|
end
|
|
end
|
|
|
|
function mod:OnSync(msg, targetname)
|
|
if msg == "OdynRP" and self:AntiSpam(10, 2) then
|
|
timerRP:Start()
|
|
end
|
|
end
|
|
|