Update to 5.21 Sunwell (#6)

* 5.20

* Update to 5.21

---------

Co-authored-by: Szyler <Szyler@Szyler.com>
This commit is contained in:
Szyler
2024-10-01 05:09:41 +02:00
committed by GitHub
parent 5b5fee4a2d
commit 82a9ac0937
36 changed files with 3003 additions and 833 deletions
+98 -66
View File
@@ -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)
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_CAST_SUCCESS(args)
if args:IsSpellID(23170) then
warnBronze:Show()
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
function mod:SPELL_AURA_APPLIED(args)
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
View File
@@ -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
+17 -5
View File
@@ -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
+2 -2
View File
@@ -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
+11 -3
View File
@@ -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
File diff suppressed because it is too large Load Diff
+28 -13
View File
@@ -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)
+4 -1
View File
@@ -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
+9 -5
View File
@@ -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
+21 -10
View File
@@ -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
+65 -17
View File
@@ -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
+14 -3
View File
@@ -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
+15
View File
@@ -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"
+3
View File
@@ -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
+4 -4
View File
@@ -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 = {}
+74 -50
View File
@@ -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
+2
View File
@@ -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
+173
View File
@@ -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
+14
View File
@@ -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"
})
+16 -2
View File
@@ -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
+106
View File
@@ -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
+5
View File
@@ -559,3 +559,8 @@ L = DBM:GetModLocalization("Pusillin")
L:SetGeneralLocalization({
name = "Pusillin"
})
L = DBM:GetModLocalization("Mythic Champion")
L:SetGeneralLocalization({
name = "Mythic Champion"
})
-1
View File
@@ -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{
+89
View File
@@ -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
+195
View File
@@ -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.
]]--
+20
View File
@@ -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
+291
View File
@@ -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
+150
View File
@@ -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
+159
View File
@@ -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
+401
View File
@@ -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
+165
View File
@@ -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
]]--
+2
View File
@@ -0,0 +1,2 @@
DBM:RegisterMapSize("SunwellPlateau", 0, 995.6, 664.2)
DBM:RegisterMapSize("SunwellPlateau", 1, 465.0, 310.0)
+72
View File
@@ -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
+244
View File
@@ -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{
}
+9 -2
View File
@@ -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
+1 -1
View File
@@ -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").."!"
}
---------------