82a9ac0937
* 5.20 * Update to 5.21 --------- Co-authored-by: Szyler <Szyler@Szyler.com>
174 lines
5.7 KiB
Lua
174 lines
5.7 KiB
Lua
local mod = DBM:NewMod("Mythic Champion", "DBM-Party-Vanilla")
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 5019 $"):sub(12, -3))
|
|
mod:SetCreatureID(80227)
|
|
mod:RegisterCombat("combat", 80227)
|
|
mod:SetUsedIcons(8)
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_START",
|
|
"SPELL_AURA_APPLIED"
|
|
)
|
|
|
|
-- FO = Frozen orb 2 sec cast
|
|
-- AZ = Absolute Zero 4 sec cast 4 sec channel
|
|
-- IB = Ice Barrage 2 second cast 4 sec channel
|
|
-- IBDB = Ice barrage Debuff
|
|
-- Timers starts at first SPELL_CAST_START of Frozen Orb (5 sec into the fight)
|
|
-- Icon for ice barrage + living bomb
|
|
|
|
|
|
-- Spell IDs:
|
|
-- Frozen Orb - 2129159
|
|
-- Absolute Zero - 2129169, 2129170 TBC, 2129171 WOTLK
|
|
-- Ice Barrage - 2129163, 2129164 TBC, 2129165 WOTLK
|
|
-- Ice Barrage player debuff - 2129160 TBC, 2129161, 2129162 WOTLK
|
|
-- Frostbite - 2129154 (maybe Or 2129176)
|
|
|
|
--Timers:
|
|
--0:05 - Frozen Orb #1
|
|
--*
|
|
--0:20 - Absolute Zero #1
|
|
--0:33 - Ice Barrage #1
|
|
--0:43 - Frozen Orb #2
|
|
--1:03 - Ice Barrage #2
|
|
--1:13 - Frozen Orb #3
|
|
--*
|
|
--1:28 - Absolute Zero #2
|
|
--1:41 - Ice Barrage #3
|
|
--1:51 - Frozen Orb #4
|
|
--2:11 - Ice Barrage #4
|
|
--2:21 - Frozen Orb #5
|
|
--*
|
|
--Repeats
|
|
|
|
|
|
local firstFrozenOrbTriggered = false
|
|
local firstAbsoluteZeroTriggered = false
|
|
local firstIceBarrageTriggered = false
|
|
local firstFrozenOrb = false -- flag for the first Frozen Orb cast
|
|
local absoluteZeroCast = false -- flag for the first Absolute Zero cast
|
|
local frozenOrbCounter = 0
|
|
local iceBarrageCounter = 0
|
|
|
|
|
|
|
|
--local warningAbsoluteZero = mod:NewSpellAnnounce(2129169, 3)
|
|
local timerNextAbsoluteZero = mod:NewNextTimer(68, 2129169)
|
|
--local AbsoluteZeroCast = mod:NewCastTimer(2, 2129169)
|
|
|
|
--local warningFrozenOrb = mod:NewSpellAnnounce(2129159, 3)
|
|
local timerNextFrozenOrb = mod:NewNextTimer(30, 2129159)
|
|
--local FrozenOrbCast = mod:NewCastTimer(2, 2129159)
|
|
|
|
--local warningIceBarrage = mod:NewSpellAnnounce(2129161, 3)
|
|
local timerNextIceBarrage = mod:NewNextTimer(30, 2129161)
|
|
--local IceBarrageCast = mod:NewCastTimer(2, 2129161)
|
|
|
|
|
|
|
|
local warnMagmaInfusion = mod:NewSpellAnnounce(2129118, 2)
|
|
local warnBurningGround = mod:NewSpellAnnounce(2129129, 3)
|
|
local warnLivingBombTarget = mod:NewSpecialWarningYou(2129133, 4)
|
|
|
|
local timerNextLivingBomb = mod:NewNextTimer(12, 2129123)
|
|
local timerNextMeltDown = mod:NewNextTimer(20, 2129107)
|
|
local timerNextMagmaInfusion = mod:NewNextTimer(30, 2129118)
|
|
local timerNextFlameTorrent = mod:NewNextTimer(30, 2129112)
|
|
local timerNextFirefromtheSkys = mod:NewNextTimer(90, 2129123)
|
|
|
|
local timerTargetLivingBomb = mod:NewTargetTimer(30, 2129133)
|
|
local timerMagmaInfusion = mod:NewBuffActiveTimer(30, 2129118)
|
|
|
|
local timerFirefromtheSkys = mod:NewCastTimer(6, 2129123)
|
|
local timerFlameTorrent = mod:NewCastTimer(6, 2129112)
|
|
|
|
local firstAbilityUsed = false
|
|
|
|
mod:AddBoolOption("SetIconOnBombTarget", true)
|
|
|
|
function mod:OnCombatStart(delay)
|
|
firstAbilityUsed = false
|
|
end
|
|
|
|
|
|
function mod:handleFirstFrozenOrb(args)
|
|
if not firstFrozenOrbTriggered then
|
|
firstFrozenOrb = not firstFrozenOrb
|
|
timerNextFrozenOrb:Start(38)
|
|
firstFrozenOrb = true
|
|
firstFrozenOrbTriggered = true
|
|
|
|
-- Trigger firstAbsoluteZero and firstIceBarrage only once
|
|
if not firstAbsoluteZeroTriggered then
|
|
timerNextAbsoluteZero:Start(15)
|
|
firstAbsoluteZeroTriggered = true
|
|
elseif not firstIceBarrageTriggered then
|
|
timerNextIceBarrage:Start(28)
|
|
firstIceBarrageTriggered = true
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if args.spellId == 2129159 then
|
|
self:handleFirstFrozenOrb(args)
|
|
elseif args.spellId == 2129169 and firstFrozenOrbTriggered == true then
|
|
timerNextAbsoluteZero:Start(68)
|
|
frozenOrbCounter = 0
|
|
iceBarrageCounter = 0
|
|
elseif args.spellId == 2129161 then
|
|
iceBarrageCounter = iceBarrageCounter + 1
|
|
local delayIceBarrage = (absoluteZeroCast and iceBarrageCounter == 1) and 38 or 30
|
|
timerNextIceBarrage:Start(delayIceBarrage)
|
|
elseif args.spellId == 2129159 then
|
|
frozenOrbCounter = frozenOrbCounter + 1
|
|
local delayFrozenOrb = (absoluteZeroCast and frozenOrbCounter == 1) and 38 or 30
|
|
timerNextFrozenOrb:Start(delayFrozenOrb)
|
|
|
|
---Fire Champions
|
|
elseif args:IsSpellID(2129112) then
|
|
timerNextFlameTorrent:Start()
|
|
timerFlameTorrent:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
---Fire Champions
|
|
if args:IsSpellID(2129118) then
|
|
warnMagmaInfusion:Show()
|
|
timerNextMagmaInfusion:Start()
|
|
timerMagmaInfusion:Start()
|
|
elseif args:IsSpellID(2129123) then
|
|
warnLivingBombTarget:Show()
|
|
timerNextLivingBomb:Start()
|
|
timerTargetLivingBomb:Start(args.destName)
|
|
elseif args:IsSpellID(2129129) then
|
|
if args:IsPlayer() then
|
|
warnBurningGround:Show()
|
|
end
|
|
elseif args:IsSpellID(2129123) then
|
|
timerNextFirefromtheSkys:Start()
|
|
timerFirefromtheSkys:Start()
|
|
|
|
timerNextLivingBomb:AddTime(6)
|
|
timerNextMeltDown:AddTime(6)
|
|
timerNextMagmaInfusion:AddTime(6)
|
|
timerNextFlameTorrent:AddTime(6)
|
|
timerNextFirefromtheSkys:AddTime(6)
|
|
elseif args:IsSpellID(2129107) then
|
|
timerNextMeltDown:Start()
|
|
if not firstAbilityUsed then
|
|
timerNextLivingBomb:Start(2-delay)
|
|
timerNextMagmaInfusion:Start(4-delay)
|
|
timerNextFirefromtheSkys:Start(19-delay)
|
|
timerNextFlameTorrent:Start(25-delay)
|
|
firstAbilityUsed = true
|
|
end
|
|
end
|
|
end
|
|
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|