Update to 5.21 Sunwell (#6)
* 5.20 * Update to 5.21 --------- Co-authored-by: Szyler <Szyler@Szyler.com>
This commit is contained in:
+97
-65
@@ -1,90 +1,122 @@
|
||||
local DBM = require("DBM") -- assuming DBM is a module you have in your project
|
||||
local mod = DBM:NewMod("Chromaggus", "DBM-BWL", 1)
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 188 $"):sub(12, -3))
|
||||
mod:SetCreatureID(14020)
|
||||
mod:RegisterCombat("combat")
|
||||
mod:RegisterCombat("combat",14020)
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"UNIT_HEALTH"
|
||||
"SPELL_AURA_APPLIED"
|
||||
)
|
||||
|
||||
local warnBreathSoon = mod:NewAnnounce("WarnBreathSoon", 1, 23316)
|
||||
local warnBreath = mod:NewAnnounce("WarnBreath", 2, 23316)
|
||||
local warnRed = mod:NewTargetAnnounce(23155, 2, nil, false)
|
||||
local warnGreen = mod:NewTargetAnnounce(23169, 2, nil, false)
|
||||
local warnBlue = mod:NewTargetAnnounce(23153, 2, nil, false)
|
||||
local warnBlack = mod:NewTargetAnnounce(23154, 2, nil, false)
|
||||
local warnBronze = mod:NewSpellAnnounce(23170, 2)
|
||||
local warnEnrage = mod:NewSpellAnnounce(23128)
|
||||
local warnPhase2Soon = mod:NewAnnounce("WarnPhase2Soon")
|
||||
local warnPhase2 = mod:NewPhaseAnnounce(2)
|
||||
--ORDER FOR PHASES IS BELOW
|
||||
--FROST, FIRE, SHADOW, NATURE, ARCANE
|
||||
|
||||
local specWarnBronze = mod:NewSpecialWarningYou(23170)
|
||||
--breath 15 sec cd
|
||||
--intermission 30 sec
|
||||
--Phase transmission 3 sec
|
||||
--enrage 6:48~6:50
|
||||
--Flame, Frost, Arcane, Acidic, Shadow Breath
|
||||
|
||||
local timerBreath = mod:NewTimer(2, "TimerBreath")
|
||||
local timerBreathCD = mod:NewTimer(60, "TimerBreathCD")
|
||||
local timerEnrage = mod:NewBuffActiveTimer(8, 23128)
|
||||
--Brood Affliction: Blue 197228
|
||||
--Frost Burn 197232
|
||||
--Frost Breath 197233
|
||||
|
||||
--Brood Affliction: Red 197223
|
||||
--Incinerate 197201
|
||||
--Flame Breath 197205
|
||||
|
||||
--Brood Affliction: Black 197203
|
||||
--Engulfing Shadow 197208
|
||||
--2111309
|
||||
--Shadow Breath 197212
|
||||
|
||||
--Brood Affliction: Green 197210
|
||||
--Corrosive Acid 197215
|
||||
--Acidic Breath 197220
|
||||
|
||||
--Brood Affliction: Bronze 197216
|
||||
--Time Lapse 197222
|
||||
--Arcane Breath 197224
|
||||
|
||||
|
||||
local prewarn_P2
|
||||
function mod:OnCombatStart(delay)
|
||||
warnBreathSoon:Schedule(25-delay)
|
||||
timerBreathCD:Start(30-delay, "Breath 1")
|
||||
timerBreathCD:Start(-delay, "Breath 2")
|
||||
prewarn_P2 = false;
|
||||
|
||||
|
||||
--local specWarnRed = mod:NewSpecialWarningYou(197223, 3)
|
||||
--local specWarnGreen = mod:NewSpecialWarningYou(197210, 3)
|
||||
--local warnBreathSoon = mod:NewAnnounce("WarnBreathSoon", 1, 23316)
|
||||
--local warnBreath = mod:NewAnnounce("WarnBreath", 2, 23316)
|
||||
|
||||
local enrageTimer = mod:NewBerserkTimer(408)
|
||||
--Phases
|
||||
local timerBlueNext = mod:NewNextTimer(34, 2111286)
|
||||
local timerRedNext = mod:NewNextTimer(34, 2111263)
|
||||
local timerBlackNext = mod:NewNextTimer(34, 2111309)
|
||||
local timerGreenNext = mod:NewNextTimer(34, 2111273)
|
||||
local timerBronzeNext = mod:NewNextTimer(34, 2111296)
|
||||
--Debuffs
|
||||
local specWarnBlue = mod:NewSpecialAnnounceYou(197228, 3)
|
||||
local specWarnBlack = mod:NewSpecialAnnounceYou(197203, 3)
|
||||
local specWarnBronze = mod:NewSpecialAnnounceYou(197216, 3)
|
||||
--Breaths
|
||||
local timerFrostBreath = mod:NewNextTimer(6, 2111240)
|
||||
local timerFlameBreath = mod:NewNextTimer(6, 2111230)
|
||||
local timerShadowBreath = mod:NewNextTimer(6, 2111235)
|
||||
local timerAcidicBreath = mod:NewNextTimer(6, 197220)
|
||||
local timerArcaneBreath = mod:NewNextTimer(6, 197224)
|
||||
local timerBreathCD = mod:NewTimer(15, 197212)
|
||||
|
||||
|
||||
--functions
|
||||
|
||||
function mod:FirstPhase()
|
||||
timerBlueNext:Start(10)
|
||||
timerBreathCD:Start(16)
|
||||
end
|
||||
|
||||
function mod:onCombatStart(delay)
|
||||
enrageTimer:Start(-delay)
|
||||
self:ScheduleMethod(0,"FirstPhase")
|
||||
end
|
||||
|
||||
function mod:secondBreath(delay)
|
||||
timerBreathCD:Start(15)
|
||||
end
|
||||
|
||||
--Combat Log reading
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(23309, 23313, 23189, 23316) or args:IsSpellID(23312) then
|
||||
warnBreathSoon:Cancel()
|
||||
warnBreathSoon:Schedule(25)
|
||||
warnBreath:Show(args.spellName)
|
||||
timerBreath:Start(args.spellName)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(23170) then
|
||||
warnBronze:Show()
|
||||
if args:IsSpellID(2111286) then
|
||||
self:ScheduleMethod(6, "secondBreath")
|
||||
timerFrostBreath:Start(6)
|
||||
timerRedNext:Start(34)
|
||||
elseif args:IsSpellID(2111263) then
|
||||
self:ScheduleMethod(6, "secondBreath")
|
||||
timerFlameBreath:Start(6)
|
||||
timerBlackNext:Start(34)
|
||||
elseif args:IsSpellID(2111309) then
|
||||
self:ScheduleMethod(6, "secondBreath")
|
||||
timerShadowBreath:Start(6)
|
||||
timerGreenNext:Start(34)
|
||||
elseif args:IsSpellID(2111273) then
|
||||
self:ScheduleMethod(6, "secondBreath")
|
||||
timerAcidicBreath:Start(6)
|
||||
timerBronzeNext:Start(34)
|
||||
elseif args:IsSpellID(2111296) then
|
||||
self:ScheduleMethod(6, "secondBreath")
|
||||
timerArcaneBreath:Start(6)
|
||||
timerBlueNext:Start(34)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(23155) then
|
||||
warnRed:Show(args.destName)
|
||||
elseif args:IsSpellID(23169) then
|
||||
warnGreen:Show(args.destName)
|
||||
elseif args:IsSpellID(23153) then
|
||||
warnBlue:Show(args.destName)
|
||||
elseif args:IsSpellID(23154) then
|
||||
warnBlack:Show(args.destName)
|
||||
elseif args:IsSpellID(23170) then
|
||||
warnBronze:Show()
|
||||
if args:IsPlayer() then
|
||||
if args.IsSpellID(197228) and args:IsPlayer() then
|
||||
specWarnBlue:Show()
|
||||
elseif args.isSpellID(197216) and args:IsPlayer() then
|
||||
specWarnBronze:Show()
|
||||
end
|
||||
elseif args:IsSpellID(23128) then
|
||||
warnEnrage:Show()
|
||||
timerEnrage:Start()
|
||||
elseif args:IsSpellID(23537) then
|
||||
warnPhase2:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(23128) then
|
||||
timerEnrage:Cancel()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_HEALTH(uId)
|
||||
if UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and self:GetUnitCreatureId(uId) == 14020 and not prewarn_P2 then
|
||||
warnPhase2Soon:Show()
|
||||
prewarn_P2 = true
|
||||
elseif args.IsSpellID(197203) and args:IsPlayer() then
|
||||
specWarnBlack:Show()
|
||||
end
|
||||
end
|
||||
+10
-4
@@ -13,19 +13,25 @@ mod:RegisterEvents(
|
||||
"UNIT_HEALTH",
|
||||
"CHAT_MSG_MONSTER_YELL"
|
||||
)
|
||||
|
||||
--197216 Fear ID
|
||||
--19202 Massive Shadow Flame Bolt
|
||||
--197221 - Shadow Flame Breath 20 sec ICD
|
||||
--Start timer on first bellowing roar
|
||||
--45 sec CD on fear
|
||||
--30 sec after first breath, class call
|
||||
--
|
||||
local warnClassCallSoon = mod:NewAnnounce("WarnClassCallSoon", 2)
|
||||
local warnClassCall = mod:NewAnnounce("WarnClassCall", 3)
|
||||
local warnPhaseSoon = mod:NewAnnounce("WarnPhaseSoon", 2)
|
||||
local warnPhase = mod:NewAnnounce("WarnPhase", 3)
|
||||
local warnShadowFlame = mod:NewCastAnnounce(22539, 2)
|
||||
local warnFear = mod:NewCastAnnounce(22686, 2)
|
||||
local warnFear = mod:NewCastAnnounce(197216, 2)
|
||||
local warnVeilShadow = mod:NewTargetAnnounce(22687, 3)
|
||||
local warnMC = mod:NewTargetAnnounce(22667, 4)
|
||||
|
||||
local timerClassCall = mod:NewTimer(30, "TimerClassCall")
|
||||
local timerShadowFlame = mod:NewCastTimer(2, 22539)
|
||||
local timerFearNext = mod:NewNextTimer(30, 22686)
|
||||
local timerFearNext = mod:NewNextTimer(45, 197216)
|
||||
local timerVeilShadow = mod:NewTargetTimer(6, 22687)
|
||||
local timerMC = mod:NewTargetTimer(15, 22667)
|
||||
|
||||
@@ -38,7 +44,7 @@ function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(22539) and self:IsInCombat() then
|
||||
warnShadowFlame:Show()
|
||||
timerShadowFlame:Start()
|
||||
elseif args:IsSpellID(22686) and self:IsInCombat() then
|
||||
elseif args:IsSpellID(197216) and self:IsInCombat() then
|
||||
warnFear:Show()
|
||||
timerFearNext:Start()
|
||||
end
|
||||
|
||||
@@ -6,7 +6,9 @@ mod:SetCreatureID(22948)
|
||||
mod:RegisterCombat("combat", 22948)
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED"
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_AURA_REMOVED"
|
||||
)
|
||||
|
||||
local warningBoilingBlood = mod:NewSpellAnnounce(2143508, 3)
|
||||
@@ -17,7 +19,7 @@ local warningFatalstrike = mod:NewSpellAnnounce(2143527, 2)
|
||||
local timerNextBoilingBlood = mod:NewNextTimer(20, 2143508)
|
||||
local timerNextSeismicSmash = mod:NewNextTimer(20, 2143531)
|
||||
local timerSeismicSmash = mod:NewCastTimer(5, 2143531)
|
||||
local timerNextMakgora = mod:NewNextTimer(70, 2143520)
|
||||
local timerNextMakgora = mod:NewNextTimer(105, 2143520)
|
||||
local timerNextFatalstrike = mod:NewNextTimer(20, 2143527)
|
||||
local timerNextMalevolentCleave = mod:NewNextTimer(5, 2143526)
|
||||
|
||||
@@ -29,14 +31,15 @@ local timerNextBoilBlood = mod:NewNextTimer(20, 2143517)
|
||||
local elapsed, total, remainingTimerNextMakgora
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
timerNextBoilingBlood:Start(10-delay)
|
||||
timerNextSeismicSmash:Start(20-delay)
|
||||
timerNextMakgora:Start(70-delay)
|
||||
remainingTimerNextMakgora = 30
|
||||
remainingTimerNextMakgora = 70
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2143508, 2143509, 2143510, 2143511) and (remainingTimerNextMakgora >= 25) then
|
||||
if args:IsSpellID(2143508, 2143509, 2143510, 2143511) and DBM:AntiSpam(15) and (remainingTimerNextMakgora >= 25) then
|
||||
warningBoilingBlood:Show()
|
||||
timerNextBoilingBlood:Start()
|
||||
elapsed, total = timerNextMakgora:GetTime()
|
||||
@@ -48,6 +51,7 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
elapsed, total = timerNextMakgora:GetTime()
|
||||
remainingTimerNextMakgora = total - elapsed
|
||||
elseif args:IsSpellID(2143523) then
|
||||
self.vb.phase = 2
|
||||
warnMakgora:Show()
|
||||
timerNextMakgora:Start()
|
||||
timerMakgora:Start(args.destName)
|
||||
@@ -56,12 +60,13 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
remainingTimerNextMakgora = total - elapsed
|
||||
timerNextBoilingBlood:Start(42)
|
||||
timerNextSeismicSmash:Start(50)
|
||||
timerNextFatalstrike:Start(40)
|
||||
elseif args:IsSpellID(2143527) and (remainingTimerNextMakgora >= 20) then
|
||||
warningFatalstrike:Show()
|
||||
timerNextFatalstrike:Start()
|
||||
elapsed, total = timerNextMakgora:GetTime()
|
||||
remainingTimerNextMakgora = total - elapsed
|
||||
elseif args:IsSpellID(2143517) and DBM:AntiSpam(15) and (remainingTimerNextMakgora >= 25) then
|
||||
elseif args:IsSpellID(2143519) and DBM:AntiSpam(15) and (remainingTimerNextMakgora >= 25) then
|
||||
warningBoilBlood:Show()
|
||||
timerNextBoilBlood:Start()
|
||||
elapsed, total = timerNextMakgora:GetTime()
|
||||
@@ -69,6 +74,13 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
end
|
||||
end
|
||||
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||||
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(2143523) then
|
||||
self.vb.phase = 1
|
||||
end
|
||||
end
|
||||
|
||||
-- local boilCounter = 0
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
## Interface: 30300
|
||||
## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Black Temple|r
|
||||
## LoadOnDemand: 1
|
||||
## Author: Tandanu and Nitram, updated by Junior and Szyler.
|
||||
## RequiredDeps: DBM-Core, DBM-BurningCrusade
|
||||
## SavedVariablesPerCharacter: DBMBlackTemple_SavedVars, DBMBlackTemple_SavedStats
|
||||
## DefaultState: Enabled
|
||||
## LoadOnDemand: 1
|
||||
|
||||
## X-DBM-Mod: 1
|
||||
## X-DBM-Mod-Category: BC
|
||||
## X-DBM-Name: Black Temple
|
||||
## X-DBM-Mod-Name: Black Temple
|
||||
## X-DBM-Mod-Sort: 307
|
||||
## X-DBM-Mod-LoadZone: Black Temple
|
||||
|
||||
|
||||
@@ -26,7 +26,10 @@ local timerTargetSpiritShock = mod:NewTargetTimer(5, 2143804)
|
||||
|
||||
local warnSoulBlast = mod:NewSpellAnnounce(2143961, 2)
|
||||
local warnSoulDrain = mod:NewSpellAnnounce(2143760, 2)
|
||||
local timerNextSoulDrain = mod:NewNextTimer(20, 2143760)
|
||||
local timerNextSoulDrain = mod:NewNextTimer(30, 2143760)
|
||||
|
||||
local warnVengenace = mod:NewSpellAnnounce(2143764, 2)
|
||||
local timerNextVengenace = mod:NewNextTimer(30, 2143764)
|
||||
|
||||
local warnRuneShield = mod:NewSpellAnnounce(2143808, 2)
|
||||
local timerRuneShield = mod:NewTargetTimer(15, 2143808)
|
||||
@@ -56,6 +59,8 @@ local warnAuraOfAnger = mod:NewSpellAnnounce(2143850, 2)
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
timerNextSoulDrain:Start(20-delay)
|
||||
timerNextVengenace:Start(32-delay)
|
||||
-- isSuffer = true
|
||||
-- isDesire = false
|
||||
-- isAnger = false
|
||||
@@ -69,7 +74,8 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
warnSoulBlast:Show()
|
||||
elseif args:IsSpellID(2143760, 2143761, 2143762, 2143763) and DBM:AntiSpam() then
|
||||
warnSoulDrain:Show()
|
||||
elseif args:IsSpellID(2143808) then
|
||||
timerNextSoulDrain:Start()
|
||||
elseif args:IsSpellID(2143808) and self:GetCIDFromGUID(args.destGUID) == 23418 then
|
||||
warnRuneShield:Show()
|
||||
timerRuneShield:Start(args.destName)
|
||||
elseif args:IsSpellID(2143808) then
|
||||
@@ -97,7 +103,7 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(2143808) then
|
||||
if args:IsSpellID(2143808) and self:GetCIDFromGUID(args.destGUID) == 23418 then
|
||||
-- warnRuneShield:Hide()
|
||||
timerRuneShield:Stop()
|
||||
end
|
||||
@@ -109,6 +115,8 @@ function mod:SPELL_CAST_START(args)
|
||||
warnSoulScream:Show()
|
||||
timerSoulScream:Start()
|
||||
timerNextSoulScream:Start()
|
||||
elseif args:IsSpellID(2143764) then
|
||||
warnVengenace:Show()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+413
-543
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,7 @@ local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5019 $"):sub(12, -3))
|
||||
mod:SetCreatureID(22949, 22950, 22951, 22952)
|
||||
mod:SetUsedIcons(4,5,6)
|
||||
mod:RegisterCombat("combat", 22949, 22950, 22951, 22952)
|
||||
|
||||
mod:RegisterEvents(
|
||||
@@ -24,7 +25,7 @@ local timerNextSadism = mod:NewNextTimer(45, 2144464)
|
||||
local timerSadism = mod:NewCastTimer(3.5, 2144464)
|
||||
|
||||
--- Mythic/Ascended
|
||||
local specWarnEmpoweredSadism = mod:NewSpecialWarning("Empowered Sadism", 2144514, 3)
|
||||
local specWarnEmpoweredSadism = mod:NewSpecialWarningSpell(2144514)
|
||||
local timerCastEmpoweredSadism = mod:NewCastTimer(3.5, 2144514)
|
||||
|
||||
|
||||
@@ -33,10 +34,10 @@ local warnSmokeBomb = mod:NewSpellAnnounce(2144560, 3)
|
||||
local timerNextSmokeBomb = mod:NewNextTimer(60, 2144560)
|
||||
|
||||
--Gathios the Shatterer
|
||||
local warnDeathSentence = mod:NewAnnounce("Death Sentence on %s", 3, 2144260)
|
||||
local warnEmpoweredDeathSentence = mod:NewAnnounce("Empowered Death Sentence on %s", 3, 214431)
|
||||
local warnDeathSentence = mod:NewTargetAnnounce(2144260, 3)
|
||||
local warnEmpoweredDeathSentence = mod:NewTargetAnnounce(2144310, 3)
|
||||
local specWarnDeathSentence = mod:NewSpecialWarningYou(2144260)
|
||||
local specWarnEmpoweredDeathSentence= mod:NewSpecialWarning("Empowered Death Sentence on you", 3, 214431)
|
||||
local specWarnEmpoweredDeathSentence= mod:NewSpecialWarningYou(2144310, 4)
|
||||
|
||||
local timerNextDeathSentence = mod:NewNextTimer(60, 2144260)
|
||||
local timerDeathSentence = mod:NewTargetTimer(10, 2144260)
|
||||
@@ -46,10 +47,11 @@ local timerNextConsecrate = mod:NewNextTimer(15, 2144256, nil, false)
|
||||
local timerNextRuneofPower = mod:NewNextTimer(60, 2144368)
|
||||
local warnNetherprotection = mod:NewSpellAnnounce(2144351, 3)
|
||||
local timerNextNetherProtection = mod:NewNextTimer(30, 2144351)
|
||||
local timerTargetNetherProtection = mod:NewTargetTimer(120, 2144351)
|
||||
|
||||
--Authority
|
||||
local timerCrownofCommand = mod:NewTimer(18, "Crown of Command on %s", 2144201)
|
||||
local warnCrownofCommand = mod:NewAnnounce("Crown of Command on %s", 3, 2144201)
|
||||
local timerCrownofCommand = mod:NewTargetTimer(18, 2144201)
|
||||
local warnCrownofCommand = mod:NewSpellAnnounce(2144201, 3)
|
||||
local councilDeath = 0
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
@@ -65,15 +67,15 @@ end
|
||||
|
||||
function mod:SmokeBomb()
|
||||
warnSmokeBomb:Show()
|
||||
timerNextSmokeBomb:cancel()
|
||||
timerNextSmokeBomb:Cancel()
|
||||
if councilDeath == 0 then
|
||||
timerNextSmokeBomb:start(60)
|
||||
timerNextSmokeBomb:Start(60)
|
||||
elseif councilDeath == 1 then
|
||||
timerNextSmokeBomb:start(45)
|
||||
timerNextSmokeBomb:Start(45)
|
||||
elseif councilDeath == 2 then
|
||||
timerNextSmokeBomb:start(30)
|
||||
timerNextSmokeBomb:Start(30)
|
||||
elseif councilDeath == 3 then
|
||||
timerNextSmokeBomb:start(15)
|
||||
timerNextSmokeBomb:Start(15)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -96,7 +98,13 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
warnDeathSentence:Show(args.destName)
|
||||
end
|
||||
timerDeathSentence:Start(args.destName)
|
||||
self:SetIcon(args.destName, 8, 15)
|
||||
if DBM:AntiSpam(2) then
|
||||
self:SetIcon(args.destName, 6, 15)
|
||||
elseif DBM:AntiSpam(2) then
|
||||
self:SetIcon(args.destName, 5, 10)
|
||||
else
|
||||
self:SetIcon(args.destName, 4, 10)
|
||||
end
|
||||
if DBM:AntiSpam(2,5) then
|
||||
if councilDeath == 0 then
|
||||
timerNextDeathSentence:Start(60)
|
||||
@@ -115,7 +123,13 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
warnEmpoweredDeathSentence:Show(args.destName)
|
||||
end
|
||||
timerDeathSentence:Start(args.destName)
|
||||
self:SetIcon(args.destName, 8, 15)
|
||||
if DBM:AntiSpam(2) then
|
||||
self:SetIcon(args.destName, 6, 15)
|
||||
elseif DBM:AntiSpam(2) then
|
||||
self:SetIcon(args.destName, 5, 10)
|
||||
else
|
||||
self:SetIcon(args.destName, 4, 10)
|
||||
end
|
||||
if DBM:AntiSpam(2,4) then
|
||||
if councilDeath == 0 then
|
||||
timerNextDeathSentence:Start(60)
|
||||
@@ -133,6 +147,7 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
timerNextRuneofPower:Start()
|
||||
elseif args:IsSpellID(2144351, 2144401) then
|
||||
warnNetherprotection:Show()
|
||||
timerTargetNetherProtection:Start()
|
||||
end
|
||||
if args:IsSpellID(2144201) then
|
||||
timerCrownofCommand:Start(args.destName)
|
||||
|
||||
@@ -23,6 +23,7 @@ local warnPhase2 = mod:NewPhaseAnnounce(2)
|
||||
|
||||
local timerNextShield = mod:NewNextTimer(80, 2142521)
|
||||
local timerNextDischarge = mod:NewNextTimer(20, 2142504)
|
||||
local timerDischarge = mod:NewTargetTimer(8, 2142504)
|
||||
local timerTargetSpine = mod:NewTargetTimer(30, 2142516)
|
||||
local timerNextSpine = mod:NewNextTimer(30, 2142516)
|
||||
|
||||
@@ -59,6 +60,7 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
timerNextShield:Start()
|
||||
timerNextSpine:Start(10)
|
||||
elseif args:IsSpellID(2142504) then
|
||||
timerDischarge:Start()
|
||||
if args:IsPlayer() then
|
||||
if self.Options.DischargeYellOpt then
|
||||
SendChatMessage(L.SayDischargeFade, "SAY")
|
||||
@@ -104,7 +106,8 @@ function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(2142516, 2142517, 2142518, 2142519) then
|
||||
timerTargetSpine:Stop()
|
||||
if self.Options.SpineIconsOpt then
|
||||
spineWreathIcon = spineWreathIcon + 1
|
||||
self:RemoveIcon(args.destName, 0)
|
||||
spineWreathIcon = math.min(spineWreathIcon + 1, 8) or 8
|
||||
end
|
||||
elseif args:IsSpellID(2142504) then
|
||||
if args:IsPlayer() then
|
||||
|
||||
@@ -55,7 +55,8 @@ local warningWiShahrazVirgo = mod:NewAnnounce(L.ShahrazVirgo, 2, 2144096)
|
||||
|
||||
--Ascended
|
||||
local warningALittleChat = mod:NewSpellAnnounce(2144007, 3)
|
||||
local timerNextALittleChat = mod:NewNextTimer(48, 2144007)
|
||||
local timerCastALittleChat = mod:NewCastTimer(4, 2144007)
|
||||
local timerNextALittleChat = mod:NewNextTimer(49, 2144007)
|
||||
|
||||
--local
|
||||
local isMother = false
|
||||
@@ -84,10 +85,8 @@ function mod:NewThoughts()
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2144012) then
|
||||
warningFatalAttraction:Show()
|
||||
timerNextFatalAttraction:Start()
|
||||
elseif args:IsSpellID(2144050, 2144051) then
|
||||
|
||||
if args:IsSpellID(2144050, 2144051) then
|
||||
warningBossRunning:Show()
|
||||
timerSinfulThoughts:Stop()
|
||||
timerSinisterThoughts:Stop()
|
||||
@@ -111,6 +110,8 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
warningWiShahrazVirgo:Show()
|
||||
elseif args:IsSpellID(2144007) then
|
||||
warningALittleChat:Show()
|
||||
timerNextALittleChat:Start()
|
||||
timerCastALittleChat:Start()
|
||||
end
|
||||
end
|
||||
|
||||
@@ -156,6 +157,9 @@ function mod:SPELL_DAMAGE(args)
|
||||
timerVileThoughts:Stop()
|
||||
timerWickedThoughts:Start()
|
||||
end
|
||||
elseif args:IsSpellID(2144012) and DBM:AntiSpam(15) then
|
||||
warningFatalAttraction:Show()
|
||||
timerNextFatalAttraction:Start()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -22,13 +22,14 @@ local warnThreatDetected = mod:NewTargetAnnounce(2142765, 3)
|
||||
|
||||
local timerTitanic = mod:NewCastTimer(6, 2142758)
|
||||
local timerSupreme = mod:NewCastTimer(2, 2142764)
|
||||
local timerThreatDetected = mod:NewTargetTimer(60, 2142765)
|
||||
local timerThreatDetected = mod:NewTargetTimer(120, 2142765)
|
||||
local timerNextAdds = mod:NewNextTimer(45, 29316)
|
||||
|
||||
local timerEruption = mod:NewCastTimer(4, 2142774)
|
||||
local timerNextPillar = mod:NewNextTimer(15, 2142574)
|
||||
local timerNextPillar = mod:NewNextTimer(20, 2136441)
|
||||
|
||||
local warnPhase2 = mod:NewPhaseAnnounce(2)
|
||||
local warnPhase2Soon = mod:NewAnnounce(L.WarnPhase2Soon, 1)
|
||||
local warnPhaseSoon = mod:NewAnnounce(L.WarnPhaseSoon, 1)
|
||||
local timerEnrage = mod:NewTimer(600, "Berserk", 44427)
|
||||
local oldMarkThreat
|
||||
local oldMarkTarget
|
||||
@@ -37,14 +38,22 @@ mod:AddBoolOption(L.threatIconsOpt)
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
oldMarkThreat = 0
|
||||
self:ScheduleMethod(0-delay, "NewPillar")
|
||||
timerNextAdds:Start(15)
|
||||
self:ScheduleMethod(15-delay, "NewAdds")
|
||||
self:ScheduleMethod(15-delay, "NewPillar")
|
||||
timerEnrage:Start()
|
||||
end
|
||||
|
||||
function mod:NewPillar()
|
||||
self:UnscheduleMethod("NewPillar")
|
||||
timerNextPillar:Start()
|
||||
self:ScheduleMethod(15, "NewPillar")
|
||||
self:ScheduleMethod(20, "NewPillar")
|
||||
end
|
||||
|
||||
function mod:NewAdds()
|
||||
self:UnscheduleMethod("NewAdds")
|
||||
timerNextAdds:Start()
|
||||
self:ScheduleMethod(46, "NewAdds")
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
@@ -52,6 +61,8 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
warnPhase2:Show()
|
||||
timerThreatDetected:Stop()
|
||||
timerEnrage:Stop()
|
||||
self:UnscheduleMethod("NewAdds")
|
||||
self:UnscheduleMethod("NewPillar")
|
||||
elseif args:IsSpellID(2142751) then
|
||||
warnCracked:Show(args.spellName, args.destName, args.amount or 1)
|
||||
elseif args:IsSpellID(2142765) then
|
||||
@@ -59,8 +70,8 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
timerThreatDetected:Stop()
|
||||
timerThreatDetected:Start(args.destName)
|
||||
if self.Options.threatIconsOpt then
|
||||
oldMarkThreat, oldMarkTarget = self:GetIcon(args.destName), args.destName
|
||||
self:SetIcon(args.destName, 8, 60)
|
||||
oldMarkThreat, oldMarkTarget = self:GetIcon(args.destName) or 0, args.destName
|
||||
self:SetIcon(args.destName, 8, 120)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -68,7 +79,7 @@ end
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(2142765) then
|
||||
if self.Options.threatIconsOpt then
|
||||
self:SetIcon(oldMarkTarget, oldMarkThreat or 0)
|
||||
self:SetIcon(oldMarkTarget or args.destName, oldMarkThreat or 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -99,8 +110,8 @@ mod.SPELL_MISSED = mod.SPELL_DAMAGE -- Hack to include SPELL_MISSED as well with
|
||||
function mod:UNIT_HEALTH(unit)
|
||||
if mod:GetUnitCreatureId(unit) == 22898 then
|
||||
local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100;
|
||||
if (hp <= 40) and DBM:AntiSpam(600) then
|
||||
warnPhase2Soon:Show()
|
||||
if (hp <= 35) and DBM:AntiSpam(600) then
|
||||
warnPhaseSoon:Show(2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,63 +7,111 @@ mod:RegisterCombat("yell", L.DBM_GOREFIEND_YELL_PULL)
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_PERIODIC_DAMAGE",
|
||||
"UNIT_AURA"
|
||||
)
|
||||
|
||||
local warningWitherAndRot = mod:NewSpellAnnounce(2143286, 3)
|
||||
local warningGraspingDeath = mod:NewSpellAnnounce(2143282, 3)
|
||||
local specWarnWitherAndRot = mod:NewSpecialWarningYou(2143282)
|
||||
local warnShadowOfDeath = mod:NewSpellAnnounce(2143264, 2)
|
||||
local warnSoulReaper = mod:NewSpellAnnounce(2143272, 2)
|
||||
|
||||
local timerNextWitherAndRot = mod:NewNextTimer(30, 2143286)
|
||||
local timerNextGraspingDeath = mod:NewNextTimer(30, 2143282)
|
||||
local timerNextShadowofDeath = mod:NewNextTimer(30, 2143264)
|
||||
local timerTargetShadowofDeaths = mod:NewTargetTimer(37, 2143264)
|
||||
local timerTargetShadowofDeath = mod:NewTargetTimer(37, 2143264)
|
||||
local timerTargetShadowofDeath2 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath3 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath4 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath5 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath6 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath7 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath8 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath9 = mod:NewTargetTimer(75, 2143264)
|
||||
local timerTargetShadowofDeath10= mod:NewTargetTimer(75, 2143264)
|
||||
local timerSoulReaper = mod:NewNextTimer(20, 2143271)
|
||||
|
||||
--Shadow of death has different timer for everyone. First person to expire has to run out.
|
||||
--Would like to add warnings for Teron's soul shards, tracked in a stacking buff on the boss. Spell id 2143255
|
||||
|
||||
local shadowOfDeathName = GetSpellInfo(2143282)
|
||||
-- local shadowOfDeathName = GetSpellInfo(2143282)
|
||||
|
||||
|
||||
function mod:WitherAndRot()
|
||||
self:UnscheduleMethod("WitherAndRot")
|
||||
warningWitherAndRot:Show()
|
||||
timerNextWitherAndRot:Start()
|
||||
self:ScheduleMethod(30, "WitherAndRot")
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
timerNextWitherAndRot:Start(15-delay)
|
||||
timerNextGraspingDeath:Start(30-delay)
|
||||
timerNextShadowofDeath:Start(10-delay)
|
||||
timerNextGraspingDeath:Start(15-delay)
|
||||
timerSoulReaper:Start(20-delay)
|
||||
self:ScheduleMethod(15, "WitherAndRot")
|
||||
timerNextGraspingDeath:Start(30-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and DBM:AntiSpam(29) then
|
||||
warningWitherAndRot:Show()
|
||||
timerNextWitherAndRot:Start()
|
||||
elseif args:IsSpellID(2143282, 2143283, 2143284, 2143285) and DBM:AntiSpam(29) then
|
||||
if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and DBM:AntiSpam(1) then
|
||||
if args:IsPlayer() then
|
||||
specWarnWitherAndRot:Show()
|
||||
end
|
||||
elseif args:IsSpellID(2143282, 2143283, 2143284, 2143285) and DBM:AntiSpam(1) then
|
||||
warningGraspingDeath:Show()
|
||||
timerNextGraspingDeath:Start()
|
||||
elseif args:IsSpellID(2143264, 2143258, 2143259) and DBM:AntiSpam() then
|
||||
elseif args:IsSpellID(2143264, 2143258, 2143259) then --and DBM:AntiSpam()
|
||||
warnShadowOfDeath:Show()
|
||||
timerNextShadowofDeath:Start()
|
||||
-- timerNextShadowofDeath:Start()
|
||||
-- timerTargetShadowofDeaths:Start()
|
||||
elseif args:IsSpellID(2143271, 2143272, 2143273, 2143274) then
|
||||
warnSoulReaper:Show()
|
||||
timerSoulReaper:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_PERIODIC_DAMAGE(args)
|
||||
if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and DBM:AntiSpam(1) then
|
||||
if args:IsPlayer() then
|
||||
specWarnWitherAndRot:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId
|
||||
-- = UnitAura("unit", index or "name"[, "rank"[, "filter"]])
|
||||
|
||||
function mod:UNIT_AURA(uId)
|
||||
local name = UnitName(uId)
|
||||
if (not name) then return end
|
||||
local spellName, _, _, _, _, duration, expires, _, _, _, spellId = UnitDebuff(uId, shadowOfDeathName)
|
||||
function mod:UNIT_AURA(unit)
|
||||
|
||||
local spellName, _, _, _, _, duration, expires, _, _, _, spellId = UnitDebuff(unit, "Shadow of Death")
|
||||
if spellName == "Shadow of Death" then
|
||||
if not spellId or not expires then return end
|
||||
if args:IsSpellID(2143286, 2143287, 2143288, 2143289) and expires > 0 then
|
||||
if expires < 60 then
|
||||
local name = UnitName(unit)
|
||||
if (not name) then return end
|
||||
expires = expires - GetTime()
|
||||
if expires > 0 then
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath:Start(expires, name)
|
||||
end
|
||||
if expires < 130 and expires > 60 then
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath2:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath3:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath4:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath5:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath6:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath7:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath8:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath9:Start(expires, name)
|
||||
elseif DBM:AntiSpam(500) then
|
||||
timerTargetShadowofDeath10:Start(expires, name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,13 +9,24 @@ mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED"
|
||||
)
|
||||
|
||||
local warningIgnorePain = mod:NewSpellAnnounce(2142343, 3)
|
||||
local warningIgnorePain = mod:NewTargetAnnounce(2142343, 3)
|
||||
local timerIgnorePain = mod:NewBuffActiveTimer(8, 2142343)
|
||||
|
||||
local warningJealousy = mod:NewTargetAnnounce(2142255, 3)
|
||||
local specWarnYouJealousy = mod:NewSpecialWarningYou(2142255)
|
||||
local timerJealousy = mod:NewTargetTimer(10, 2142255)
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2142343) then
|
||||
warningIgnorePain:Show()
|
||||
timerIgnorePain:Start()
|
||||
warningIgnorePain:Show(args.destName)
|
||||
timerIgnorePain:Start(args.destName)
|
||||
elseif args:IsSpellID(2142255) and args.amount and (args.amount % 5 or args.amount > 10) then
|
||||
warningJealousy:Show(args.destName)
|
||||
timerJealousy:Start(args.destName)
|
||||
if args:IsPlayer() then
|
||||
specWarnYouJealousy:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED -- Hack to include applied_dose as well without more code
|
||||
@@ -361,6 +361,21 @@ L:SetMiscLocalization{
|
||||
TimerCombatStart = "Combat starts",
|
||||
TimerHumanForm = "Human Form",
|
||||
TimerDemonForm = "Demon Form",
|
||||
Pull = "Akama. Your duplicity is hardly surprising. I should have slaughtered you and your malformed brethren long ago.",
|
||||
RealPull = "You are not prepared!",
|
||||
Eyebeam = "Stare into the eyes of the Betrayer!",
|
||||
Demon = "You know nothing of power!",
|
||||
DemonWithinQuote = "Behold the power... of the demon within!",
|
||||
Phase4 = "Is this it, mortals? Is this all the fury you can muster?",
|
||||
MaievTrap = "There shall be no prison for you this time!",
|
||||
Trapped1 = "That is for Naisha!",
|
||||
Trapped2 = "Bleed as I have bled!",
|
||||
Trapped3 = "Meet your end, demon!",
|
||||
S1YouAreNotPrepared = "Stage One: You Are Not Prepared",
|
||||
S2FlamesOfAzzinoth = "Stage Two: Flames of Azzinoth",
|
||||
S3TheDemonWithin = "Stage Three: The Demon Within",
|
||||
S4TheLongHunt = "Stage Four: The Long Hunt",
|
||||
DemonWithin = "Demon Form"
|
||||
}
|
||||
|
||||
-- DBM_ILLIDAN_NAME = "Illidan Stormrage"
|
||||
|
||||
@@ -255,3 +255,6 @@ v5.20 06/04/2024
|
||||
- Fixed many bugs to Black Temple
|
||||
- Added many new mechanics to Black Temple
|
||||
- Fixed auch crypt spam
|
||||
----------------------------------------------------------------------------------------------------
|
||||
v5.21 29/09/2024
|
||||
- Added Sunwell
|
||||
@@ -42,10 +42,10 @@
|
||||
-- Globals/Default Options --
|
||||
-------------------------------
|
||||
DBM = {
|
||||
Revision = ("$Revision: 5020 $"):sub(12, -3),
|
||||
Version = "5.20",
|
||||
DisplayVersion = "5.20", -- the string that is shown as version
|
||||
ReleaseRevision = 5019 -- the revision of the latest stable version that is available (for /dbm ver2)
|
||||
Revision = ("$Revision: 5021 $"):sub(12, -3),
|
||||
Version = "5.21",
|
||||
DisplayVersion = "5.21", -- the string that is shown as version
|
||||
ReleaseRevision = 5020 -- the revision of the latest stable version that is available (for /dbm ver2)
|
||||
}
|
||||
|
||||
DBM_SavedOptions = {}
|
||||
|
||||
@@ -20,42 +20,42 @@ mod:RegisterEvents(
|
||||
"SPELL_MISSED"
|
||||
)
|
||||
|
||||
local WarnInfernal = mod:NewSpellAnnounce(30511, 2)
|
||||
local WarnInfernal = mod:NewSpellAnnounce(2132327, 2)
|
||||
local WarnHeal = mod:NewCastAnnounce(30528, 2, nil, false)
|
||||
local WarnNova = mod:NewSpellAnnounce(30616, 2)
|
||||
local WarnNova = mod:NewSpellAnnounce(2132301, 2)
|
||||
local specWarnNova = mod:NewSpecialWarning("Pre-Quake Blast Nova in 10 seconds!")
|
||||
local WarnQuake = mod:NewSpellAnnounce(85026, 2)
|
||||
local WarnQuake = mod:NewSpellAnnounce(2132310, 2)
|
||||
local specWarnDebris = mod:NewSpecialWarningYou(85030)
|
||||
local specWarnConflag = mod:NewSpecialWarningYou(351085)
|
||||
local warnMortalCleave = mod:NewAnnounce(L.MagCleave, 2, 85178)
|
||||
local specWarnConflag = mod:NewSpecialWarningYou(2132315)
|
||||
local warnGlaiveCleave = mod:NewAnnounce(L.MagCleave, 2, 2132300)
|
||||
local warnInterrupt = mod:NewAnnounce("Magtheridon interrupted", 3, "Interface\\Icons\\ability_kick")
|
||||
local warnPhaseTwo = mod:NewAnnounce("Magtheridon is free!", 3, "Interface\\Icons\\Achievement_Boss_Magtheridon")
|
||||
local warnPhaseThree = mod:NewAnnounce("Phase 3", 3, "Interface\\Icons\\Achievement_Boss_Magtheridon")
|
||||
|
||||
local timerQuake = mod:NewNextTimer(60, 85026)
|
||||
local timerSpecialNova = mod:NewTimer(55, "!!Pre-Quake Blast Nova!!", 30616, 3)
|
||||
local Nova = 1;
|
||||
local timerNova = mod:NewTimer(55, "Blast Nova #%s", 30616)
|
||||
local timerNextQuake = mod:NewNextTimer(60, 2132310)
|
||||
local timerNextSpecialNova = mod:NewTimer(55, "!!Pre-Quake Blast Nova!!", 2132301, 3)
|
||||
local timerNextNova = mod:NewTimer(55, "Blast Nova #%s", 2132301)
|
||||
local timerPhaseTwo = mod:NewPhaseTimer(120, 30205, "Magtheridon breaks free")
|
||||
local timerFallingRoof = mod:NewTimer(10, "Roof is collapsing!")
|
||||
|
||||
--Heroic
|
||||
-- local AnnounceHandofDeath = mod:NewTargetAnnounce(85437,2)
|
||||
local specWarnYouHand = mod:NewSpecialWarningYou(85437)
|
||||
local warnHandofDeath = mod:NewTargetAnnounce(85437, 3.8)
|
||||
local timerHandofDeath = mod:NewTargetTimer(4, 85437)
|
||||
local timerNextHandofDeath = mod:NewNextTimer(30, 85437)
|
||||
-- local AnnounceHandofDeath = mod:NewTargetAnnounce(2132323,2)
|
||||
local specWarnYouHand = mod:NewSpecialWarningYou(2132323)
|
||||
local warnHandofDeath = mod:NewTargetAnnounce(2132323, 3.8)
|
||||
local timerHandofDeath = mod:NewTargetTimer(4, 2132323)
|
||||
local timerNextHandofDeath = mod:NewNextTimer(30, 2132323)
|
||||
|
||||
-- local AnnounceFingerofDeath = mod:NewTargetAnnounce(85408,2)
|
||||
local specWarnYouFinger = mod:NewSpecialWarningYou(85408)
|
||||
local warnFingerofDeath = mod:NewTargetAnnounce(85408, 3.8)
|
||||
local timerFingerofDeath = mod:NewTargetTimer(4, 85408)
|
||||
local timerNextFingerofDeath = mod:NewNextTimer(30, 85408)
|
||||
-- local AnnounceFingerofDeath = mod:NewTargetAnnounce(2132319,2)
|
||||
local specWarnYouFinger = mod:NewSpecialWarningYou(2132319)
|
||||
local warnFingerofDeath = mod:NewTargetAnnounce(2132319, 3.8)
|
||||
local timerFingerofDeath = mod:NewTargetTimer(4, 2132319)
|
||||
local timerNextFingerofDeath = mod:NewNextTimer(30, 2132319)
|
||||
|
||||
local specWarnYouFelShock = mod:NewSpecialWarningYou(85407)
|
||||
local timerNextFelShock = mod:NewNextTimer(11, 85407)
|
||||
local specWarnYouFelShock = mod:NewSpecialWarningYou(2132333)
|
||||
local timerNextFelShock = mod:NewNextTimer(11, 2132333)
|
||||
|
||||
-- local
|
||||
local Nova = 1;
|
||||
local isMag = false;
|
||||
local below30 = false;
|
||||
local deathAbility = 0;
|
||||
@@ -110,25 +110,25 @@ function mod:NextHandofDeath()
|
||||
end
|
||||
|
||||
function mod:OnCombatEnd()
|
||||
timerQuake:Cancel()
|
||||
timerSpecialNova:Cancel()
|
||||
timerNova:Cancel()
|
||||
timerNextQuake:Cancel()
|
||||
timerNextSpecialNova:Cancel()
|
||||
timerNextNova:Cancel()
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(85030) and args:IsPlayer() then
|
||||
specWarnDebris:Show()
|
||||
elseif args:IsSpellID(30168) then
|
||||
elseif args:IsSpellID(2132337) then
|
||||
warnInterrupt:Show()
|
||||
elseif args:IsSpellID(85405) then
|
||||
elseif args:IsSpellID(2132331) then
|
||||
if args:IsPlayer() then
|
||||
-- SendChatMessage("Fel Shock on "..UnitName("PLAYER")..", STACK ON ME!", "YELL")
|
||||
specWarnYouFelShock:Show()
|
||||
end
|
||||
timerNextFelShock:Start()
|
||||
elseif args:IsSpellID(30619) then
|
||||
warnMortalCleave:Show(args.spellName, args.destName, args.amount or 1)
|
||||
elseif args:IsSpellID(351085) then
|
||||
elseif args:IsSpellID(2132300) then
|
||||
warnGlaiveCleave:Show(args.spellName, args.destName, args.amount or 1)
|
||||
elseif args:IsSpellID(2132315, 2132316, 2132317, 2132318) then
|
||||
if args:IsPlayer() then
|
||||
specWarnConflag:Show()
|
||||
end
|
||||
@@ -136,9 +136,9 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
if args:IsSpellID(30619) and args.amount >= 4 then
|
||||
warnMortalCleave:Show(args.spellName, args.destName, args.amount or 1)
|
||||
elseif args:IsSpellID(351085) then
|
||||
if args:IsSpellID(2132300) and args.amount >= 4 then
|
||||
warnGlaiveCleave:Show(args.spellName, args.destName, args.amount or 1)
|
||||
elseif args:IsSpellID(2132315) then
|
||||
if args:IsPlayer() then
|
||||
specWarnConflag:Show()
|
||||
end
|
||||
@@ -180,8 +180,8 @@ end
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
if msg == L.DBM_MAG_YELL_PHASE2 and self.vb.phase == 1 then
|
||||
timerQuake:Cancel()
|
||||
timerNova:Cancel()
|
||||
timerNextQuake:Cancel()
|
||||
timerNextNova:Cancel()
|
||||
if mod:IsDifficulty("heroic10", "heroic25") then
|
||||
timerNextFingerofDeath:Start(21)
|
||||
timerNextHandofDeath:Start(36)
|
||||
@@ -189,8 +189,8 @@ function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
self:ScheduleMethod(36,"NextHandofDeath");
|
||||
end
|
||||
timerPhaseTwo:Cancel()
|
||||
timerQuake:Start(41)
|
||||
timerNova:Start(66, tostring(Nova))
|
||||
timerNextQuake:Start(41)
|
||||
timerNextNova:Start(66, tostring(Nova))
|
||||
below30 = false;
|
||||
isMag = true;
|
||||
self.vb.phase = 2
|
||||
@@ -222,23 +222,47 @@ end
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(30528) then
|
||||
WarnHeal:Show()
|
||||
elseif args:IsSpellID(85026) then
|
||||
elseif args:IsSpellID(2132310) then
|
||||
WarnQuake:Show()
|
||||
timerQuake:Start()
|
||||
elseif args:IsSpellID(30616) then
|
||||
timerNextQuake:Start()
|
||||
|
||||
local elapsedHand, totalHand = timerNextHandofDeath:GetTime()
|
||||
local remainingTimerNextHand = totalHand - elapsedHand
|
||||
local elapsedFinger, totalFinger = timerNextFingerofDeath:GetTime()
|
||||
local remainingTimerNextFinger = totalFinger - elapsedFinger
|
||||
if math.min(remainingTimerNextFinger, remainingTimerNextHand) - 7 < 0 then
|
||||
if remainingTimerNextFinger < remainingTimerNextHand then
|
||||
timerNextFingerofDeath:AddTime(7)
|
||||
else
|
||||
timerNextHandofDeath:AddTime(7)
|
||||
end
|
||||
end
|
||||
elseif args:IsSpellID(2132301) then
|
||||
Nova = Nova + 1;
|
||||
WarnNova:Show()
|
||||
if Nova >= 7 then
|
||||
timerSpecialNova:Start()
|
||||
timerNextSpecialNova:Start()
|
||||
specWarnNova:Schedule(45)
|
||||
else
|
||||
timerNova:Start(55, tostring(Nova))
|
||||
timerNextNova:Start(55, tostring(Nova))
|
||||
|
||||
local elapsedHand, totalHand = timerNextHandofDeath:GetTime()
|
||||
local remainingTimerNextHand = totalHand - elapsedHand
|
||||
local elapsedFinger, totalFinger = timerNextFingerofDeath:GetTime()
|
||||
local remainingTimerNextFinger = totalFinger - elapsedFinger
|
||||
if math.min(remainingTimerNextFinger, remainingTimerNextHand) - 7 < 0 then
|
||||
if remainingTimerNextFinger < remainingTimerNextHand then
|
||||
timerNextFingerofDeath:AddTime(3)
|
||||
else
|
||||
timerNextHandofDeath:AddTime(3)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if args:IsSpellID(85437, 85409) then
|
||||
if args:IsSpellID(2132323, 2132324, 2132325, 2132326) then
|
||||
self:ScheduleMethod(0.2, "HandofDeath")
|
||||
elseif args:IsSpellID(85408) then
|
||||
elseif args:IsSpellID(2132319, 2132320, 2132321, 2132322) then
|
||||
self:ScheduleMethod(0.2, "FingerofDeath")
|
||||
end
|
||||
end
|
||||
@@ -252,7 +276,7 @@ function mod:SPELL_SUMMON(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(30511) then
|
||||
if args:IsSpellID(2132327, 2132328, 2132329, 2132330) then
|
||||
WarnInfernal:Show()
|
||||
end
|
||||
end
|
||||
@@ -275,14 +299,14 @@ function mod:UNIT_HEALTH(unit)
|
||||
local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100;
|
||||
if (hp <= 30) then
|
||||
self.vb.phase = 3
|
||||
local elapsed, total = timerQuake:GetTime();
|
||||
timerQuake:Update(elapsed, total+12);
|
||||
local elapsed, total = timerNextQuake:GetTime();
|
||||
timerNextQuake:Update(elapsed, total+12);
|
||||
if Nova >= 7 then
|
||||
local elapsed, total = timerSpecialNova:GetTime();
|
||||
timerSpecialNova:Update(elapsed, total+12);
|
||||
local elapsed, total = timerNextSpecialNova:GetTime();
|
||||
timerNextSpecialNova:Update(elapsed, total+12);
|
||||
else
|
||||
local elapsed, total = timerNova:GetTime(tostring(Nova));
|
||||
timerNova:Update(elapsed, total+12, tostring(Nova));
|
||||
local elapsed, total = timerNextNova:GetTime(tostring(Nova));
|
||||
timerNextNova:Update(elapsed, total+12, tostring(Nova));
|
||||
end
|
||||
below30 = true;
|
||||
end
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
## X-DBM-Mod-LoadZone-deDE: Höllenfeuerbollwerk,Der Blutkessel,Die zerschmetterten Hallen,Die Sklavenunterkünfte,Tiefensumpf,Die Dampfkammer,Auchenaikrypta,Managruft,Sethekkhallen,Schattenlabyrinth,Vorgebirge des Alten Hügellands,Der schwarze Morast,Die Mechanar,Die Botanika,Die Arkatraz,Terrasse der Magister
|
||||
## X-DBM-Mod-LoadZone-ruRU: Бастионы Адского Пламени,Кузня Крови,Разрушенные залы,Узилище,Нижетопь,Паровое подземелье,Аукенайские гробницы,Гробницы Маны,Сетеккские залы,Темный лабиринт,Старые предгорья Хилсбрада,Черные топи,Механар,Ботаника,Аркатрац,Терраса Магистров
|
||||
## X-DBM-Mod-LoadZone-esES: Murallas del Fuego Infernal,El Horno de Sangre,Las Salas Arrasadas,Recinto de los Esclavos,La Sotiénaga,La Cámara de Vapor,Criptas Auchenai,Tumbas de Maná,Salas Sethekk,Laberinto de las Sombras,Antiguas Laderas de Trabalomas,La Ciénaga Negra,El Mechanar,El Invernáculo,El Arcatraz,Bancal del Magister
|
||||
|
||||
MythicChampion.lua
|
||||
localization.en.lua
|
||||
localization.de.lua
|
||||
localization.ru.lua
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
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
|
||||
|
||||
@@ -1153,5 +1153,19 @@ L:SetMiscLocalization({
|
||||
KaelP2 = "I'll turn your world... upside... down."
|
||||
})
|
||||
|
||||
------------------------------------
|
||||
-- Kael'thas Sunstrider (Party) --
|
||||
------------------------------------
|
||||
L = DBM:GetModLocalization("Mythic Champion")
|
||||
|
||||
L:SetGeneralLocalization({
|
||||
name = "Mythic Champion"
|
||||
})
|
||||
--------------------------
|
||||
-- Mythic Champion TBC --
|
||||
--------------------------
|
||||
L = DBM:GetModLocalization("Mythic Champion")
|
||||
|
||||
L:SetGeneralLocalization({
|
||||
name = "Mythic Champion"
|
||||
})
|
||||
@@ -8,11 +8,12 @@
|
||||
## X-DBM-Mod: 1
|
||||
## X-DBM-Mod-Category: Vanilla
|
||||
## X-DBM-Mod-Has-Heroic-Mode: 0
|
||||
## X-DBM-Mod-SubCategories: Blackrock Depths,Blackrock Spire,Dire Maul,Scholomance,Stratholme
|
||||
## X-DBM-Mod-SubCategories: Blackrock Depths,Blackrock Spire,Dire Maul,Scholomance,Stratholme,Blackfathom Deeps
|
||||
## X-DBM-Mod-Name: Party-Vanilla
|
||||
## X-DBM-Mod-Sort: 125
|
||||
## X-DBM-Mod-LoadZone: Blackrock Depths,Blackrock Spire,Dire Maul,Scholomance,Stratholme
|
||||
## X-DBM-Mod-LoadZone: Blackrock Depths,Blackrock Spire,Dire Maul,Scholomance,Stratholme,Blackfathom Deeps
|
||||
|
||||
MythicChampion.lua
|
||||
localization.en.lua
|
||||
Scholomance\BloodSteward.lua
|
||||
Scholomance\Kirtonos.lua
|
||||
@@ -124,3 +125,16 @@ Dire Maul\Tendris.lua
|
||||
Dire Maul\Thimblejack.lua
|
||||
Dire Maul\Tsuzee.lua
|
||||
Dire Maul\Zevrim.lua
|
||||
Blackfathom Deeps\GhamooRa.lua
|
||||
Blackfathom Deeps\Gelihast.lua
|
||||
Blackfathom Deeps\LorgusJett.lua
|
||||
Blackfathom Deeps\OldSerrakis.lua
|
||||
Blackfathom Deeps\TwilightLord.lua
|
||||
Blackfathom Deeps\Zora.lua
|
||||
Blackfathom Deeps\AkuMai.lua
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
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"
|
||||
)
|
||||
|
||||
-- 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)
|
||||
|
||||
|
||||
mod:AddBoolOption("SetIconOnBombTarget", true)
|
||||
|
||||
|
||||
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)
|
||||
end
|
||||
end
|
||||
@@ -559,3 +559,8 @@ L = DBM:GetModLocalization("Pusillin")
|
||||
L:SetGeneralLocalization({
|
||||
name = "Pusillin"
|
||||
})
|
||||
L = DBM:GetModLocalization("Mythic Champion")
|
||||
|
||||
L:SetGeneralLocalization({
|
||||
name = "Mythic Champion"
|
||||
})
|
||||
@@ -25,7 +25,6 @@ L:SetOptionLocalization{
|
||||
WarnPhase = "Anunciar cambios de fase",
|
||||
SpecWarnMark = "Mostrar aviso cuando el daño del perjuicio de las marcas esté por encima del 100%",
|
||||
TimerMark = "Mostrar temporizador para las siguientes marcas",
|
||||
RangeFrame = DBM_CORE_L.AUTO_RANGE_OPTION_TEXT_SHORT:format(10)
|
||||
}
|
||||
|
||||
L:SetMiscLocalization{
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
local mod = DBM:NewMod("Arynyes", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(25837)
|
||||
mod:SetUsedIcons()
|
||||
|
||||
mod:RegisterCombat("yell", L.GauntletPull)
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"CHAT_MSG_MONSTER_YELL",
|
||||
"CHAT_MSG_MONSTER_EMOTE",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"CHAT_MSG_MONSTER_SAY",
|
||||
"CHAT_MSG_RAID_WARNING"
|
||||
)
|
||||
|
||||
|
||||
-- Vengeful Smite 2145868 (Spell_Damage) [after Imp Bullwark]
|
||||
-- Vengeful Retaliation 2145870 (Spell_cast_start) [start: 15 sec, 30 sec freq, 1 sec charge, 8 sec duration]
|
||||
-- Impenetrable Bullwark 2145867 (Spell_cast_success) [start: 5 sec, 30 sec freq, 5 sec duration]
|
||||
-- Judgement of Vengeance 2145874 (Spell_cast_start) [start: 25 sec, 30 sec freq, 1 sec cast]
|
||||
|
||||
local timerImpBullwark = mod:NewNextTimer(30, 2145867)
|
||||
local channelImpBullwark = mod:NewCastTimer(5, 2145867)
|
||||
local specWarnImpBullwark = mod:NewSpecialWarning("High Commander Arynyes is channeling Impenetrable Bullwark!", 2145867,3)
|
||||
|
||||
local timerVengeSmite = mod:NewNextTimer(30,2145868)
|
||||
local warnVengeSmite = mod:NewSpellAnnounce(2145868, 2)
|
||||
|
||||
local timerVengefulRetal = mod:NewNextTimer(30, 2145870)
|
||||
local castVengefulRetal = mod:NewCastTimer(1, 2145870)
|
||||
local channelVengefulRetal = mod:NewCastTimer(8, 2145870)
|
||||
local warnVengefulRetal = mod:NewSpellAnnounce(2145870, 2)
|
||||
|
||||
local timerJudgement = mod:NewNextTimer(30, 2145874)
|
||||
local castJudgement = mod:NewCastTimer(1, 2145874)
|
||||
local warnJudgement = mod:NewSpellAnnounce(2145874, 2)
|
||||
|
||||
local berserkTimer = mod:NewBerserkTimer(600)
|
||||
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
berserkTimer:Start(-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args.sourceName == "High Commander Arynyes" and args:IsSpellID(2145867) then
|
||||
channelImpBullwark:Start()
|
||||
timerVengeSmite:Schedule(5)
|
||||
specWarnImpBullwark:Show()
|
||||
warnVengeSmite:Schedule(5)
|
||||
timerImpBullwark:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args.sourceName == "High Commander Arynyes" and args:IsSpellID(2145870, 2145872) then
|
||||
castVengefulRetal:Start()
|
||||
channelVengefulRetal:Schedule(1)
|
||||
warnVengefulRetal:Show()
|
||||
timerVengefulRetal:Start()
|
||||
elseif args.sourceName == "High Commander Arynyes" and args:IsSpellID(2145874, 2145875, 2145876, 2145877) then
|
||||
castJudgement:Start()
|
||||
warnJudgement:Show()
|
||||
timerJudgement:Start()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
if msg == L.ArynPull or msg:find(L.ArynPull) then
|
||||
self.vb.phase = 2
|
||||
timerImpBullwark:Start(5)
|
||||
timerVengeSmite:Start(10)
|
||||
timerVengefulRetal:Start(15)
|
||||
timerJudgement:Start(25)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnCombatEnd()
|
||||
timerImpBullwark:Cancel()
|
||||
timerVengeSmite:Cancel()
|
||||
timerVengefulRetal:Cancel()
|
||||
timerJudgement:Cancel()
|
||||
end
|
||||
@@ -0,0 +1,195 @@
|
||||
local mod = DBM:NewMod("Brutallus", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(24882)
|
||||
|
||||
|
||||
mod:RegisterCombat("combat")
|
||||
mod:RegisterCombat("yell", L.BrutPull)
|
||||
|
||||
mod.disableHealthCombat = true
|
||||
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_START",
|
||||
"CHAT_MSG_MONSTER_YELL",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
local warnMeteorSlash = mod:NewSpellAnnounce(2145705, 2) -- 2145704, 2145705, 2145707, 2145708
|
||||
local warnMeteorSlashStack = mod:NewSpecialWarningStack(2145705, nil, 3) -- 2145704, 2145705, 2145707, 2145708
|
||||
local timerNextMeteorSlash = mod:NewNextTimer(10, 2145705) -- 2145704, 2145705, 2145707, 2145708
|
||||
|
||||
-- 10%, 10%, 13%, 15%, 15%.
|
||||
|
||||
local warnTrample = mod:NewSpellAnnounce(2145709, 3) -- 2145709, 2145710, 2145711 spell_aura_applied
|
||||
local warnTrampleSoon = mod:NewSoonAnnounce(2145709, 3) -- 2145709, 2145710, 2145711 spell_aura_applied
|
||||
local timerNextTrample = mod:NewNextTimer(30, 2145709) -- 2145709, 2145710, 2145711 spell_aura_applied
|
||||
local timerCastTrample = mod:NewCastTimer(1, 2145709) -- 2145709, 2145710, 2145711 spell_aura_applied
|
||||
local timerTargetTrample = mod:NewTargetTimer(9, 2145709) -- 2145709 spell_aura_applied
|
||||
|
||||
local warnFelfireBreath = mod:NewSpellAnnounce(2145717, 2) -- 2145717, 2145718, Spell_cast_start
|
||||
local timerNextFelfireBreath = mod:NewNextTimer(60, 2145717) -- 2145717, 2145718, Spell_cast_start
|
||||
|
||||
local yellFelFire = mod:NewFadesYell(2145719) -- 2145719, 2145720, 2145721 spell_aura_applied
|
||||
local specwarnFelfireBurn = mod:NewSpecialWarningYou(2145719) -- 2145719, 2145720, 2145721 spell_aura_applied
|
||||
local warnFelfireTargets = mod:NewTargetAnnounce(2145719, 3) -- 2145719, 2145720, 2145721 spell_aura_applied
|
||||
local timerFelFireBurn = mod:NewTimer(5, "Felfire Burn turns volatile in:", 2145719)
|
||||
local timerFelFireBurnYou = mod:NewTimer(5, "%s: Felfire Burn spreads in:", 2145719)
|
||||
local timerTargetFelFireBurn = mod:NewTargetTimer(60, 2145719) -- 2145719, 2145720, 2145721 spell_aura_applied
|
||||
|
||||
local timerExcitement = mod:NewBuffActiveTimer(50, 2145703) -- 2145703 Aura_applied Spell_aura_removed
|
||||
|
||||
|
||||
local excitementStage = 0
|
||||
local oldhasExcitement = 0
|
||||
local hasExcitement = false
|
||||
local hp = 100
|
||||
local prevHP = 100
|
||||
local hpAtEnd = 0
|
||||
local oldTime = 0
|
||||
local currTime = 0
|
||||
local timeElapsed = 0
|
||||
local timeToEnd = 0
|
||||
|
||||
local felfireTargets = {}
|
||||
local felfireIcon = 7
|
||||
|
||||
mod:AddBoolOption("RangeFrame", true)
|
||||
mod:AddBoolOption("felFireYellOpt", true)
|
||||
|
||||
local function WarnFelfireTargets()
|
||||
warnFelfireTargets:Show(table.concat(felfireTargets, "<, >"))
|
||||
table.wipe(felfireTargets)
|
||||
-- felfireIcon = 7
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
if self.Options.RangeFrame then
|
||||
DBM.RangeCheck:Show()
|
||||
end
|
||||
self.vb.phase = 1
|
||||
felfireIcon = 7
|
||||
hasExcitement = false
|
||||
excitementStage = 0
|
||||
oldhasExcitement = 0
|
||||
hp = 100
|
||||
prevHP = 100
|
||||
timerNextMeteorSlash:Start(10-delay)
|
||||
timerNextFelfireBreath:Start(45-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2145705, 2145706, 2145707, 2145708) then
|
||||
if args.destName == UnitName("Player") and args.amount and args.amount > 2 then
|
||||
warnMeteorSlashStack:Show(args.amount or 1)
|
||||
end
|
||||
elseif args:IsSpellID(2145709) then --only main target
|
||||
timerTargetTrample:Start(args.destName)
|
||||
elseif args:IsSpellID(2145703) then
|
||||
hasExcitement = true
|
||||
timerExcitement:Start(args.destName)
|
||||
excitementStage = excitementStage + 1
|
||||
elseif args:IsSpellID(2145719, 2145720, 2145721, 2145721) then
|
||||
felfireTargets[#felfireTargets + 1] = args.destName
|
||||
if args:IsPlayer() then
|
||||
specwarnFelfireBurn:Show()
|
||||
timerFelFireBurnYou:Start(args.destName)
|
||||
if self.Options.felFireYellOpt then
|
||||
-- SendChatMessage(L.felFireYell, "YELL")
|
||||
yellFelFire:Countdown(60,6)
|
||||
end
|
||||
end
|
||||
timerTargetFelFireBurn:Start(args.destName)
|
||||
self:SetIcon(args.destName, felfireIcon, 60)
|
||||
if felfireIcon < 1 or felfireIcon > 7 then
|
||||
felfireIcon = 7
|
||||
end
|
||||
felfireIcon = felfireIcon - 1
|
||||
self:Unschedule(WarnFelfireTargets)
|
||||
self:Schedule(0.2, WarnFelfireTargets)
|
||||
end
|
||||
end
|
||||
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||||
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID(2145703) then
|
||||
hasExcitement = false
|
||||
timerExcitement:Stop()
|
||||
timerNextTrample:Stop()
|
||||
warnTrample:Schedule(1)
|
||||
timerCastTrample:Schedule(1)
|
||||
timerNextMeteorSlash:Stop()
|
||||
timerNextMeteorSlash:Start(13)
|
||||
elseif args:IsSpellID(2145719, 2145720, 2145721, 2145721) then
|
||||
self:SetIcon(args.destName, 0)
|
||||
felfireIcon = felfireIcon + 1
|
||||
-- for i, name in ipairs(felfireTargets) do
|
||||
-- if name == args.destName then
|
||||
-- table.remove(felfireTargets, i)
|
||||
-- end
|
||||
-- end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2145705, 2145706, 2145707, 2145708) then
|
||||
warnMeteorSlash:Show()
|
||||
timerNextMeteorSlash:Start()
|
||||
if timerTargetTrample:GetTime() > 0 then
|
||||
timerTargetTrample:AddTime(2)
|
||||
end
|
||||
-- elseif args:IsSpellID(2145709, 2145710, 2145711) then
|
||||
-- timerNextTrample:Start()
|
||||
elseif args:IsSpellID(2145717) and args.sourceName == "Brutallus" then
|
||||
timerNextFelfireBreath:Start()
|
||||
warnFelfireBreath:Show()
|
||||
timerFelFireBurn:Schedule(1)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnCombatEnd()
|
||||
timerNextTrample:Stop()
|
||||
end
|
||||
|
||||
function mod:UNIT_HEALTH(unit)
|
||||
if (mod:GetUnitCreatureId(unit) == 24882) and hasExcitement then
|
||||
hp = math.ceil((math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100)
|
||||
if excitementStage ~= oldhasExcitement then
|
||||
|
||||
oldhasExcitement = excitementStage
|
||||
hpAtEnd = hp - (excitementStage + 8)
|
||||
|
||||
prevHP = hp
|
||||
currTime = GetTime()
|
||||
elseif hp ~= prevHP and hp > hpAtEnd then
|
||||
prevHP = math.ceil((math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100)
|
||||
oldTime = currTime
|
||||
currTime = GetTime()
|
||||
timeElapsed = currTime - oldTime
|
||||
|
||||
timeToEnd = timeElapsed * (hp - hpAtEnd)
|
||||
if timeToEnd < 5 and timeToEnd > 0 then
|
||||
warnTrampleSoon:Show()
|
||||
end
|
||||
|
||||
timerNextTrample:Start(timeToEnd+1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
Timers
|
||||
Meteor Slash 10 seconds after pull. Happens twice, once 10 seconds after the other. Rotation is approx Pull, 10s, 10s, 14s, 10s, 20s, 10s, 20s, 10s, etc. The 20 seconds are random, between 17 seconds and 23 seconds.
|
||||
Trample 23 seconds after pull, then every 60 seconds
|
||||
Felfire Breath 45 seconds after pull, then every 60 seconds
|
||||
|
||||
Notes
|
||||
Meteor slash timer is fucked. The 20 second timer is very approximate, and ranges from 17 to 23 seconds.
|
||||
]]--
|
||||
@@ -0,0 +1,20 @@
|
||||
## Interface: 30300
|
||||
## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Sunwell|r
|
||||
## LoadOnDemand: 1
|
||||
## RequiredDeps: DBM-Core, DBM-BurningCrusade
|
||||
## SavedVariablesPerCharacter: DBMSunwell_SavedVars, DBMSunwell_SavedStats
|
||||
## X-DBM-Mod: 1
|
||||
## X-DBM-Mod-Category: BC
|
||||
## X-DBM-Mod-Name: Sunwell Plateau
|
||||
## X-DBM-Tab-Sort: 307
|
||||
## X-DBM-Mod-LoadZone: Sunwell Plateau
|
||||
MapSizes.lua
|
||||
localization.en.lua
|
||||
Kalecgos.lua
|
||||
KalecgosFrame.lua
|
||||
Brutallus.lua
|
||||
Felmyst.lua
|
||||
EredarTwins.lua
|
||||
M'uru.lua
|
||||
Kil'jaeden.lua
|
||||
Arynyes.lua
|
||||
@@ -0,0 +1,291 @@
|
||||
local mod = DBM:NewMod("Twins", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(25165, 25166)
|
||||
mod:SetUsedIcons(7, 8)
|
||||
|
||||
mod:RegisterCombat("combat")
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_CAST_START",
|
||||
"CHAT_MSG_MONSTER_YELL",
|
||||
"CHAT_MSG_MONSTER_EMOTE",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"CHAT_MSG_MONSTER_SAY",
|
||||
"CHAT_MSG_RAID_WARNING",
|
||||
"UNIT_HEALTH"
|
||||
)
|
||||
|
||||
mod:SetBossHealthInfo(
|
||||
25165, L.Sacrolash,
|
||||
25166, L.Alythess
|
||||
)
|
||||
|
||||
--phase 1
|
||||
local timerDance = mod:NewTimer(15,"Fire Dance/Dawn Runner", 2145929)
|
||||
local timerTwinFade = mod:NewTimer(10, "The strongest Twin remains", 148477)
|
||||
|
||||
-- Alythess Phase
|
||||
local warnSolarBurn = mod:NewSpecialWarningStack(2145905, nil, 4) -- 2145905, 2145906 spell_aura_applied
|
||||
local timerFlingAlyth = mod:NewTargetTimer(1, 2145916)
|
||||
local warnFireDance = mod:NewSpellAnnounce(2145928, 3) -- 2145928
|
||||
local timerFireDance = mod:NewNextTimer(30, 2145928)
|
||||
|
||||
-- Sacrolash abilities in Aly phase
|
||||
local timerCrescentMoonKick = mod:NewTargetTimer(2, 2146019)
|
||||
--local warnLunarFlare = mod:NewAnnounce(,2146007, 3) -- 2145907, 2145908
|
||||
local warnCrushingShadow = mod:NewSpellAnnounce(2146029, 3) -- 2146030 spell_Cast_start
|
||||
local timerCrushingShadow = mod:NewNextTimer(29,2146029)
|
||||
|
||||
-- Sacrolash Phase
|
||||
local warnLunarBurn = mod:NewAnnounce("WarnLunarStacks", 2, 2146005)
|
||||
local warnFling = mod:NewTargetAnnounce(2146016, 3) -- 2146017 spell_Cast_start 40s CD, Unless pushed back
|
||||
local timerFlingSacro = mod:NewTargetTimer(1, 2146016)
|
||||
local warnDawnRunner = mod:NewSpellAnnounce(2146027, 3)
|
||||
local timerDawnRunner = mod:NewNextTimer(30, 2146027)
|
||||
|
||||
-- Alythess abilities in Sacro phase
|
||||
local timerRisingSunKick = mod:NewTargetTimer(2, 2145919)
|
||||
--local warnSolarFlare = mod:NewSpellAnnounce(2145907, 3) -- 2145907, 2145908
|
||||
local warnFlashBurn = mod:NewSpellAnnounce(2145929, 3) -- 2145929, 2145930, 2145931 spell_Cast_start
|
||||
local timerFlashBurn = mod:NewNextTimer(29, 2145929)
|
||||
|
||||
-- Sacro'lythess
|
||||
local warnDawnDancer = mod:NewSpellAnnounce(2145927)
|
||||
local timerDawnDancer = mod:NewNextTimer(30, 2145927)
|
||||
-- everything else
|
||||
local timerSacroTankCombo = mod:NewTimer(30, "Sacrolash Tank combination", 2146016)
|
||||
local timerAlythTankCombo = mod:NewTimer(30, "Alythess Tank combination", 2145916)
|
||||
local timerCrashCombination = mod:NewTimer(4, "Falling Star and Crashing Moon", 2145922)
|
||||
local warnCrashCombination = mod:NewAnnounce("Falling Star and Crashing Moon", 2145922)
|
||||
local timerCutCombination = mod:NewTimer(5, "Crescent Moon and Rising Sun Cut", 2146025)
|
||||
local warnCutCombination = mod:NewAnnounce("Crescent Moon and Rising Sun Cut", 2146025)
|
||||
|
||||
local timerRoleReversal = mod:NewTimer(5, "Role Reversal RP", 992179)
|
||||
local timerTagTeam = mod:NewTimer(5, "Both Twins are emerging", 992179)
|
||||
local timerTwinsMerge = mod:NewTimer(5, "The Twins are merging", 992179)
|
||||
local berserkTimer = mod:NewBerserkTimer(600)
|
||||
|
||||
local sacroPath = false
|
||||
local alythPath = false
|
||||
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
sacroPath = false
|
||||
alythPath = false
|
||||
timerDance:Start(-delay)
|
||||
timerTwinFade:Start(-delay)
|
||||
berserkTimer:Start(-delay)
|
||||
end
|
||||
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2145905) and args:IsPlayer() then
|
||||
if args.amount then
|
||||
warnSolarBurn:Show(args.amount)
|
||||
end
|
||||
elseif args:IsSpellID(2146005) and args:IsPlayer() then
|
||||
if args.amount and (args.amount == 4 or args.amount >= 8) then
|
||||
warnLunarBurn:Show(args.spellName, args.amount or 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||||
|
||||
function mod:CancelTimers()
|
||||
timerDance:Cancel()
|
||||
timerAlythTankCombo:Cancel()
|
||||
timerSacroTankCombo:Cancel()
|
||||
timerFireDance:Cancel()
|
||||
timerDawnRunner:Cancel()
|
||||
timerCrushingShadow:Cancel()
|
||||
timerFlashBurn:Cancel()
|
||||
self:UnscheduleMethod("FireDance")
|
||||
self:UnscheduleMethod("DawnRunner")
|
||||
end
|
||||
|
||||
function mod:FireDance()
|
||||
self:UnscheduleMethod("FireDance")
|
||||
warnFireDance:Show()
|
||||
timerFireDance:Start()
|
||||
self:ScheduleMethod(31,"FireDance")
|
||||
end
|
||||
|
||||
function mod:DawnRunner()
|
||||
self:UnscheduleMethod("DawnRunner")
|
||||
warnDawnRunner:Show()
|
||||
timerDawnRunner:Start()
|
||||
self:ScheduleMethod(31, "DawnRunner")
|
||||
end
|
||||
|
||||
function mod:DawnDancer()
|
||||
self:UnscheduleMethod("DawnDancer")
|
||||
warnDawnDancer:Show()
|
||||
timerDawnDancer:Start()
|
||||
self:ScheduleMethod(31,"DawnDancer")
|
||||
end
|
||||
|
||||
function mod:SacroPath()
|
||||
timerSacroTankCombo:Start(30)
|
||||
timerDawnRunner:Start(5)
|
||||
timerFireDance:Start(15)
|
||||
self:ScheduleMethod(5,"DawnRunner")
|
||||
self:ScheduleMethod(15,"FireDance")
|
||||
end
|
||||
|
||||
function mod:AlythPath()
|
||||
timerAlythTankCombo:Start(30)
|
||||
timerDawnRunner:Start(15)
|
||||
timerFireDance:Start(5)
|
||||
self:ScheduleMethod(15,"DawnRunner")
|
||||
self:ScheduleMethod(5,"FireDance")
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2146016) and args.sourceName == "Lady Sacrolash" and self.vb.phase <= 3 then
|
||||
local sacroTarget = mod:GetBossTarget(25165)
|
||||
warnFling:Show(sacroTarget)
|
||||
timerFlingSacro:Start(sacroTarget)
|
||||
timerRisingSunKick:Start(sacroTarget)
|
||||
timerCrashCombination:Start(sacroTarget)
|
||||
warnCrashCombination:Schedule(4)
|
||||
timerCutCombination:Start(sacroTarget)
|
||||
warnCutCombination:Schedule(5)
|
||||
timerSacroTankCombo:Start()
|
||||
if timerDawnRunner:GetTime() > 24 then
|
||||
timerDawnRunner:Update(0,6)
|
||||
self:UnscheduleMethod("DawnRunner")
|
||||
self:ScheduleMethod(6,"DawnRunner")
|
||||
end
|
||||
elseif args:IsSpellID(2145916) and args.sourceName == "Grand Warlock Alythess" and self.vb.phase <= 3 then
|
||||
local alythTarget = mod:GetBossTarget(25166)
|
||||
timerFlingAlyth:Start(alythTarget)
|
||||
timerCrescentMoonKick:Start(alythTarget)
|
||||
timerCrashCombination:Start(alythTarget)
|
||||
warnCrashCombination:Schedule(4)
|
||||
timerCutCombination:Start(alythTarget)
|
||||
warnCutCombination:Schedule(5)
|
||||
timerAlythTankCombo:Start()
|
||||
if timerFireDance:GetTime() > 24 then
|
||||
timerFireDance:Update(0,6)
|
||||
self:UnscheduleMethod("FireDance")
|
||||
self:ScheduleMethod(6,"FireDance")
|
||||
|
||||
end
|
||||
elseif args:IsSpellID(2145929, 2145930, 2145931, 2145932) then
|
||||
warnFlashBurn:Show()
|
||||
timerFlashBurn:Start()
|
||||
elseif args:IsSpellID(2146029, 2146030, 2146031, 2146032) then
|
||||
warnCrushingShadow:Show()
|
||||
timerCrushingShadow:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
if msg == L.TwinsPull or msg:find(L.TwinsPull) then
|
||||
timerDance:Start()
|
||||
|
||||
elseif msg == L.SacroPhase or msg:find(L.SacroPhase) then
|
||||
self:ScheduleMethod(0, "CancelTimers")
|
||||
timerSacroTankCombo:Start(30)
|
||||
timerDawnRunner:Start(5)
|
||||
self:ScheduleMethod(5, "DawnRunner")
|
||||
if self.vb.phase == 1 then
|
||||
self.vb.phase = 2
|
||||
sacroPath = true
|
||||
end
|
||||
elseif msg == L.AlythPhase or msg:find(L.AlythPhase) then
|
||||
self:ScheduleMethod(0, "CancelTimers")
|
||||
timerAlythTankCombo:Start()
|
||||
timerFireDance:Start()
|
||||
self:ScheduleMethod(5, "FireDance")
|
||||
if self.vb.phase == 1 then
|
||||
self.vb.phase = 2
|
||||
alythPath = true
|
||||
end
|
||||
elseif self.vb.phase == 4 and DBM:AntiSpam(5, 1) and (msg == L.SacroCombo or msg:find(L.SacroCombo) or msg == L.AlythCombo or msg:find(L.AlythCombo)) then
|
||||
if msg == L.SacroCombo or msg:find(L.SacroCombo) then
|
||||
local sacroTarget = mod:GetBossTarget(25165)
|
||||
timerRisingSunKick:Start(sacroTarget)
|
||||
timerCrashCombination:Start(sacroTarget)
|
||||
warnCrashCombination:Schedule(4)
|
||||
timerCutCombination:Start(sacroTarget)
|
||||
warnCutCombination:Schedule(5)
|
||||
timerSacroTankCombo:Start()
|
||||
if timerDawnRunner:GetTime() > 24 then
|
||||
timerDawnRunner:Update(0,6)
|
||||
self:UnscheduleMethod("DawnRunner")
|
||||
self:ScheduleMethod(6,"DawnRunner")
|
||||
end
|
||||
if timerFireDance:GetTime() > 24 then
|
||||
timerFireDance:Update(0,6)
|
||||
self:UnscheduleMethod("FireDance")
|
||||
self:ScheduleMethod(6,"FireDance")
|
||||
end
|
||||
elseif msg == L.AlythCombo or msg:find(L.AlythCombo) then
|
||||
local alythTarget = mod:GetBossTarget(25166)
|
||||
timerFlingAlyth:Start(alythTarget)
|
||||
timerCrescentMoonKick:Start(alythTarget)
|
||||
timerCrashCombination:Start(alythTarget)
|
||||
warnCrashCombination:Schedule(4)
|
||||
timerCutCombination:Start(alythTarget)
|
||||
warnCutCombination:Schedule(5)
|
||||
timerAlythTankCombo:Start()
|
||||
if timerFireDance:GetTime() > 24 then
|
||||
timerFireDance:Update(0,6)
|
||||
self:UnscheduleMethod("FireDance")
|
||||
self:ScheduleMethod(6,"FireDance")
|
||||
end
|
||||
if timerDawnRunner:GetTime() > 24 then
|
||||
timerDawnRunner:Update(0,6)
|
||||
self:UnscheduleMethod("DawnRunner")
|
||||
self:ScheduleMethod(6,"DawnRunner")
|
||||
end
|
||||
end
|
||||
elseif msg == L.SacroAbsorb or msg:find(L.SacroAbsorb) or msg == L.AlythAbsorb or msg:find(L.AlythAbsorb) then
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
self.vb.phase = 5
|
||||
timerTwinsMerge:Start()
|
||||
elseif msg == L.TwinsMerge or msg:find(L.TwinsMerge) then
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
timerDawnDancer:Start()
|
||||
self:ScheduleMethod(5,"DawnDancer")
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_HEALTH(uId)
|
||||
local cid = self:GetUnitCreatureId(uId)
|
||||
if cid == 25165 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.50 and self.vb.phase == 2 then
|
||||
--Sacrolash
|
||||
self.vb.phase = 3
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
timerRoleReversal:Start()
|
||||
elseif cid == 25166 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.50 and self.vb.phase == 2 then
|
||||
--Alythess
|
||||
self.vb.phase = 3
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
timerRoleReversal:Start()
|
||||
elseif cid == 25165 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.50 and self.vb.phase == 3 and alythPath == true then
|
||||
self.vb.phase = 4
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
timerTagTeam:Start()
|
||||
self:ScheduleMethod(5,"AlythPath")
|
||||
elseif cid == 25166 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.50 and self.vb.phase == 3 and sacroPath == true then
|
||||
self.vb.phase = 4
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
timerTagTeam:Start()
|
||||
self:ScheduleMethod(5,"SacroPath")
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnCombatEnd()
|
||||
self:ScheduleMethod(0,"CancelTimers")
|
||||
if self.Options.RangeFrame then
|
||||
DBM.RangeCheck:Hide()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,150 @@
|
||||
local mod = DBM:NewMod("Felmyst", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(25038)
|
||||
|
||||
mod:RegisterCombat("combat")
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_SUMMON",
|
||||
"RAID_BOSS_EMOTE",
|
||||
"CHAT_MSG_MONSTER_YELL",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"CHAT_MSG_MONSTER_EMOTE",
|
||||
"CHAT_MSG_RAID_WARNING",
|
||||
"CHAT_MSG_MONSTER_SAY"
|
||||
)
|
||||
|
||||
|
||||
local warnCastCorrosion = mod:NewSpellAnnounce(2145808, 2) -- 2145808, 2145809, 21458010 spell_cast_start
|
||||
local timerNextCorrosion = mod:NewNextTimer(45, 2145808) -- 2145808, 2145809, 21458010 spell_cast_start
|
||||
local timerCastCorrosion = mod:NewCastTimer(5, 2145808) -- 2145808, 2145809, 21458010 spell_cast_start
|
||||
-- local warnCorrosion = mod:NewTargetAnnounce(2145808, 2) -- 2145808, 2145809, 21458010 spell_aura_applied
|
||||
|
||||
local warnCastAcidicBreath = mod:NewSpellAnnounce(2145801, 2) -- 2145801, 2145802, 2145803, SPELL_CAST_START
|
||||
local timerNextAcidicBreath = mod:NewNextTimer(22, 2145801) -- 2145801, 2145802, 2145803, SPELL_CAST_START
|
||||
local timerAcidicBreath = mod:NewCastTimer(5, 2145801) -- 2145801, 2145802, 2145803, SPELL_CAST_START
|
||||
-- local warnAcidicBreath = mod:NewTargetAnnounce(2145801, 2) -- 2145801, 2145802, 2145803, SPELL_CAST_START
|
||||
|
||||
local warnCastNecroticBreath = mod:NewSpellAnnounce(2145801, 2) -- 2145817, 2145818, 2145819, 2145820, 2145821, 12 seconds after Acidic spell_cast_start
|
||||
local timerNextNecroticBreath = mod:NewNextTimer(12, 2145801) -- 2145817, 2145818, 2145819, 2145820, 2145821, 12 seconds after Acidic spell_cast_start
|
||||
-- local warnNecroticBreath = mod:NewTargetAnnounce(2145801, 2) -- 2145817, 2145818, 2145819, 2145820, 2145821, 12 seconds after Acidic spell_cast_start
|
||||
|
||||
local warnCastFreezingBreath = mod:NewSpellAnnounce(2145822, 2) -- 2145822, 2145823, 2145824, 2145825 12 seconds after Acidic spell_cast_start
|
||||
local timerNextFreezingBreath = mod:NewNextTimer(12, 2145822) -- 2145822, 2145823, 2145824, 2145825, 12 seconds after Acidic spell_cast_start
|
||||
local timerCastFreezingBreath = mod:NewCastTimer(15, 2145835) -- 2145835, spell_cast_start of inhale
|
||||
-- local warnFreezingBreath = mod:NewTargetAnnounce(2145822, 2) -- 2145822, 2145823, 2145824, 2145825, 12 seconds after Acidic spell_cast_start
|
||||
|
||||
local warnCastInhale = mod:NewSpellAnnounce(2145833, 2) -- 2145833, spell_cast_start
|
||||
local timerNextInhale = mod:NewNextTimer(17, 2145833) -- 2145833, spell_cast_start
|
||||
|
||||
local timerNextNecroticDeluge = mod:NewNextTimer(5, 2145835) -- 2145835, spell_cast_start
|
||||
local timerCastNecroticDeluge = mod:NewCastTimer(15, 2145835) -- 2145835, spell_cast_start of inhale
|
||||
|
||||
local warnArcaneDetention = mod:NewSpellAnnounce(2145834, 2) -- 2145834 spell_cast_start
|
||||
local timerNextArcaneDetention = mod:NewNextTimer(20, 2145834) -- 2145834 spell_cast_start
|
||||
local timerTargetArcaneDetention = mod:NewTargetTimer(10, 2145834) -- 2145834 spell_cast_start
|
||||
|
||||
local warnTailSweep = mod:NewSpellAnnounce(2145806, 2) -- 2145806 spell_cast_success
|
||||
local warnNextTailSweep = mod:NewNextTimer(10, 2145806) -- 2145806 spell_cast_success 1 sec after Corrosion
|
||||
|
||||
local timerBreath = mod:NewCDTimer(20, 45717)
|
||||
local warnBreath = mod:NewSpellAnnounce(45717, 4)
|
||||
local warnPhase = mod:NewAnnounce("WarnPhase", 1, 31550)
|
||||
|
||||
local timerPhase = mod:NewTimer(60, "TimerPhase", 31550)
|
||||
local berserkTimer = mod:NewBerserkTimer(720)
|
||||
|
||||
|
||||
local breathCounter = 0
|
||||
|
||||
function mod:Groundphase()
|
||||
breathCounter = 0
|
||||
warnPhase:Show(L.Ground)
|
||||
timerNextCorrosion:Start(2)
|
||||
warnNextTailSweep:Start(9)
|
||||
timerNextArcaneDetention:Start(12)
|
||||
-- timerPhase:Start(60, L.Air)
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
breathCounter = 0
|
||||
timerNextCorrosion:Start(15-delay)
|
||||
warnNextTailSweep:Start(29-delay)
|
||||
berserkTimer:Start(-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(2145808, 2145809, 21458010) then
|
||||
warnTailSweep:Show()
|
||||
-- warnNextTailSweep:Start()
|
||||
end
|
||||
end
|
||||
|
||||
-- function mod:SPELL_SUMMON(args)
|
||||
-- if args.spellId == 45392 then
|
||||
-- warnVapor:Show(args.sourceName)
|
||||
-- if args.sourceName == UnitName("player") then
|
||||
-- specWarnVapor:Show()
|
||||
-- end
|
||||
-- if self.Options.VaporIcon then
|
||||
-- self:SetIcon(args.sourceName, 8, 10)
|
||||
-- end
|
||||
-- end
|
||||
-- end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2145808, 2145809, 2145810) then
|
||||
warnCastCorrosion:Show()
|
||||
timerNextCorrosion:Start()
|
||||
timerCastCorrosion:Start()
|
||||
-- warnCorrosion:Show()
|
||||
-- elseif args:IsSpellID(2145833) then
|
||||
-- timerNextInhale:Start()
|
||||
elseif args:IsSpellID(2145834) then
|
||||
warnArcaneDetention:Show()
|
||||
-- timerNextArcaneDetention:Start()
|
||||
timerTargetArcaneDetention:Start(args.destName)
|
||||
elseif args:IsSpellID(2145801, 2145802, 2145803) then
|
||||
warnCastAcidicBreath:Show()
|
||||
timerAcidicBreath:Start()
|
||||
timerNextAcidicBreath:Start()
|
||||
elseif args:IsSpellID(2145833) then
|
||||
breathCounter = breathCounter + 1
|
||||
warnCastInhale:Show()
|
||||
if breathCounter < 3 then
|
||||
timerNextInhale:Start(nil, breathCounter+1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:necroticBreath()
|
||||
timerCastNecroticDeluge:Start()
|
||||
end
|
||||
|
||||
function mod:frostBreath()
|
||||
timerCastFreezingBreath:Start()
|
||||
end
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_EMOTE(msg)
|
||||
if msg == L.AirPhase or msg:find(L.AirPhase)
|
||||
or msg == L.AirPhase2 or msg:find(L.AirPhase2) then
|
||||
breathCounter = 0
|
||||
timerBreath:Start(42, 1)
|
||||
timerNextNecroticBreath:Start(12)
|
||||
self:ScheduleMethod(12, "necroticBreath")
|
||||
timerNextFreezingBreath:Start(27)
|
||||
self:ScheduleMethod(27, "frostBreath")
|
||||
|
||||
timerPhase:Start(110, L.Ground)
|
||||
self:ScheduleMethod(110, "Groundphase")
|
||||
end
|
||||
end
|
||||
mod.CHAT_MSG_MONSTER_YELL = mod.CHAT_MSG_MONSTER_EMOTE
|
||||
mod.CHAT_MSG_RAID_BOSS_EMOTE = mod.CHAT_MSG_MONSTER_EMOTE
|
||||
mod.CHAT_MSG_MONSTER_SAY = mod.CHAT_MSG_MONSTER_EMOTE
|
||||
mod.CHAT_MSG_RAID_WARNING = mod.CHAT_MSG_MONSTER_EMOTE
|
||||
@@ -0,0 +1,159 @@
|
||||
local mod = DBM:NewMod("Kalecgos", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(24850)
|
||||
|
||||
mod:RegisterCombat("combat")
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
local warnPortal = mod:NewAnnounce("WarnPortal", 4, 46021)
|
||||
|
||||
local specWarnBuffet = mod:NewSpecialWarningStack(2145512, nil, 10) -- 2145512, 2145513 SPELL_AURA_APPLIED
|
||||
local timerNextBuffet = mod:NewNextTimer(8, 2145512) -- 2145512, 2145513 SPELL_AURA_APPLIED
|
||||
|
||||
local timerBreathCast = mod:NewCastTimer(2, 2145511) -- 2145509, 2145510, 2145511 SPELL_CAST_START
|
||||
local timerNextBreath = mod:NewNextTimer(20, 2145511) -- 2145509, 2145510, 2145511 SPELL_CAST_START
|
||||
|
||||
local timerSpectralBlast = mod:NewCastTimer(4, 2145504) -- 2145503, 2145504 SPELL_CAST_START
|
||||
local timerNextSpectralBlast = mod:NewNextTimer(25, 2145504) -- 2145503, 2145504 SPELL_CAST_START
|
||||
local timerTargetSpectralBlast = mod:NewTargetTimer(4, 2145504) -- 2145503, 2145504 SPELL_CAST_START
|
||||
local warnSpectralBlastYOU = mod:NewSpecialWarningYou(2145504, 4) -- 2145503, 2145504 SPELL_CAST_START
|
||||
|
||||
local timerNextTailSweep = mod:NewNextTimer(30, 2145506) -- 2145506 Spell_cast_success
|
||||
|
||||
local warnDescentIntoMadness = mod:NewSpecialWarningStack(2145501, nil, 5) -- 22145501 SPELL_AURA_APPLIED
|
||||
|
||||
local warnCastMindWipe = mod:NewSpellAnnounce(2145524, 2) -- 2145524 SPELL_CAST_START
|
||||
local warnStackMindWipe = mod:NewSpecialWarningStack(2145524, nil, 4) -- 2145524 SPELL_CAST_START
|
||||
local timerCastMindWipe = mod:NewCastTimer(2, 2145524) -- 2145524 SPELL_CAST_START
|
||||
local timerNextMindWipe = mod:NewNextTimer(25, 2145524) -- 2145524 SPELL_CAST_START
|
||||
|
||||
local warnCorruptorsTouch = mod:NewSpellAnnounce(2145523, 2) -- 2145523 SPELL_AURA_APPLIED
|
||||
local timerNextCorruptorsTouch = mod:NewNextTimer(20, 2145523) -- 2145523 SPELL_AURA_APPLIED
|
||||
|
||||
local berserkTimer = mod:NewBerserkTimer(600)
|
||||
|
||||
mod:AddBoolOption("HealthFrame", true)
|
||||
mod:AddBoolOption("RangeFrame", true)
|
||||
mod:AddBoolOption("ShowFrame", true)
|
||||
-- mod:AddBoolOption("FrameLocked", false)
|
||||
-- mod:AddBoolOption("FrameClassColor", true, nil, function()
|
||||
-- mod:UpdateColors()
|
||||
-- end)
|
||||
-- mod:AddBoolOption("FrameUpwards", false, nil, function()
|
||||
-- mod:ChangeFrameOrientation()
|
||||
-- end)
|
||||
-- mod:AddEditboxOption("FramePoint", "CENTER")
|
||||
-- mod:AddEditboxOption("FrameX", 150)
|
||||
-- mod:AddEditboxOption("FrameY", -50)
|
||||
|
||||
local portCount = 1
|
||||
|
||||
function mod:TargetSpectralBlast()
|
||||
local target = nil
|
||||
target = mod:GetBossTarget(24850)
|
||||
if target == UnitName("player") then
|
||||
warnSpectralBlastYOU:Show()
|
||||
end
|
||||
timerTargetSpectralBlast:Start(target)
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
portCount = 1
|
||||
|
||||
timerNextSpectralBlast:Start(8-delay)
|
||||
timerNextBuffet:Start(10-delay)
|
||||
timerNextBreath:Start(15-delay)
|
||||
timerNextTailSweep:Start(21-delay)
|
||||
berserkTimer:Start(-delay)
|
||||
|
||||
-- if self.Options.ShowFrame then
|
||||
-- self:CreateFrame()
|
||||
-- end
|
||||
if self.Options.RangeFrame then
|
||||
DBM.RangeCheck:Show()
|
||||
end
|
||||
if self.Options.HealthFrame then
|
||||
DBM.BossHealth:Clear()
|
||||
DBM.BossHealth:AddBoss(24850, L.name)
|
||||
DBM.BossHealth:AddBoss(24892, L.Demon)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnCombatEnd()
|
||||
-- self:DestroyFrame()
|
||||
DBM.RangeCheck:Hide()
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2145512, 2145513) and args.amount and args.amount >= 3 then
|
||||
if args.destName == UnitName("Player") then
|
||||
specWarnBuffet:Show(args.amount or 1)
|
||||
end
|
||||
timerNextBuffet:Start()
|
||||
elseif args:IsSpellID(2145501, 2145502) and args.amount and args.amount >= 10 and args.amount % 5 == 0 then
|
||||
warnDescentIntoMadness:Show(args.amount or 1)
|
||||
elseif args:IsSpellID(2145524) then
|
||||
if args.destName == UnitName("Player") then
|
||||
warnStackMindWipe:Show(args.amount or 1)
|
||||
end
|
||||
warnStackMindWipe:Show(args.destName)
|
||||
elseif args:IsSpellID(2145523) then
|
||||
warnCorruptorsTouch:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2145509, 2145510, 2145511) then
|
||||
timerBreathCast:Start()
|
||||
timerNextBreath:Start()
|
||||
elseif args:IsSpellID(2145503, 2145504) then
|
||||
timerSpectralBlast:Start()
|
||||
timerNextSpectralBlast:Start()
|
||||
self:ScheduleMethod(0.2, "TargetSpectralBlast")
|
||||
elseif args:IsSpellID(2145524) then
|
||||
warnCastMindWipe:Show()
|
||||
timerCastMindWipe:Start()
|
||||
timerNextMindWipe:Start()
|
||||
elseif args:IsSpellID(2145523) then
|
||||
timerNextCorruptorsTouch:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(2145506) then
|
||||
timerNextTailSweep:Start()
|
||||
end
|
||||
end
|
||||
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||||
|
||||
|
||||
function mod:UNIT_DIED(args)
|
||||
if self:GetCIDFromGUID(args.destGUID) == 24892 then
|
||||
DBM:EndCombat(self)
|
||||
end
|
||||
-- if bit.band(args.destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) ~= 0 then
|
||||
-- local grp
|
||||
-- if GetNumRaidMembers() > 0 then
|
||||
-- for i = 1, GetNumRaidMembers() do
|
||||
-- local name, _, subgroup = GetRaidRosterInfo(i)
|
||||
-- if name == args.destName then
|
||||
-- grp = subgroup
|
||||
-- break
|
||||
-- end
|
||||
-- end
|
||||
-- else
|
||||
-- grp = 0
|
||||
-- end
|
||||
-- self:RemoveEntry(("%s (%d)"):format(args.destName, grp or 0))
|
||||
-- end
|
||||
end
|
||||
@@ -0,0 +1,401 @@
|
||||
local mod = DBM:NewMod("Kil", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(25657, 25588, 25696, 25315)
|
||||
mod:SetUsedIcons(4, 5, 6, 7, 8)
|
||||
mod:RegisterCombat("combat")
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_INTERRUPT",
|
||||
"CHAT_MSG_MONSTER_YELL",
|
||||
"CHAT_MSG_MONSTER_SAY",
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
--Phase 1
|
||||
-- Apolyon
|
||||
local warnSoulbomb = mod:NewTargetAnnounce(2146682, 2)
|
||||
local YellSoulbomb = mod:NewFadesYell(2146682)
|
||||
local timerTargetSoulbomb = mod:NewTargetTimer(10, 2146682)
|
||||
local timerNextSoulbomb = mod:NewNextTimer(10, 2146682)
|
||||
|
||||
local warnSoulrend = mod:NewSpellAnnounce(2146680, 2) -- 2146680 Spell_cast_Start
|
||||
local timerNextSoulRend = mod:NewNextTimer(30, 2146680) -- 2146680 Spell_cast_Start (20 yard radius)
|
||||
local timerCastSoulRend = mod:NewCastTimer(3, 2146680) -- 2146680 Spell_cast_Start
|
||||
|
||||
-- Agamath
|
||||
-- local warnRagingBlow = mod:NewSpellAnnounce(2146684, 3)
|
||||
local timerNextRagingBlow = mod:NewNextTimer(10, 2146684)
|
||||
|
||||
local warnFelRage = mod:NewTargetAnnounce(2146688, 2)
|
||||
local timerFelRage = mod:NewTargetTimer(5, 2146688)
|
||||
|
||||
-- Archonisus
|
||||
local warnSummonWildImps = mod:NewSpellAnnounce(2146676, 3) -- 2146676 Spell_cast_Start
|
||||
local timerNextSummonWildImps = mod:NewNextTimer(31, 2146676) -- 2146676 Spell_cast_Start
|
||||
local timerCastImplosion = mod:NewCastTimer(31, 2146691)
|
||||
local warnImplosion = mod:NewSpellAnnounce(2146691, 3) -- Spell_Damage 2146691
|
||||
|
||||
local warnSpecYouConflag = mod:NewSpecialWarningYou(2146673)
|
||||
local warnTargetConflag = mod:NewTargetAnnounce(2146673, 3)
|
||||
local timerTargetConflag = mod:NewTargetTimer(2.85, 2146673)
|
||||
|
||||
-- make warnings and timers for these, and make the trigger in their respective functions
|
||||
-- Change all args.spellID into args:IsSpellID() with comma separated for the spellIDs
|
||||
|
||||
local berserkTimer = mod:NewBerserkTimer(900)
|
||||
local warnPhaseSoon = mod:NewAnnounce("WarnPhaseSoon", 2, nil)
|
||||
local warnPhase = mod:NewAnnounce("WarnPhase", 2, nil)
|
||||
|
||||
-- overall KJ
|
||||
-- KJ timers
|
||||
local timerEmerge = mod:NewTimer(18,"Kil'Jaeden is emerging", nil)
|
||||
|
||||
local timerTargetLegionLightning = mod:NewTargetTimer(2.85, 2146510) -- 2146510, 2146511 Spell_cast_start
|
||||
local warnTargetLegionLightning = mod:NewTargetAnnounce(2146510, 2) -- 2146510, 2146511 Spell_cast_start
|
||||
local warnSpecYouLegionLightning = mod:NewSpecialWarningYou(2146510) -- 2146510, 2146511 Spell_cast_start
|
||||
|
||||
local timerNextFireBloom = mod:NewNextTimer(30, 2146523) -- 2146523, 2146524, 2146525, 2146526 Spell_cast_start
|
||||
local timerCastFireBloom = mod:NewCastTimer(1.4, 2146523)
|
||||
local timerTargetFireBloom = mod:NewTargetTimer(15, 2146524) -- 2146523, 2146524, 2146525, 2146526 Spell_cast_start
|
||||
local specwarnFireBloom = mod:NewSpecialWarningYou(2146524)
|
||||
local warnFireBloomTargets = mod:NewTargetAnnounce(2146524, 2)
|
||||
local yellFireBloom = mod:NewFadesYell(2146524)
|
||||
|
||||
local warnReflections = mod:NewSpellAnnounce(2146538, 3) -- 2146522 Spell_cast_start
|
||||
local timerNextReflections = mod:NewNextTimer(60, 2146538) -- 2146522 Spell_cast_start
|
||||
|
||||
local timerNextWorldBreaker = mod:NewNextTimer(30, 2146515) -- 2146519, 2146520 Spell_cast_start
|
||||
local warnWorldBreaker = mod:NewSpellAnnounce(2146515, 1) -- 2146519, 2146520 Spell_cast_start
|
||||
local timerWorldBreaker = mod:NewTimer(1.4, "TimerWorldBreaker", 2146515)
|
||||
|
||||
-- Events
|
||||
local timerNextMiniEvent = mod:NewTimer(60, "Next random Mini-Event", nil)
|
||||
|
||||
local warnDarkness = mod:NewSpellAnnounce(2146540, 3) -- 2146540, 2146541, 2146542 Spell_cast_start
|
||||
local timerNextDarkness = mod:NewNextTimer(55, 2146540) -- 2146540, 2146541, 2146542 Spell_cast_start
|
||||
local timerCastDarkness = mod:NewCastTimer(9, 2146540)
|
||||
|
||||
local timerDragonOrb = mod:NewTimer(60, "Dragon Orb active in", nil)
|
||||
local warnDragonOrb = mod:NewAnnounce("Dragon Orb activated!", 3, nil)
|
||||
|
||||
-- Phase 2
|
||||
local timerCastAllConsuming = mod:NewCastTimer(2, 2146521) -- 2146521 Spell_cast_start
|
||||
local timerDurAllConsuming = mod:NewTimer(85, "The All Consuming Darkness duration", 2146521)
|
||||
local specWarnConsumingDarkness = mod:NewSpecialWarningMove(2146554, 2)
|
||||
|
||||
local timerCastAnnihilate = mod:NewCastTimer(4, 2146555) -- 2146555, 2146556, 2146557, 2146560 Spell_cast_start
|
||||
local warnAnnihilate = mod:NewSpellAnnounce(2146555, 2) -- 2146555, 2146556, 2146557, 2146560 Spell_cast_start
|
||||
local timerChannelAnnihilate = mod:NewTimer(50, "Annihilate duration",2146555) -- 2146555, 2146556, 2146557, 2146560 Spell_cast_start
|
||||
local timerNextAnnihilate = mod:NewNextTimer(96, 2146555) -- 2146555, 2146556, 2146557, 2146560 Spell_cast_start
|
||||
|
||||
-- phase 3
|
||||
local warnObliterate = mod:NewSpellAnnounce(2146575, 3) -- 2146575, 2146576, 2146578 Spell_cast_start
|
||||
local timerCastObliterate = mod:NewCastTimer(4, 2146575) -- 2146575, 2146576, 2146578 Spell_cast_start
|
||||
local timerObliterateEvent = mod:NewTimer(54, "Obliterate Event duration", 2146575)
|
||||
local warnObliterateCount = mod:NewAnnounce("%s Obliterate remaining", 2146575)
|
||||
|
||||
-- phase 4
|
||||
local warnArmageddon = mod:NewSpellAnnounce(2146581, 3)
|
||||
local timerCastArmageddon = mod:NewCastTimer(2, 2146581)
|
||||
local timerChannelArmageddon = mod:NewTimer(50, "Armageddon duration", 2146581)
|
||||
local timerCastFirestorm = mod:NewCastTimer(4, 2146585)
|
||||
|
||||
-- Everything else
|
||||
local fireBloomTargets = {}
|
||||
local fireBloomIcon = 6
|
||||
local obliterateCount
|
||||
local worldbreaker
|
||||
local longObliterateDone = false
|
||||
|
||||
self.vb.phase = 1
|
||||
|
||||
-- Need to add: timerTargetBlueFight (Dragon form, 1 minute, 2146650) [not in combatlog]
|
||||
-- seperate triggers for Main Event and Mini Event? [yes]
|
||||
-- Correct timers after transition [p2 and p3 timers working] -- fix p4 and p5 [yes]
|
||||
-- some kind of self.vb.phase == 6 for next Darkness cast (after mini-events or after last orb)
|
||||
-- Orb timer into each phase [yes]
|
||||
-- add special warning if you walk into the All Consuming Darkness [yes]
|
||||
|
||||
local function WarnFireBloomTargets()
|
||||
warnFireBloomTargets:Show(table.concat(fireBloomTargets, "<, >"))
|
||||
table.wipe(fireBloomTargets)
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
timerNextSoulbomb:Start(5-delay)
|
||||
timerNextSoulRend:Start(20-delay)
|
||||
obliterateCount = 0
|
||||
worldbreaker = 0
|
||||
longObliterateDone = false
|
||||
end
|
||||
|
||||
local function CancelTimers()
|
||||
timerNextWorldBreaker:Cancel()
|
||||
timerNextFireBloom:Cancel()
|
||||
timerNextReflections:Cancel()
|
||||
timerNextDarkness:Cancel()
|
||||
timerNextMiniEvent:Cancel()
|
||||
end
|
||||
|
||||
function mod:LegionLightningTarget()
|
||||
local target = nil
|
||||
target = mod:GetBossTarget(25315)
|
||||
if target == UnitName("player") then
|
||||
warnSpecYouLegionLightning:Show()
|
||||
else
|
||||
warnTargetLegionLightning:Show(target)
|
||||
end
|
||||
timerTargetLegionLightning:Start(target)
|
||||
self:SetIcon(target, 8, 3)
|
||||
end
|
||||
|
||||
function mod:ConflagTarget()
|
||||
local conflagTarget = nil
|
||||
conflagTarget = mod:GetBossTarget(25696)
|
||||
if conflagTarget == UnitName("player") then
|
||||
warnSpecYouConflag:Show()
|
||||
else
|
||||
warnTargetConflag:Show(conflagTarget)
|
||||
end
|
||||
timerTargetConflag:Start(conflagTarget)
|
||||
self:SetIcon(conflagTarget, 8, 3)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if self.vb.phase == 1 then
|
||||
if args:IsSpellID(2146680) then
|
||||
warnSoulrend:Show()
|
||||
timerNextSoulRend:Start()
|
||||
timerCastSoulRend:Start()
|
||||
elseif args:IsSpellID(2146684) then
|
||||
-- warnRagingBlow:Show()
|
||||
timerNextRagingBlow:Start()
|
||||
elseif args:IsSpellID(2146673) then
|
||||
self:ScheduleMethod(0.15,"ConflagTarget");
|
||||
elseif args:IsSpellID(2146676) then
|
||||
warnSummonWildImps:Show()
|
||||
timerNextSummonWildImps:Start()
|
||||
timerCastImplosion:Start()
|
||||
warnImplosion:Schedule(27)
|
||||
end
|
||||
elseif self.vb.phase >= 2 and args.sourceName == "Kil'jaeden" then
|
||||
if args:IsSpellID(2146509) then
|
||||
self:ScheduleMethod(0.15,"LegionLightningTarget");
|
||||
elseif args:IsSpellID(2146515, 2146516) and args.sourceName =="Kil'jaeden" then
|
||||
if worldbreaker == 0 then
|
||||
timerWorldBreaker:Start("Knockup")
|
||||
timerNextWorldBreaker:Start()
|
||||
worldbreaker = 1
|
||||
else
|
||||
timerWorldBreaker:Start("Knockback")
|
||||
worldbreaker = 0
|
||||
end
|
||||
warnWorldBreaker:Show()
|
||||
elseif args:IsSpellID(2146538) then
|
||||
warnReflections:Show()
|
||||
if self.vb.phase == 2 then
|
||||
timerNextReflections:Start(60)
|
||||
elseif self.vb.phase == 6 and DBM:AntiSPam(15, 1) then
|
||||
timerNextMiniEvent:Start()
|
||||
timerNextDarkness:Start(20)
|
||||
else
|
||||
timerNextMiniEvent:Start()
|
||||
end
|
||||
elseif args:IsSpellID(2146523) then
|
||||
timerNextFireBloom:Start()
|
||||
timerCastFireBloom:Start()
|
||||
elseif args:IsSpellID(2146555) then
|
||||
timerChannelAnnihilate:Schedule(4)
|
||||
timerNextDarkness:Schedule(45, 20)
|
||||
timerNextFireBloom:Schedule(50, 28)
|
||||
timerNextWorldBreaker:Schedule(50, 35)
|
||||
timerNextMiniEvent:Schedule(50,48)
|
||||
timerDragonOrb:Start(59)
|
||||
elseif args:IsSpellID(2146560) then
|
||||
timerCastAnnihilate:Start()
|
||||
warnAnnihilate:Show()
|
||||
timerChannelAnnihilate:Schedule(4, 11)
|
||||
timerNextMiniEvent:Start(60)
|
||||
if self.vb.phase == 6 and DBM:AntiSPam(15, 2) then
|
||||
timerNextDarkness:Start(20)
|
||||
end
|
||||
elseif args:IsSpellID(2146521) then
|
||||
timerCastAllConsuming:Start()
|
||||
elseif args:IsSpellID(2146540) then
|
||||
warnDarkness:Show()
|
||||
timerCastDarkness:Start()
|
||||
elseif args:IsSpellID(2146575) then
|
||||
warnObliterate:Show()
|
||||
timerCastObliterate:Start()
|
||||
longObliterateDone = false
|
||||
elseif args:IsSpellID(2146576) then
|
||||
timerCastObliterate:Start()
|
||||
if not longObliterateDone and obliterateCount < 9 then
|
||||
warnObliterateCount:Show(10 - obliterateCount)
|
||||
obliterateCount = obliterateCount + 1
|
||||
elseif not longObliterateDone and obliterateCount == 9 then
|
||||
warnObliterateCount:Show(1)
|
||||
obliterateCount = 0
|
||||
longObliterateDone = true
|
||||
elseif longObliterateDone and obliterateCount < 3 then
|
||||
warnObliterateCount:Show(3 - obliterateCount)
|
||||
obliterateCount = obliterateCount + 1
|
||||
elseif longObliterateDone and obliterateCount == 2 then
|
||||
warnObliterateCount:Show(1)
|
||||
obliterateCount = 0
|
||||
end
|
||||
if self.vb.phase == 6 and DBM:AntiSpam(15, 3) then
|
||||
timerNextDarkness:Start(20)
|
||||
end
|
||||
elseif args:IsSpellID(2146581) then
|
||||
warnArmageddon:Show()
|
||||
timerCastArmageddon:Start()
|
||||
timerChannelArmageddon:Schedule(2)
|
||||
timerNextDarkness:Schedule(45,15)
|
||||
timerNextFireBloom:Schedule(50,15)
|
||||
timerNextWorldBreaker:Schedule(50,20)
|
||||
elseif args:IsSpellID(2146590) then
|
||||
warnArmageddon:Show()
|
||||
timerCastArmageddon:Start()
|
||||
timerChannelArmageddon:Schedule(2, 10)
|
||||
timerNextMiniEvent:Start()
|
||||
if self.vb.phase == 6 and DBM:AntiSpam(15, 4) then
|
||||
timerNextDarkness:Start(20)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_INTERRUPT(args)
|
||||
if (args.extraSpellId == 2146673 or args.spellId == 2146673) and args.destName == "Archonisus" then
|
||||
-- warnSpecYouConflag:Hide()
|
||||
-- warnTargetConflag:Hide()
|
||||
timerTargetConflag:Cancel()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if self.vb.phase == 1 then
|
||||
if args:IsSpellID(2146688) then
|
||||
warnFelRage:Show(args.destName)
|
||||
timerFelRage:Start(args.destName)
|
||||
elseif args:IsSpellID(2146681) then
|
||||
if args:IsPlayer() then
|
||||
YellSoulbomb:Countdown(10, 3)
|
||||
end
|
||||
warnSoulbomb:Show(args.destName)
|
||||
timerNextSoulbomb:Start()
|
||||
timerTargetSoulbomb:Start(args.destName)
|
||||
end
|
||||
else
|
||||
if args:IsSpellID(2146524) and args.sourceName == "Kil'jaeden" then
|
||||
fireBloomTargets[#fireBloomTargets + 1] = args.destName
|
||||
if args:IsPlayer() then
|
||||
specwarnFireBloom:Show()
|
||||
yellFireBloom:Countdown(15,3)
|
||||
end
|
||||
timerTargetFireBloom:Start(args.destName)
|
||||
self:SetIcon(args.destName, fireBloomIcon, 60)
|
||||
fireBloomIcon = fireBloomIcon - 1
|
||||
self:Unschedule(WarnFireBloomTargets)
|
||||
self:Schedule(0.2, WarnFireBloomTargets)
|
||||
elseif args:IsSpellID(2146554) and args:IsPlayer() and DBM:AntiSpam(5, 5) then
|
||||
specWarnConsumingDarkness:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
||||
|
||||
function mod:SPELL_AURA_REMOVED(args)
|
||||
if args:IsSpellID() and args.sourceName == "Kil'jaeden" then
|
||||
self:SetIcon(args.destName, 0)
|
||||
fireBloomIcon = fireBloomIcon + 1
|
||||
end
|
||||
end
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_YELL(msg)
|
||||
if msg == L.Phase2KJ or msg:find(L.Phase2KJ) then
|
||||
self.vb.phase = 2
|
||||
warnPhase:Show(2)
|
||||
berserkTimer:Start()
|
||||
timerEmerge:Start()
|
||||
timerNextFireBloom:Start(28)
|
||||
timerNextWorldBreaker:Start(33)
|
||||
timerNextReflections:Start(43)
|
||||
elseif msg == L.Phase3KJ or msg:find(L.Phase3KJ) then
|
||||
self.vb.phase = 3
|
||||
warnPhase:Show(3)
|
||||
self:Schedule(0, CancelTimers)
|
||||
timerCastAllConsuming:Start()
|
||||
timerNextAnnihilate:Start(28)
|
||||
timerDurAllConsuming:Schedule(3)
|
||||
elseif msg == L.Phase4KJ or msg:find(L.Phase4KJ) then
|
||||
self.vb.phase = 4
|
||||
warnPhase:Show(4)
|
||||
self:Schedule(0, CancelTimers)
|
||||
timerObliterateEvent:Start(45)
|
||||
timerNextDarkness:Schedule(45,10)
|
||||
timerNextFireBloom:Schedule(45, 24)
|
||||
timerNextWorldBreaker:Schedule(45, 29)
|
||||
timerNextMiniEvent:Schedule(45, 43)
|
||||
timerDragonOrb:Start(51)
|
||||
elseif msg == L.Phase5KJ or msg:find(L.Phase5KJ) then
|
||||
self.vb.phase = 5
|
||||
warnPhase:Show(5)
|
||||
self:Schedule(0, CancelTimers)
|
||||
timerNextDarkness:Schedule(45,19)
|
||||
timerCastFirestorm:Schedule(54, 24)
|
||||
timerNextWorldBreaker:Schedule(54, 29)
|
||||
timerNextMiniEvent:Schedule(54,44)
|
||||
timerDragonOrb:Start(59)
|
||||
elseif msg == L.Phase6KJ or msg:find(L.Phase6KJ) then
|
||||
self.vb.phase = 6
|
||||
warnPhase:Show(6)
|
||||
self:Schedule(0, CancelTimers)
|
||||
timerDragonOrb:Start(20)
|
||||
timerNextDarkness:Start(25)
|
||||
timerNextFireBloom:Start(39)
|
||||
timerNextWorldBreaker:Start(44)
|
||||
timerNextMiniEvent:Start(59)
|
||||
elseif msg == L.OrbYell1 or msg:find(L.OrbYell1) or
|
||||
msg == L.OrbYell2 or msg:find(L.OrbYell2) or
|
||||
msg == L.OrbYell3 or msg:find(L.OrbYell3) or
|
||||
msg == L.OrbYell4 or msg:find(L.OrbYell4) then
|
||||
warnDragonOrb:Show()
|
||||
end
|
||||
end
|
||||
mod.CHAT_MSG_MONSTER_SAY = mod.CHAT_MSG_MONSTER_YELL
|
||||
|
||||
function mod:UNIT_HEALTH(unit)
|
||||
if self:GetUnitCreatureId(unit) == 25315 then
|
||||
local health = DBM_UnitHealthPercent(unit)
|
||||
if health <= 84 and self.vb.phase == 2 and DBM:AntiSpam(35, 6) then
|
||||
warnPhaseSoon:Show(3)
|
||||
elseif health <= 64 and self.vb.phase == 3 and DBM:AntiSpam(35, 6) then
|
||||
warnPhaseSoon:Show(4)
|
||||
elseif health <= 44 and self.vb.phase == 4 and DBM:AntiSpam(35, 6) then
|
||||
warnPhaseSoon:Show(5)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_DIED(args)
|
||||
local cid = self:GetCIDFromGUID(args.destGUID)
|
||||
if cid == 25588 then --
|
||||
timerNextSoulbomb:Stop()
|
||||
timerNextSoulRend:Stop()
|
||||
elseif cid == 25657 then -- Agamath
|
||||
timerNextRagingBlow:Stop()
|
||||
timerFelRage:Stop()
|
||||
elseif cid == 25696 then -- Archonisus
|
||||
timerNextSummonWildImps:Stop()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,165 @@
|
||||
local mod = DBM:NewMod("Muru", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(25741)--25741 Muru, 25840 Entropius
|
||||
|
||||
mod:RegisterCombat("combat")
|
||||
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_CAST_START",
|
||||
"UNIT_DIED",
|
||||
"UNIT_HEALTH"
|
||||
)
|
||||
|
||||
|
||||
local warnVoidSpike = mod:NewSpellAnnounce(2146314, 2)
|
||||
local warnDarkness = mod:NewSpecialWarningYou(2146301, 4)
|
||||
local timerDarkness = mod:NewNextTimer(0, 2146301)
|
||||
--local warnVoidRift = mod:NewAnnounce("WarnVoidRift", 4, 2146310)
|
||||
--local timerVoidRift = mod:NewNextTimer(60, 2146310)
|
||||
local warnVoidSentinel = mod:NewSpellAnnounce(2146312, 2)
|
||||
local timerVoidSentinel = mod:NewNextTimer(60, 2146312)
|
||||
local SpecWarnVoidSpawn = mod:NewSpellAnnounce(2146330, 2)--("WarnVoidSpawn", 4, 2146330)
|
||||
local warnDarkFiend = mod:NewSpellAnnounce(2146320, 2)--("WarnFiend", 2, 2146320)
|
||||
local timerDarkFiend = mod:NewNextTimer(60, 2146320)
|
||||
local warnVoidCutter = mod:NewSpellAnnounce(2146303, 2)--("WarnVoidCutter", 2, 2146303)
|
||||
local timerVoidCutterSpawn = mod:NewNextTimer(64, 2146303)
|
||||
--local timerVoidCutterActive = mod:NewNextTimer(64, 2146303)
|
||||
local timerVCutterDuration = mod:NewTimer(30, "Void Cutter duration", 2146303)
|
||||
|
||||
local warnPhase2 = mod:NewPhaseAnnounce(2)
|
||||
local warnBlackHole = mod:NewSpellAnnounce(2146370, 3)
|
||||
local timerBlackHole = mod:NewNextTimer(30, 2146370)
|
||||
|
||||
local berserkTimer = mod:NewBerserkTimer(600)
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
timerVoidSentinel:Start(10-delay)
|
||||
timerVoidCutterSpawn:Start(20-delay)
|
||||
timerVCutterDuration:Schedule(23-delay)
|
||||
timerDarkFiend:Start(30-delay)
|
||||
berserkTimer:Start(-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2146314) then
|
||||
if args:IsPlayer() then
|
||||
warnDarkness:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2146322) and DBM:AntiSpam() then
|
||||
warnDarkFiend:Show()
|
||||
timerDarkFiend:Start(60)
|
||||
|
||||
timerVoidCutterSpawn:Start(55)
|
||||
timerVCutterDuration:Schedule(58)
|
||||
warnVoidCutter:Schedule(55)
|
||||
|
||||
if self.vb.phase == 1 then
|
||||
warnVoidSentinel:Schedule(40)
|
||||
timerVoidSentinel:Start(40)
|
||||
end
|
||||
elseif args:IsSpellID(2146314) then
|
||||
warnVoidSpike:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_HEALTH(unit)
|
||||
if mod:GetUnitCreatureId(unit) == 25741 and self.vb.phase == 1 then
|
||||
local hp = (math.max(0,UnitHealth(unit)) / math.max(1, UnitHealthMax(unit))) * 100
|
||||
if hp <= 50 then
|
||||
self.vb.phase = 2
|
||||
warnPhase2:Show()
|
||||
timerDarkFiend:Cancel()
|
||||
timerVoidCutterSpawn:Cancel()
|
||||
timerVoidSentinel:Cancel()
|
||||
timerBlackHole:Start(25)
|
||||
timerDarkFiend:Start(15)
|
||||
timerVoidCutterSpawn:Start(20)
|
||||
timerVCutterDuration:Schedule(23)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
Timers
|
||||
Portals + Sentinal 10 seconds after pull, then every 60 seconds while in Phase 1
|
||||
Void Cutter 20 seconds after pull, then 55 seconds, then every 60 seconds. Spawns, becomes active after 5 seconds, then is active for 30 seconds. Visible for 35 seconds total.
|
||||
Darkness + Dark Fiends 30 seconds after pull, then every 60 seconds
|
||||
Black Hole 23 seconds after Entropius spawns, then every 20 seconds
|
||||
|
||||
Note
|
||||
Timers for Portals stop when Muru hits 50%
|
||||
Timers for Void Cutters and Dark Fiends are not affected by phase transition
|
||||
When timers would happen at the same time, one is pushed to be earlier by 1 second. Appears that Cutter is the main spell that gets pushed.
|
||||
]]--
|
||||
|
||||
--[[
|
||||
local function phase2()
|
||||
warnPhase2:Show()
|
||||
warned_phase2 = true
|
||||
mod:UnscheduleMethod("HumanSpawn")
|
||||
mod:UnscheduleMethod("VoidSpawn")
|
||||
timerBlackHoleCD:Start(15)
|
||||
if mod.Options.HealthFrame then
|
||||
DBM.BossHealth:Clear()
|
||||
DBM.BossHealth:AddBoss(25840, L.Entropius)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:VoidSpawn()
|
||||
warnVoid:Show(voidCount)
|
||||
voidCount = voidCount + 1
|
||||
timerVoid:Start(nil, voidCount)
|
||||
specWarnVW:Schedule(25)
|
||||
self:ScheduleMethod(30, "VoidSpawn")
|
||||
end
|
||||
|
||||
function mod:OnCombatStart(delay)
|
||||
self.vb.phase = 1
|
||||
voidCount = 1
|
||||
warned_phase2 = false
|
||||
timerHuman:Start(10-delay, humanCount)
|
||||
timerVoid:Start(36.5-delay, voidCount)
|
||||
specWarnVW:Schedule(31.5)
|
||||
timerNextDarkness:Start(47-delay)
|
||||
specWarnDarknessSoon:Schedule(42)
|
||||
self:ScheduleMethod(10, "HumanSpawn")
|
||||
self:ScheduleMethod(36.5, "VoidSpawn")
|
||||
berserkTimer:Start(-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_SUMMON(args)
|
||||
if args.spellId == 46268 then
|
||||
warnFiend:Show()
|
||||
elseif args.spellId == 46282 and DBM:AntiSpam(2, 1) then
|
||||
warnBlackHole:Show()
|
||||
specWarnBH:Show()
|
||||
timerBlackHoleCD:Start()
|
||||
timerSingularity:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_DIED(args)
|
||||
if self:GetCIDFromGUID(args.destGUID) == 25840 then
|
||||
DBM:EndCombat(self)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_HEALTH(uId)
|
||||
if not warned_phase2 and self:GetUnitCreatureId(uId) == 25840 and UnitHealth(uId) / UnitHealthMax(uId) > 0.9 and self.vb.phase == 1 then
|
||||
warned_phase2 = true
|
||||
timerNextDarkness:Cancel()
|
||||
timerHuman:Cancel()
|
||||
timerVoid:Cancel()
|
||||
specWarnDarknessSoon:Cancel()
|
||||
phase2()
|
||||
end
|
||||
end
|
||||
]]--
|
||||
@@ -0,0 +1,2 @@
|
||||
DBM:RegisterMapSize("SunwellPlateau", 0, 995.6, 664.2)
|
||||
DBM:RegisterMapSize("SunwellPlateau", 1, 465.0, 310.0)
|
||||
@@ -0,0 +1,72 @@
|
||||
local mod = DBM:NewMod("Trash", "DBM-Sunwell")
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
mod:SetRevision(("$Revision: 5021 $"):sub(12, -3))
|
||||
mod:SetCreatureID(25507)
|
||||
mod:RegisterCombat("combat", 25507)
|
||||
|
||||
mod:RegisterEventsInCombat(
|
||||
"SPELL_CAST_START"
|
||||
)
|
||||
|
||||
-- Fel Chain Lightning (2145224)
|
||||
-- Chain Lightning (2145227)
|
||||
-- Electro-Magnetic Pulse (2145228)
|
||||
|
||||
local castChainLightning = mod:NewCastTimer(4, 2145227)
|
||||
local warnChainLightning = mod:NewTargetAnnounce(4, 2145227)
|
||||
local specWarnChainLightning = mod:NewSpecialWarningYou(2145227)
|
||||
local timerChainLightning = mod:NewCDTimer(10, 2145227)
|
||||
|
||||
local castFelLightning = mod:NewCastTimer(4, 2145224)
|
||||
local warnFelLightning = mod:NewTargetAnnounce(4, 2145224)
|
||||
local specWarnFelLightning = mod:NewSpecialWarningYou(2145224)
|
||||
local timerFelLightning = mod:NewCDTimer(10, 2145224)
|
||||
|
||||
local castEMP = mod:NewCastTimer(6, 2145228)
|
||||
local warnEMP = mod:NewSpellAnnounce(2145228)
|
||||
local timerEMP = mod:NewNextTimer(45, 2145228)
|
||||
|
||||
function mod:ChainLightning()
|
||||
local targetCL = mod:GetBossTarget(25507)
|
||||
if targetCL == UnitName("player") then
|
||||
specWarnChainLightning:Show()
|
||||
SendChatMessage("Chain Lightning on "..UnitName("PLAYER").."!", "Say")
|
||||
else
|
||||
warnChainLightning:Show(targetCL)
|
||||
end
|
||||
castChainLightning:Start()
|
||||
self:SetIcon(targetCL, 6, 4)
|
||||
end
|
||||
|
||||
function mod:FelLightning()
|
||||
local targetFL = mod:GetBossTarget(25507)
|
||||
if targetFL == UnitName("player") then
|
||||
specWarnFelLightning:Show()
|
||||
SendChatMessage("Chain Lightning on "..UnitName("PLAYER").."!", "Say")
|
||||
else
|
||||
warnFelLightning:Show(targetFL)
|
||||
end
|
||||
castFelLightning:Start()
|
||||
self:SetIcon(targetFL, 6, 4)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2145224) and args.sourceName == "Sunwell Protector" then
|
||||
self:ScheduleMethod(0.2, "FelLightning")
|
||||
timerFelLightning:Start()
|
||||
elseif args:IsSpellID(2145227) and args.sourceName == "Sunwell Protector" then
|
||||
self:ScheduleMethod(0.2, "ChainLightning")
|
||||
timerChainLightning:Start()
|
||||
elseif args:IsSpellID(2145228) and args.sourceName == "Sunwell Protector" then
|
||||
castEMP:Start()
|
||||
warnEMP:Show()
|
||||
timerEMP:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:onCombatEnd()
|
||||
timerEMP:Cancel()
|
||||
timerChainLightning:Cancel()
|
||||
timerFelLightning:Cancel()
|
||||
end
|
||||
@@ -0,0 +1,244 @@
|
||||
local L
|
||||
|
||||
---------------
|
||||
-- Kalecgos --
|
||||
---------------
|
||||
L = DBM:GetModLocalization("Kalecgos")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "Kalecgos"
|
||||
}
|
||||
|
||||
L:SetWarningLocalization{
|
||||
WarnPortal = "Portal #%d : >%s< (Group %d)",
|
||||
SpecWarnWildMagic = "Wild Magic - %s!"
|
||||
}
|
||||
|
||||
L:SetOptionLocalization{
|
||||
WarnPortal = "Show warning for $spell:46021 target",
|
||||
SpecWarnWildMagic = "Show special warning for Wild Magic",
|
||||
ShowFrame = "Show Spectral Realm frame" ,
|
||||
FrameClassColor = "Use class colors in Spectral Realm frame",
|
||||
FrameUpwards = "Expand Spectral Realm frame upwards",
|
||||
FrameLocked = "Set Spectral Realm frame not movable",
|
||||
RangeFrame = "Show range check frame"
|
||||
}
|
||||
|
||||
L:SetMiscLocalization{
|
||||
Demon = "Sathrovarr the Corruptor",
|
||||
Heal = "Healing + 100%",
|
||||
Haste = "Spell Haste + 100%",
|
||||
Hit = "Melee Hit - 50%",
|
||||
Crit = "Crit Damage + 100%",
|
||||
Aggro = "AGGRO + 100%",
|
||||
Mana = "Cost Reduce 50%",
|
||||
FrameTitle = "Spectral Realm",
|
||||
FrameLock = "Frame Lock",
|
||||
FrameClassColor = "Use Class Colors",
|
||||
FrameOrientation = "Expand upwards",
|
||||
FrameHide = "Hide Frame",
|
||||
FrameClose = "Close"
|
||||
}
|
||||
|
||||
----------------
|
||||
-- Brutallus --
|
||||
----------------
|
||||
L = DBM:GetModLocalization("Brutallus")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "Brutallus"
|
||||
}
|
||||
L:SetOptionLocalization{
|
||||
-- felFireYellOpt = "Yell when you are affected by $spell:2145719"
|
||||
}
|
||||
L:SetMiscLocalization{
|
||||
BrutPull = "Ah, more lambs to the slaughter!",
|
||||
-- felFireYellYell = "$spell:2145719 on "..UnitName("PLAYER").."!"
|
||||
}
|
||||
|
||||
--------------
|
||||
-- Felmyst --
|
||||
--------------
|
||||
L = DBM:GetModLocalization("Felmyst")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "Felmyst"
|
||||
}
|
||||
|
||||
L:SetWarningLocalization{
|
||||
WarnPhase = "%s Phase"
|
||||
}
|
||||
|
||||
L:SetTimerLocalization{
|
||||
TimerPhase = "Next %s Phase"
|
||||
}
|
||||
|
||||
L:SetOptionLocalization{
|
||||
WarnPhase = "Show warning for next phase",
|
||||
TimerPhase = "Show time for next phase",
|
||||
VaporIcon = DBM_CORE_AUTO_ICONS_OPTION_TEXT:format(45392),
|
||||
EncapsIcon = DBM_CORE_AUTO_ICONS_OPTION_TEXT:format(45665)
|
||||
}
|
||||
|
||||
L:SetMiscLocalization{
|
||||
Air = "Air",
|
||||
Ground = "Ground",
|
||||
AirPhase = "I am stronger than ever before!",
|
||||
Breath = "%s takes a deep breath."
|
||||
}
|
||||
|
||||
--------------
|
||||
-- High Commander Arynyes --
|
||||
--------------
|
||||
L = DBM:GetModLocalization("Arynyes")
|
||||
|
||||
L:SetGeneralLocalization({
|
||||
name = "High Commander Arynyes"
|
||||
})
|
||||
|
||||
L:SetWarningLocalization({
|
||||
|
||||
})
|
||||
|
||||
L:SetTimerLocalization({
|
||||
|
||||
})
|
||||
|
||||
L:SetOptionLocalization({
|
||||
|
||||
})
|
||||
|
||||
L:SetMiscLocalization({
|
||||
GauntletPull = "Man the cannons, summoners; bring forth the imps!",
|
||||
ArynPull = "I will not fail!"
|
||||
})
|
||||
|
||||
-----------------------
|
||||
-- The Eredar Twins --
|
||||
-----------------------
|
||||
L = DBM:GetModLocalization("Twins")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "Eredar Twins"
|
||||
}
|
||||
|
||||
L:SetWarningLocalization{
|
||||
WarnLunarStacks = "%s stacks: (%d)",--(args.spellName, args.destName, args.amount or 1)
|
||||
WarnSolarStacks = "%s stacks: (%d)"
|
||||
}
|
||||
|
||||
L:SetTimerLocalization{
|
||||
}
|
||||
|
||||
L:SetOptionLocalization{
|
||||
NovaIcon = DBM_CORE_AUTO_ICONS_OPTION_TEXT:format(45329),
|
||||
ConflagIcon = DBM_CORE_AUTO_ICONS_OPTION_TEXT:format(45333),
|
||||
RangeFrame = "Show range check frame"
|
||||
}
|
||||
|
||||
L:SetMiscLocalization({
|
||||
Nova = "directs Shadow Nova at (.+)%.",
|
||||
Conflag = "directs Conflagration at (.+)%.",
|
||||
Sacrolash = "Lady Sacrolash",
|
||||
Alythess = "Grand Warlock Alythess",
|
||||
Sacrolythess = "Sacro'lythess",
|
||||
TwinsPull = "Your luck has run its course!",
|
||||
SacroAbsorb = "Alythess! Your fire burns within me!",
|
||||
AlythAbsorb = "Sacrolash!",
|
||||
AlythPhase = "Fires consume.",
|
||||
SacroPhase = "Shadows engulf.",
|
||||
SacroCombo = "Fire to the aid of shadow!",
|
||||
AlythCombo = "Shadow to the aid of fire!",
|
||||
TwinsMerge = "Edir harach!"
|
||||
})
|
||||
|
||||
------------
|
||||
-- M'uru --
|
||||
------------
|
||||
L = DBM:GetModLocalization("Muru")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "M'uru"
|
||||
}
|
||||
|
||||
L:SetWarningLocalization{
|
||||
WarnHuman = "Humanoids (%d)",
|
||||
WarnVoid = "Void Sentinel (%d)",
|
||||
WarnFiend = "Dark Fiend spawned"
|
||||
}
|
||||
|
||||
L:SetTimerLocalization{
|
||||
TimerHuman = "Next Humanoids (%s)",
|
||||
TimerVoid = "Next Void (%s)",
|
||||
TimerPhase = "Entropius"
|
||||
}
|
||||
|
||||
L:SetOptionLocalization{
|
||||
WarnHuman = "Show warning for Humanoids",
|
||||
WarnVoid = "Show warning for Void Sentinels",
|
||||
WarnFiend = "Show warning for Fiends in phase 2",
|
||||
TimerHuman = "Show timer for Humanoids",
|
||||
TimerVoid = "Show timer for Void Sentinels",
|
||||
TimerPhase = "Show time for Phase 2 transition"
|
||||
}
|
||||
|
||||
L:SetMiscLocalization{
|
||||
Entropius = "Entropius"
|
||||
}
|
||||
|
||||
----------------
|
||||
-- Kil'jeden --
|
||||
----------------
|
||||
L = DBM:GetModLocalization("Kil")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "Kil'jaeden"
|
||||
}
|
||||
|
||||
L:SetWarningLocalization{
|
||||
-- WarnPhaseSoon = "Next Phase at %s percent health",
|
||||
WarnDarkOrb = "Dark Orbs Spawned",
|
||||
WarnBlueOrb = "Dragon Orb activated",
|
||||
SpecWarnDarkOrb = "Dark Orbs Spawned!",
|
||||
SpecWarnBlueOrb = "Dragon Orbs Activated!",
|
||||
WarnPhaseSoon = "Phase %s soon",
|
||||
WarnPhase = "Phase %s"
|
||||
}
|
||||
|
||||
L:SetTimerLocalization{
|
||||
TimerBlueOrb = "Dragon Orbs activate",
|
||||
TimerWorldBreaker = "World Breaker: %s"
|
||||
}
|
||||
|
||||
L:SetOptionLocalization{
|
||||
WarnDarkOrb = "Show warning for Dark Orbs",
|
||||
WarnBlueOrb = "Show warning for Dragon Orbs",
|
||||
SpecWarnDarkOrb = "Show special warning for Dark Orbs",
|
||||
SpecWarnBlueOrb = "Show special warning for Dragon Orbs",
|
||||
TimerBlueOrb = "Show timer for Dragon Orbs activate"
|
||||
}
|
||||
|
||||
L:SetMiscLocalization{
|
||||
Phase2KJ = "The expendable have perished. So be it! Now I shall succeed where Sargeras could not! I will bleed this wretched world and secure my place as the true master of the Burning Legion! The end has come! Let the unravelling of this world commence!",
|
||||
Phase3KJ = "Another step toward destruction!",
|
||||
Phase4KJ = "I will not be denied! This world shall fall!",
|
||||
Phase5KJ = "Do not harbor false hope! You cannot win!",
|
||||
Phase6KJ = "Kalec... Kalec?",
|
||||
OrbYell1 = "I will channel my powers into the orbs! Be ready!",
|
||||
OrbYell2 = "I have empowered another orb! Use it quickly!",
|
||||
OrbYell3 = "Another orb is ready! Make haste!",
|
||||
OrbYell4 = "I have channeled all I can! The power is in your hands!"
|
||||
}
|
||||
|
||||
----------------
|
||||
-- Trash --
|
||||
----------------
|
||||
L = DBM:GetModLocalization("Trash")
|
||||
|
||||
L:SetGeneralLocalization{
|
||||
name = "Trash"
|
||||
}
|
||||
|
||||
L:SetMiscLocalization{
|
||||
|
||||
}
|
||||
@@ -298,7 +298,7 @@ function mod:HandleFocusedBurstTarget()
|
||||
if target then
|
||||
warnFocusedBurst:Show(target)
|
||||
if mod.vb.phase == 3 and UnitName("player") == target then
|
||||
specWarnFocusedBurst:Show()
|
||||
specWarnFocusedBurstYou:Show()
|
||||
end
|
||||
if self.Options.FocusedBurst then
|
||||
self:SetIcon(target, 7, 8)
|
||||
@@ -306,8 +306,15 @@ function mod:HandleFocusedBurstTarget()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_DAMAGE(args)
|
||||
if args:IsSpellID(2135444, 2135445, 2135446, 2135447) and DBM:AntiSpam(20, 1) then
|
||||
timerNextPyro:Start(36)
|
||||
end
|
||||
end
|
||||
mod.SPELL_MISSED = mod.SPELL_DAMAGE -- Hack to include SPELL_MISSED as well without more code
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2135444, 2135445, 2135446, 2135447) then
|
||||
if args:IsSpellID(2135444, 2135445, 2135446, 2135447) and DBM:AntiSpam(20, 1) then
|
||||
pyroCast:Start()
|
||||
timerNextPyro:Start()
|
||||
elseif args:IsSpellID(2135362) then
|
||||
|
||||
@@ -53,7 +53,7 @@ L:SetOptionLocalization{
|
||||
L:SetMiscLocalization{
|
||||
DBM_ROD_PLAYER = "Lightnig rod on "..UnitName("PLAYER").."! I have to run!",
|
||||
DBM_EOS_PLAYER = "Eye of storm on "..UnitName("PLAYER").."! Get under me!",
|
||||
DBM_TURBULENT_WINDS = "Turbulent winds on "..UnitName("PLAYER")"!"
|
||||
DBM_TURBULENT_WINDS = "Turbulent winds on "..UnitName("PLAYER").."!"
|
||||
}
|
||||
|
||||
---------------
|
||||
|
||||
Reference in New Issue
Block a user