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
3.3 KiB
93 lines
3.3 KiB
|
3 years ago
|
local mod = DBM:NewMod(666, "DBM-Party-MoP", 7, 246)
|
||
|
|
local L = mod:GetLocalizedStrings()
|
||
|
|
|
||
|
|
mod.statTypes = "normal,heroic,challenge,timewalker"
|
||
|
|
|
||
|
|
mod:SetRevision("20211021191526")
|
||
|
|
mod:SetCreatureID(58722)--58722 is Body, 58791 is soul. Body is engaged first
|
||
|
|
mod:SetEncounterID(1429)
|
||
|
|
mod:SetReCombatTime(180, 15)
|
||
|
|
|
||
|
|
mod:RegisterCombat("combat")
|
||
|
|
mod:RegisterKill("yell", L.Kill)
|
||
|
|
|
||
|
|
mod:RegisterEventsInCombat(
|
||
|
|
"SPELL_AURA_APPLIED 111585 111649 115350",
|
||
|
|
"SPELL_CAST_START 111570 111775 114262",
|
||
|
|
"SPELL_CAST_SUCCESS 111585",
|
||
|
|
"SPELL_DAMAGE 111628",
|
||
|
|
"SPELL_MISSED 111628"
|
||
|
|
)
|
||
|
|
|
||
|
|
--TODO, perfect phase transitions and how they effect ability timers. Find out what happens if you kill BODY first in phase 3, does it get rezzed again?
|
||
|
|
local warnShadowShiv = mod:NewSpellAnnounce(111775, 2)
|
||
|
|
local warnUnleashedAnguish = mod:NewSpellAnnounce(111649, 2)
|
||
|
|
local warnFixateAnger = mod:NewTargetAnnounce(115350, 4)
|
||
|
|
local warnReanimateCorpse = mod:NewSpellAnnounce(114262, 3)
|
||
|
|
|
||
|
|
local specWarnDeathsGrasp = mod:NewSpecialWarningSpell(111570, nil, nil, nil, 2, 2)
|
||
|
|
local specWarnDarkBlaze = mod:NewSpecialWarningGTFO(111585, nil, nil, nil, 1, 2)
|
||
|
|
local specWarnFixateAnger = mod:NewSpecialWarningRun(115350, nil, nil, 2, 4, 2)
|
||
|
|
|
||
|
|
local timerShadowShivCD = mod:NewCDTimer(12.5, 111775, nil, nil, nil, 3)--every 12.5-15.5 sec
|
||
|
|
local timerDeathsGraspCD = mod:NewCDTimer(34, 111570, nil, nil, nil, 2)
|
||
|
|
local timerFixateAngerCD = mod:NewCDTimer(12, 115350, nil, nil, nil, 3)
|
||
|
|
local timerFixateAnger = mod:NewTargetTimer(10, 115350, nil, nil, nil, 5)
|
||
|
|
local timerDarkBlaze = mod:NewBuffActiveTimer(8, 111585)
|
||
|
|
|
||
|
|
function mod:OnCombatStart(delay)
|
||
|
|
timerShadowShivCD:Start(12-delay)
|
||
|
|
timerDeathsGraspCD:Start(30-delay)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_AURA_APPLIED(args)
|
||
|
|
if args.spellId == 111585 and args:IsPlayer() and self:AntiSpam() then
|
||
|
|
specWarnDarkBlaze:Show()
|
||
|
|
specWarnDarkBlaze:Play("watchfeet")
|
||
|
|
elseif args.spellId == 111649 then--Soul released and body becomes inactive, phase 2.
|
||
|
|
timerShadowShivCD:Cancel()
|
||
|
|
timerDeathsGraspCD:Cancel()
|
||
|
|
warnUnleashedAnguish:Show()
|
||
|
|
timerFixateAngerCD:Start()
|
||
|
|
elseif args.spellId == 115350 then
|
||
|
|
timerFixateAnger:Start(args.destName)
|
||
|
|
timerFixateAngerCD:Start()
|
||
|
|
if args:IsPlayer() then
|
||
|
|
specWarnFixateAnger:Show()
|
||
|
|
specWarnFixateAnger:Play("justrun")
|
||
|
|
else
|
||
|
|
warnFixateAnger:Show(args.destName)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_CAST_START(args)
|
||
|
|
if args.spellId == 111570 then
|
||
|
|
specWarnDeathsGrasp:Show()
|
||
|
|
specWarnDeathsGrasp:Play("specialsoon")
|
||
|
|
timerDeathsGraspCD:Start()
|
||
|
|
timerShadowShivCD:Start()--Resets CD when she casts Grasp
|
||
|
|
elseif args.spellId == 111775 then
|
||
|
|
warnShadowShiv:Show()
|
||
|
|
timerShadowShivCD:Start()
|
||
|
|
elseif args.spellId == 114262 then--Phase 3, body rezzed and you have soul and body up together.
|
||
|
|
warnReanimateCorpse:Show()
|
||
|
|
timerDeathsGraspCD:Start(9)
|
||
|
|
timerShadowShivCD:Start(20.5)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
||
|
|
if args.spellId == 111585 then
|
||
|
|
timerDarkBlaze:Start()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- he dies before health 1, so can't use overkill hack.
|
||
|
|
function mod:SPELL_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, _, _, _, overkill)
|
||
|
|
if spellId == 111628 and destGUID == UnitGUID("player") and self:AntiSpam(2) then
|
||
|
|
specWarnDarkBlaze:Show()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
mod.SPELL_MISSED = mod.SPELL_DAMAGE
|