Files
coa-dbm/DBM-Party-BC/Mythic_Champion.lua
T
Szyler 82a9ac0937 Update to 5.21 Sunwell (#6)
* 5.20

* Update to 5.21

---------

Co-authored-by: Szyler <Szyler@Szyler.com>
2024-09-30 20:09:41 -07:00

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