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.
188 lines
6.4 KiB
188 lines
6.4 KiB
local mod = DBM:NewMod("ArtifactQueen", "DBM-Challenges", 3)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod.statTypes = "normal,timewalker"
|
|
|
|
mod:SetRevision("20211226023423")
|
|
mod:SetCreatureID(116484, 116499, 116496)--Sigryn, Jarl Velbrand, Runeseer Faljar
|
|
mod:SetEncounterID(2059)
|
|
mod:SetBossHPInfoToHighest()
|
|
mod.soloChallenge = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 238694 237870 237947 237945 237857 237952",
|
|
"SPELL_CAST_SUCCESS 237849 238432",
|
|
"SPELL_AURA_APPLIED 237947",
|
|
"SPELL_AURA_REMOVED 237947",
|
|
"UNIT_DIED",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1 boss2 boss3"
|
|
)
|
|
--Notes:
|
|
--TODO, all. mapids, mob iDs, win event to stop timers (currently only death event stops them)
|
|
--Damage
|
|
|
|
--Sigryn
|
|
local warnHurlAxe = mod:NewSpellAnnounce(237870, 2, nil, false)
|
|
local warnAdvance = mod:NewSpellAnnounce(237849, 2)
|
|
|
|
--Sigryn
|
|
local specWarnThrowSpear = mod:NewSpecialWarningDodge(238694, nil, nil, nil, 1, 2)
|
|
local specWarnBloodFather = mod:NewSpecialWarningTarget(237945, nil, nil, nil, 3, 7)
|
|
local specWarnDarkWings = mod:NewSpecialWarningDodge(237772, nil, nil, nil, 2, 2)
|
|
--Jarl Velbrand
|
|
local specWarnBerserkersRage = mod:NewSpecialWarningRun(237947, nil, nil, nil, 4, 2)
|
|
local specWarnBladeStorm = mod:NewSpecialWarningRun(237857, nil, nil, nil, 4, 2)
|
|
--
|
|
local specWarnRunicDetonation = mod:NewSpecialWarningMoveTo(237914, nil, nil, nil, 1, 2)
|
|
local specWarnKnowledge = mod:NewSpecialWarningSwitch(237952, nil, nil, nil, 1, 2)
|
|
|
|
--Sigryn
|
|
--Timers obviously affected by CC usage
|
|
local timerThrowSpearCD = mod:NewCDTimer(13.4, 238694, nil, nil, nil, 3)
|
|
--local timerAdvanceCD = mod:NewCDTimer(13.4, 237849, nil, nil, nil, 2)
|
|
local timerBloodFatherCD = mod:NewCDCountTimer(13.4, 237945, nil, nil, nil, 2, nil, nil, nil, 1, 4)
|
|
local timerDarkWingsCD = mod:NewCDTimer(20, 237772, nil, nil, nil, 3)
|
|
--Jarl Velbrand
|
|
local timerBerserkersRageCD = mod:NewCDCountTimer(13.4, 237947, nil, nil, nil, 3)
|
|
local timerBladeStormCD = mod:NewCDCountTimer(13.4, 237857, nil, nil, nil, 2)
|
|
--Runeseer Faljar
|
|
local timerRunicDetonationCD = mod:NewCDCountTimer(13.4, 237914, nil, nil, nil, 5)
|
|
local timerKnowledgeCD = mod:NewCDCountTimer(13.4, 237952, nil, nil, nil, 3)
|
|
|
|
mod:AddNamePlateOption("NPAuraOnPresence", 237947)
|
|
|
|
--This may not be accurate way to do it, it may be some kind of shared CD like HFC council and just be grossly affected by CCs
|
|
--These are ones consistent between 4 pulls (including kill) though
|
|
local bladeStormTimers = {125.0, 105.0, 30.0}
|
|
local berserkerRageTimers = {26.0, 175.0}
|
|
local bloodFatherTimers = {61.0, 70.0, 100.0}
|
|
local ancestralKnowledgeTimers = {98.4, 69.2, 118.4, 66.3, 26.7, 27.1, 27.5}--Rest 25
|
|
--[[
|
|
--I mean, there is some consistency until 4 and 5. I'm not sure if this is result of CC though or RNG
|
|
["237914-Runic Detonation"] = "pull:43.7, 14.6, 87.5, 56.3, 14.2, 13.3",
|
|
["237914-Runic Detonation"] = "pull:43.4, 13.4, 87.4, 10.9, 47.4, 12.6, 10.5",
|
|
["237914-Runic Detonation"] = "pull:43.5, 14.6, 87.5, 11.0, 44.1, 10.9, 13.4",
|
|
--]]
|
|
local bloodCount = 0
|
|
local bladeCount = 0
|
|
local berserkerCount = 0
|
|
local runicDetonationCount = 0
|
|
local knowledgeCast = 0
|
|
|
|
function mod:OnCombatStart(delay)
|
|
bloodCount = 0
|
|
bladeCount = 0
|
|
berserkerCount = 0
|
|
runicDetonationCount = 0
|
|
knowledgeCast = 0
|
|
timerThrowSpearCD:Start(14.4)
|
|
--timerAdvanceCD:Start(20.5)
|
|
timerBerserkersRageCD:Start(26, 1)
|
|
timerRunicDetonationCD:Start(43, 1)
|
|
timerBloodFatherCD:Start(61, 1)
|
|
timerKnowledgeCD:Start(98, 1)
|
|
timerBladeStormCD:Start(125, 1)
|
|
timerDarkWingsCD:Start(146)
|
|
if self.Options.NPAuraOnPresence then
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.NPAuraOnPresence then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 238694 then
|
|
specWarnThrowSpear:Show()
|
|
specWarnThrowSpear:Play("watchstep")
|
|
timerThrowSpearCD:Start()
|
|
elseif spellId == 237870 then
|
|
warnHurlAxe:Show()
|
|
elseif spellId == 237947 then
|
|
berserkerCount = berserkerCount + 1
|
|
specWarnBerserkersRage:Show()
|
|
specWarnBerserkersRage:Play("justrun")
|
|
local timer = berserkerRageTimers[berserkerCount+1]
|
|
if timer then
|
|
timerBerserkersRageCD:Start(timer, berserkerCount+1)
|
|
end
|
|
elseif spellId == 237945 then
|
|
bloodCount = bloodCount + 1
|
|
specWarnBloodFather:Show(args.sourceName)
|
|
specWarnBloodFather:Play("crowdcontrol")
|
|
local timer = bloodFatherTimers[bloodCount+1]
|
|
if timer then
|
|
timerBloodFatherCD:Start(timer, bloodCount+1)
|
|
end
|
|
elseif spellId == 237857 then
|
|
bladeCount = bladeCount + 1
|
|
specWarnBladeStorm:Show()
|
|
specWarnBladeStorm:Play("justrun")
|
|
local timer = bladeStormTimers[bladeCount+1]
|
|
if timer then
|
|
timerBladeStormCD:Start(timer, bladeCount+1)
|
|
end
|
|
elseif spellId == 237952 then
|
|
knowledgeCast = knowledgeCast + 1
|
|
specWarnKnowledge:Show()
|
|
specWarnKnowledge:Play("targetchange")
|
|
local timer = ancestralKnowledgeTimers[knowledgeCast+1] or 25
|
|
if timer then
|
|
timerKnowledgeCD:Start(timer, knowledgeCast+1)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if (spellId == 237849 or spellId == 238432) and self:AntiSpam(5, 1) then
|
|
warnAdvance:Show()
|
|
--timerAdvanceCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 237947 then
|
|
if self.Options.NPAuraOnPresence then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId, nil, 20)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 237947 then
|
|
if self.Options.NPAuraOnPresence then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
if args.destGUID == UnitGUID("player") then--Solo scenario, a player death is a wipe
|
|
DBM:EndCombat(self, true)
|
|
end
|
|
--local cid = self:GetCIDFromGUID(args.destGUID)
|
|
-- if cid == 177933 then--Variss
|
|
|
|
-- end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 237914 then--Runic Detonation
|
|
runicDetonationCount = runicDetonationCount + 1
|
|
specWarnRunicDetonation:Show(RUNES)
|
|
specWarnRunicDetonation:Play("157060")
|
|
timerRunicDetonationCD:Start()
|
|
elseif spellId == 237772 then--Dark Wings
|
|
specWarnDarkWings:Show()
|
|
specWarnDarkWings:Play("stilldanger")
|
|
timerDarkWingsCD:Start()
|
|
end
|
|
end
|
|
|