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.

93 lines
2.8 KiB

local mod = DBM:NewMod("ArtifactImpossibleFoe", "DBM-Challenges", 3)
local L = mod:GetLocalizedStrings()
mod.statTypes = "normal,timewalker"
mod:SetRevision("20211226023423")
mod:SetCreatureID(115638)
mod.soloChallenge = true
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 243113",
"SPELL_AURA_REMOVED 243113",
"UNIT_DIED",
"UNIT_SPELLCAST_SUCCEEDED boss1",
"CHAT_MSG_RAID_BOSS_EMOTE"
)
--Notes:
--NEW VOICE: attackshield
--TODO, fix shield absorb, auto calculation doesn't work do to scaling tech. UnitAura detects invalid absorb amount
local specWarnImpServants = mod:NewSpecialWarningSwitch(235140, nil, nil, nil, 1, 2)--Agatha's Vengeance spellId used for now
local specWarnDarkFury = mod:NewSpecialWarningSwitch(243111, nil, nil, nil, 1, 7)
local specWarnDarkFuryKick = mod:NewSpecialWarningInterrupt(243111, nil, nil, nil, 1, 2)
local timerImpServantsCD = mod:NewCDTimer(45, 235140, nil, nil, nil, 1)
local timerDarkFuryCD = mod:NewCDTimer(51.1, 243111, nil, nil, nil, 5, nil, nil, nil, 1, 4)
mod:AddInfoFrameOption(243113, true)
mod.vb.phase = 1
function mod:OnCombatStart(delay)
self.vb.phase = 1
timerImpServantsCD:Start(11-delay)--14 in one log, 11 in another
timerDarkFuryCD:Start(50-delay)
end
function mod:OnCombatEnd()
if self.Options.InfoFrame then
DBM.InfoFrame:Hide()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 243113 then
specWarnDarkFury:Show()
specWarnDarkFury:Play("attackshield")
if self.vb.phase == 2 then
timerDarkFuryCD:Start(68)
else
timerDarkFuryCD:Start()
end
if self.Options.InfoFrame then
DBM.InfoFrame:SetHeader(args.spellName)
DBM.InfoFrame:Show(2, "enemyabsorb", args.spellName)
end
end
end
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 243113 then
specWarnDarkFuryKick:Show(args.sourceName)
specWarnDarkFuryKick:Play("kickcast")
if self.Options.InfoFrame then
DBM.InfoFrame:Hide()
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
end
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 242987 then--Translocate
if self.vb.phase == 1 then
self.vb.phase = 2
end
end
end
--"<53.75 21:03:46> [CHAT_MSG_MONSTER_EMOTE] |TInterface\\Icons\\spell_shaman_earthquake:20|t%s readies itself to charge!#Jormog the Behemoth###Kylistà##0#0##0#12#nil#0#false#false#false#false", -- [133]
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg:find(L.impServants) or msg == L.impServants then
specWarnImpServants:Show()
specWarnImpServants:Play("bigmob")
timerImpServantsCD:Start()
end
end