5.17 + Hyjal from Szyler's Discord

This commit is contained in:
andrew6180
2023-11-25 17:31:26 -07:00
parent 5b3b160e21
commit 00255736e5
33 changed files with 4031 additions and 1185 deletions
+235 -108
View File
@@ -13,7 +13,9 @@ mod:RegisterEvents(
"SPELL_PERIODIC_HEAL", "SPELL_PERIODIC_HEAL",
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_START" "SPELL_AURA_REMOVED",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS"
) )
@@ -44,22 +46,28 @@ local warnGiantClawTentacle = mod:NewAnnounce("Giant Claw Tentacle Spawned", 2
local warnWeakened = mod:NewAnnounce("C'thun is Weakened!", 4, 25383) local warnWeakened = mod:NewAnnounce("C'thun is Weakened!", 4, 25383)
local warnStomach = mod:NewAnnounce("Stomach Phase Now", 2, 26476) local warnStomach = mod:NewAnnounce("Stomach Phase Now", 2, 26476)
local warnPhase2 = mod:NewPhaseAnnounce(2) local warnPhase2 = mod:NewPhaseAnnounce(2)
local warnLesserEldritch = mod:NewSpellAnnounce(2117084, 4)
local specWarnLesserEldritch = mod:NewSpecialWarningYou(2117084, 4)
local SpecWarnDevSmash = mod:NewSpecialWarning("Devastating Smash!",2117076, 4)
----------Timers---------- ----------Timers----------
local timerDarkGlareCD = mod:NewCDTimer(87.5, 26029) local timerDarkGlareCD = mod:NewCDTimer(89, 26029)
local timerDarkGlare = mod:NewTimer(37.5, "Dark Glare: Time Remaining", 26029) local timerDarkGlare = mod:NewTimer(33, "Dark Glare: Time Remaining", 26029)
local timerEldritch = mod:NewTimer(5, "LOOK AWAY", 4500009) local timerEldritch = mod:NewTimer(5, "LOOK AWAY", 4500009)
local timerEldritchCD = mod:NewCDTimer(30, 4500009) local timerEldritchCD = mod:NewCDTimer(30, 4500009)
local timerEyeTentacleShadow = mod:NewTimer(45, "Eye Tentacles: Shadow", 4500000) local timerEyeTentacleShadow = mod:NewTimer(45, "Eye Tentacles: Shadow", 4500000)
local timerEyeTentacleFire = mod:NewTimer(45, "Eye Tentacles: Fire", 4500054) local timerEyeTentacleFire = mod:NewTimer(45, "Eye Tentacles: Fire", 4500054)
local timerEyeTentacleNature = mod:NewTimer(45, "Eye Tentacles: Nature", 4500061) local timerEyeTentacleNature = mod:NewTimer(45, "Eye Tentacles: Nature", 4500061)
local timerStomach = mod:NewTimer(21, "Enter Stomach", 26476) local timerStomach = mod:NewTimer(41, "Enter Stomach", 26476)
local timerGiantEyeTentacle = mod:NewTimer(44, "Giant Eye Tentacle", 4500060) local timerGiantEyeTentacle = mod:NewTimer(44, "Giant Eye Tentacle", 4500060)
local timerGiantClawTentacle = mod:NewTimer(14, "Giant Claw Tentacle", 6524) local timerGiantClawTentacle = mod:NewTimer(14, "Giant Claw Tentacle", 6524)
local timerWeakened = mod:NewTimer(30, "Weakened: Time Remaining", 25383) local timerWeakened = mod:NewTimer(30, "Weakened: Time Remaining", 25383)
local timerManipulator = mod:NewTimer(15, "Manipulator Tentacle", 4500067) local timerManipulator = mod:NewTimer(15, "Manipulator Tentacle", 4500067)
local timerDevastator = mod:NewTimer(15, "Devastator Tentacle", 4500007) local timerDevastator = mod:NewTimer(15, "Devastator Tentacle", 4500007)
local timerMalignant = mod:NewTimer(15, "Malignant Tentacle", 4500053) local timerMalignant = mod:NewTimer(15, "Malignant Tentacle", 4500053)
local timerLesserEldritch = mod:NewCastTimer(3, 2117084)
local timerNextEyeTent = mod:NewTimer(45, "Next Eye Tentacle", 4500000)
local timerIntoStomach = mod:NewTimer(10, "From Beneath You it Devours", 2117117)
----------Misc---------- ----------Misc----------
mod:AddBoolOption("RangeFrame", true) mod:AddBoolOption("RangeFrame", true)
@@ -77,6 +85,7 @@ local warnMalignantGrasp = mod:NewAnnounce("%s Grabbed!", 4, nil, nil, "Announce
local specWarnRevelations = mod:NewSpecialWarning("Look Away", nil, "Special warning for Eldritch Revelations cast") --4500009) local specWarnRevelations = mod:NewSpecialWarning("Look Away", nil, "Special warning for Eldritch Revelations cast") --4500009)
local specWarnSensoryOverload = mod:NewSpecialWarningYou(4500068) local specWarnSensoryOverload = mod:NewSpecialWarningYou(4500068)
local specWarnDigestiveAcid = mod:NewSpecialWarningStack(26476, nil, 4) --(mod.Options.NumAcidStacks or 4)) local specWarnDigestiveAcid = mod:NewSpecialWarningStack(26476, nil, 4) --(mod.Options.NumAcidStacks or 4))
local SpecwarnStomach = mod:NewSpecialWarningYou(2117117, 4)
----------PreWarning Functions---------- ----------PreWarning Functions----------
function mod:preShadow() function mod:preShadow()
prewarnEyeTentacleShadow:Show() prewarnEyeTentacleShadow:Show()
@@ -115,17 +124,33 @@ function mod:preMalignant()
end end
----------Alert Functions---------- ----------Alert Functions----------
function mod:LesserEldritch()
local target = nil
target = mod:GetBossTarget(15334)
local myName = UnitName("player")
if target == myName then
specWarnLesserEldritch:Show()
SendChatMessage("Lesser Eldritch on "..UnitName("PLAYER").."!", "Say")
else
warnLesserEldritch:Show(target)
end
timerLesserEldritch:Start(target)
end
function mod:alertShadow() function mod:alertShadow()
warnEyeTentacleShadow:Show() warnEyeTentacleShadow:Show()
etent = 2
lasttent = 1 lasttent = 1
end end
function mod:alertFire() function mod:alertFire()
warnEyeTentacleFire:Show() warnEyeTentacleFire:Show()
lasttent = 2 etent = 3
lasttent = 2
end end
function mod:alertNature() function mod:alertNature()
warnEyeTentacleNature:Show() warnEyeTentacleNature:Show()
lasttent = 3 etent = 1
lasttent = 3
end end
function mod:alertStomach() function mod:alertStomach()
warnStomach:Show() warnStomach:Show()
@@ -159,13 +184,15 @@ end
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
phase = 1 phase = 1
self.vb.phase = 1 self.vb.phase = 1
etent = 1 etent = 0
lasttent = 3 lasttent = 0
miniadd = 1 miniadd = 1
eldfixglare = 1 eldfixglare = 1
timerNextEyeTent:Start(45)
self:ScheduleMethod(0-delay, "eldFearInitial") self:ScheduleMethod(0-delay, "eldFearInitial")
self:ScheduleMethod(0-delay, "darkGlareInitial") self:ScheduleMethod(0-delay, "darkGlareInitial")
self:ScheduleMethod(0-delay, "eyeTentacle") self:ScheduleMethod(48-delay, "firstEyeTentacle")
-- self:ScheduleMethod(0-delay, "miniAddInitial") -- self:ScheduleMethod(0-delay, "miniAddInitial")
if self.Options.RangeFrame then if self.Options.RangeFrame then
DBM.RangeCheck:Show(13) DBM.RangeCheck:Show(13)
@@ -184,41 +211,84 @@ end
--function mod:miniAdd() --function mod:miniAdd()
-- local timer15 = 15 -- local timer15 = 15
--end --end
function mod:eyeTentacle() function mod:firstEyeTentacle()
local timer1 = 45 local timer0 = 43
if etent == 1 then if etent == 1 then
timerEyeTentacleShadow:Start(timer1) timerEyeTentacleShadow:Start(42)
self:ScheduleMethod(timer1-5, "preShadow") self:ScheduleMethod(39, "preShadow")
self:ScheduleMethod(timer1, "alertShadow") self:ScheduleMethod(42, "alertShadow")
etent = 2 etent = 2
lasttent = 3
elseif etent == 2 then elseif etent == 2 then
timerEyeTentacleFire:Start(timer1) timerEyeTentacleFire:Start(42)
self:ScheduleMethod(timer1-5, "preFire") self:ScheduleMethod(39, "preFire")
self:ScheduleMethod(timer1, "alertFire") self:ScheduleMethod(42, "alertFire")
etent = 3 etent = 3
lasttent = 1
elseif etent == 3 then elseif etent == 3 then
timerEyeTentacleNature:Start(timer1) timerEyeTentacleNature:Start(42)
self:ScheduleMethod(timer1-5, "preNature") self:ScheduleMethod(39, "preNature")
self:ScheduleMethod(timer1, "alertNature") self:ScheduleMethod(42, "alertNature")
etent = 1 etent = 1
lasttent = 2
elseif etent == 0 then
timerNextEyeTent:Start(42)
end end
self:ScheduleMethod(timer1, "eyeTentacle") self:ScheduleMethod(42, "eyeTentacle")
end
function mod:eyeTentacle()
local timer1 = 44
if etent == 1 then
timerEyeTentacleShadow:Start(44.5)
self:ScheduleMethod(40, "preShadow")
self:ScheduleMethod(44.5, "alertShadow")
elseif etent == 2 then
timerEyeTentacleFire:Start(44.5)
self:ScheduleMethod(40, "preFire")
self:ScheduleMethod(44.5, "alertFire")
elseif etent == 3 then
timerEyeTentacleNature:Start(44.5)
self:ScheduleMethod(40, "preNature")
self:ScheduleMethod(44.5, "alertNature")
elseif etent == 0 then
timerNextEyeTent:Start(44.5)
end
self:ScheduleMethod(45, "eyeTentacle")
end
function mod:p2eyeTentacle()
local timer2 = 15
if etent == 1 then
timerEyeTentacleShadow:Start(15)
self:ScheduleMethod(11, "preShadow")
self:ScheduleMethod(15, "alertShadow")
elseif etent == 2 then
timerEyeTentacleFire:Start(15)
self:ScheduleMethod(11, "preFire")
self:ScheduleMethod(15, "alertFire")
elseif etent == 3 then
timerEyeTentacleNature:Start(15)
self:ScheduleMethod(11, "preNature")
self:ScheduleMethod(15, "alertNature")
elseif etent == 0 then
timerNextEyeTent:Start(15)
end
self:ScheduleMethod(16, "eyeTentacle")
end end
function mod:darkGlareInitial() function mod:darkGlareInitial()
local timer11 = 50 timerDarkGlareCD:Start(55)
timerDarkGlareCD:Start(timer11) self:ScheduleMethod(50, "preGlare")
self:ScheduleMethod(timer11-5, "preGlare") self:ScheduleMethod(55, "darkGlare")
self:ScheduleMethod(timer11, "alertGlare")
end end
function mod:darkGlare() function mod:darkGlare()
local timer10 = 87.5 timerDarkGlareCD:Start(89)
timerDarkGlare:Start() self:ScheduleMethod(84, "preGlare")
timerDarkGlareCD:Start(timer10) self:ScheduleMethod(89, "alertGlare")
self:ScheduleMethod(timer10-5, "preGlare") self:ScheduleMethod(89,"darkGlare")
self:ScheduleMethod(timer10, "alertGlare")
end end
function mod:eldFearInitial() function mod:eldFearInitial()
@@ -238,9 +308,9 @@ function mod:eldFear()
elseif eldfixglare == 2 then elseif eldfixglare == 2 then
self:ScheduleMethod(timer12-5, "eldFearGlareFix") self:ScheduleMethod(timer12-5, "eldFearGlareFix")
end end
timerEldritchCD:Start(timer12) timerEldritchCD:Start(30)
self:ScheduleMethod(timer12-5, "preFear") self:ScheduleMethod(25, "preFear")
self:ScheduleMethod(timer12, "alertFear") self:ScheduleMethod(30, "alertFear")
end end
end end
@@ -249,35 +319,9 @@ function mod:eldFearGlareFix()
end end
function mod:enterStomach() function mod:enterStomach()
local timer2a = 20 self:UnscheduleMethod("enterStomach")
local timer2b = 10 timerStomach:Start(41)
if mod:IsDifficulty("heroic10") then self:ScheduleMethod(41, "enterStomach")
timerStomach:Start(timer2a)
self:ScheduleMethod(timer2a-5, "preStomach")
self:ScheduleMethod(timer2a, "alertStomach")
self:ScheduleMethod(timer2a, "enterStomach")
elseif mod:IsDifficulty("heroic25") then
timerStomach:Start(timer2b)
self:ScheduleMethod(timer2b-5, "preStomach")
self:ScheduleMethod(timer2b, "alertStomach")
self:ScheduleMethod(timer2b, "enterStomach")
end
end
function mod:stomachWeaknessFix()
local timer4a = 15
local timer4b = 5
if mod:IsDifficulty("heroic10") then
timerStomach:Start(timer4a)
self:ScheduleMethod(timer4a-5, "preStomach")
self:ScheduleMethod(timer4a, "alertStomach")
self:ScheduleMethod(timer4a, "enterStomach")
elseif mod:IsDifficulty("heroic25") then
timerStomach:Start(timer4b)
self:ScheduleMethod(timer4b-5, "preStomach")
self:ScheduleMethod(timer4b, "alertStomach")
self:ScheduleMethod(timer4b, "enterStomach")
end
end end
function mod:clawTentacleInitial() function mod:clawTentacleInitial()
@@ -328,19 +372,20 @@ function mod:geyeTentacle()
self:ScheduleMethod(timer9, "geyeTentacle") self:ScheduleMethod(timer9, "geyeTentacle")
end end
function mod:fixweaknessTimers() function mod:fixWeaknessTimers()
self:ScheduleMethod(0, "stomachWeaknessFix") self:UnscheduleMethod("eyeTentacle")
self:UnscheduleMethod("clawTentacle")
self:UnscheduleMethod("geyeTentacle")
self:UnscheduleMethod("preShadow")
self:UnscheduleMethod("preFire")
self:UnscheduleMethod("preNature")
self:ScheduleMethod(0, "clawTentacleWeaknessFix") self:ScheduleMethod(0, "clawTentacleWeaknessFix")
self:ScheduleMethod(0, "geyeTentacleWeaknessFix") self:ScheduleMethod(0, "geyeTentacleWeaknessFix")
if lasttent == 1 then timerStomach:Start(15)
etent = 2 self:ScheduleMethod(15, "enterStomach")
elseif lasttent == 2 then self:ScheduleMethod(0, "p2eyeTentacle")
etent = 3
elseif lasttent == 3 then
etent = 1
end
self:ScheduleMethod(0, "eyeTentacle")
end end
function mod:phaseTwo() function mod:phaseTwo()
warnPhase2:Show() warnPhase2:Show()
self.vb.phase = 2 self.vb.phase = 2
@@ -351,8 +396,9 @@ function mod:phaseTwo()
elseif lasttent == 3 then elseif lasttent == 3 then
etent = 1 etent = 1
end end
timerStomach:Start(20)
self:ScheduleMethod(6, "eyeTentacle") self:ScheduleMethod(6, "eyeTentacle")
self:ScheduleMethod(1, "enterStomach") self:ScheduleMethod(20, "enterStomach")
self:ScheduleMethod(0, "clawTentacleInitial") self:ScheduleMethod(0, "clawTentacleInitial")
self:ScheduleMethod(0, "geyeTentacleInitial") self:ScheduleMethod(0, "geyeTentacleInitial")
end end
@@ -383,17 +429,17 @@ function mod:UNIT_DIED(args)
self:UnscheduleMethod("darkGlareInitial") self:UnscheduleMethod("darkGlareInitial")
self:UnscheduleMethod("preGlare") self:UnscheduleMethod("preGlare")
self:UnscheduleMethod("alertGlare") self:UnscheduleMethod("alertGlare")
self:UnscheduleMethod("firstEyeTentacle")
self:ScheduleMethod(0, "phaseTwo") self:ScheduleMethod(0, "phaseTwo")
end end
end end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg:find(L.Eldritch) then if msg:find(L.Eldritch) or msg == L.Eldritch then
self:ScheduleMethod(0, "eldFear") self:ScheduleMethod(0, "eldFear")
specWarnRevelations:Show(); specWarnRevelations:Show();
end end
if msg:find(L.Glare) then if msg == L.EmoteGlare or msg:find(L.EmoteGlare) then
eldfixglare = 2 eldfixglare = 2
timerEldritchCD:Stop() timerEldritchCD:Stop()
self:UnscheduleMethod("eldFearInitial") self:UnscheduleMethod("eldFearInitial")
@@ -403,7 +449,75 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
self:ScheduleMethod(0, "darkGlare") self:ScheduleMethod(0, "darkGlare")
self:ScheduleMethod(37.5, "eldFear") self:ScheduleMethod(37.5, "eldFear")
end end
if msg:find(L.weakened) then --if msg == L.EmoteWeakend or msg:find(L.Weakened) then
-- timerWeakened:Start()
-- warnWeakened:Show()
-- timerGiantClawTentacle:Stop()
-- timerGiantEyeTentacle:Stop()
-- timerStomach:Stop()
-- timerEyeTentacleFire:Stop()
-- timerEyeTentacleNature:Stop()
-- timerEyeTentacleShadow:Stop()
-- self:UnscheduleMethod("enterStomach")
-- self:UnscheduleMethod("stomachWeaknessFix")
-- self:UnscheduleMethod("preStomach")
-- self:UnscheduleMethod("alertStomach")
-- self:UnscheduleMethod("clawTentacleInitial")
-- self:UnscheduleMethod("clawTentacleWeaknessFix")
-- self:UnscheduleMethod("clawTentacle")
-- self:UnscheduleMethod("preGiantClaw")
-- self:UnscheduleMethod("alertGiantClaw")
-- self:UnscheduleMethod("geyeTentacle")
-- self:UnscheduleMethod("geyeTentacleInitial")
-- self:UnscheduleMethod("geyeTentacleWeaknessFix")
-- self:UnscheduleMethod("preGiantEye")
-- self:UnscheduleMethod("alertGiantEye")
-- self:UnscheduleMethod("eyeTentacle")
-- self:UnscheduleMethod("preShadow")
-- self:UnscheduleMethod("alertShadow")
-- self:UnscheduleMethod("preFire")
-- self:UnscheduleMethod("alertFire")
-- self:UnscheduleMethod("preNature")
-- self:UnscheduleMethod("alertNature")
--end
--if msg == L.EmoteRestored or msg:find(L.EmoteRestored) then
-- self:ScheduleMethod(0, "fixweaknessTimers")
--end
end
function mod:SPELL_PERIODIC_DAMAGE(args)
if args:IsSpellID(2117055,2117056,2117057,2117058) then -- Eradicate (Eye Tentacles)
if args:IsPlayer() and (((args.amount or 0) + (args.resisted or 0) + (args.absorbed or 0)) > 1000) then
specWarnEradicate:Show();
end
end
end
function mod:SPELL_PERIODIC_HEAL(args)
if args:IsSpellID(2117060,2117061,2117062,2117063) then -- Consume Essence
if args:IsPlayerSource() and ((args.amount or 0) > 4000) then
specWarnConsume:Show();
end
end
end
function mod:SPELL_AURA_REMOVED(args)
if (args:IsSpellID(2117107)) and args.destName == "C'Thun" then
timerWeakened:Stop()
timerGiantClawTentacle:Stop()
timerGiantEyeTentacle:Stop()
timerStomach:Stop()
timerEyeTentacleFire:Stop()
timerEyeTentacleNature:Stop()
timerEyeTentacleShadow:Stop()
self:UnscheduleMethod("fixWeaknessTimers")
self:ScheduleMethod(0, "fixWeaknessTimers")
end
end
function mod:SPELL_AURA_APPLIED(args) -- Weakened phase (C'Thun and tentacles)
if args:IsSpellID(2117107) then
timerWeakened:Start() timerWeakened:Start()
warnWeakened:Show() warnWeakened:Show()
timerGiantClawTentacle:Stop() timerGiantClawTentacle:Stop()
@@ -412,6 +526,14 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
timerEyeTentacleFire:Stop() timerEyeTentacleFire:Stop()
timerEyeTentacleNature:Stop() timerEyeTentacleNature:Stop()
timerEyeTentacleShadow:Stop() timerEyeTentacleShadow:Stop()
self:UnscheduleMethod("eyeTentacle")
self:UnscheduleMethod("p2eyeTentacle")
self:UnscheduleMethod("preShadow")
self:UnscheduleMethod("alertShadow")
self:UnscheduleMethod("preFire")
self:UnscheduleMethod("alertFire")
self:UnscheduleMethod("preNature")
self:UnscheduleMethod("alertNature")
self:UnscheduleMethod("enterStomach") self:UnscheduleMethod("enterStomach")
self:UnscheduleMethod("stomachWeaknessFix") self:UnscheduleMethod("stomachWeaknessFix")
self:UnscheduleMethod("preStomach") self:UnscheduleMethod("preStomach")
@@ -426,35 +548,9 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
self:UnscheduleMethod("geyeTentacleWeaknessFix") self:UnscheduleMethod("geyeTentacleWeaknessFix")
self:UnscheduleMethod("preGiantEye") self:UnscheduleMethod("preGiantEye")
self:UnscheduleMethod("alertGiantEye") self:UnscheduleMethod("alertGiantEye")
self:UnscheduleMethod("eyeTentacle")
self:UnscheduleMethod("preShadow")
self:UnscheduleMethod("alertShadow")
self:UnscheduleMethod("preFire")
self:UnscheduleMethod("alertFire")
self:UnscheduleMethod("preNature")
self:UnscheduleMethod("alertNature")
self:ScheduleMethod(30, "fixweaknessTimers") self:ScheduleMethod(30, "fixweaknessTimers")
end end
end if args:IsSpellID(2117074) then -- Malignant Grasp (Malignant Tentacle)
function mod:SPELL_PERIODIC_DAMAGE(args)
if args:IsSpellID(4500054) then -- Eradicate (Eye Tentacles)
if args:IsPlayer() and (((args.amount or 0) + (args.resisted or 0) + (args.absorbed or 0)) > 1000) then
specWarnEradicate:Show();
end
end
end
function mod:SPELL_PERIODIC_HEAL(args)
if args:IsSpellID(4500062) then -- Consume Essence (Eye Tentacles, debuff is 61)
if args:IsPlayerSource() and ((args.amount or 0) > 4000) then
specWarnConsume:Show();
end
end
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(4500026) then -- Malignant Grasp (Malignant Tentacle)
if args.destName then if args.destName then
if (not args:IsPlayer()) then if (not args:IsPlayer()) then
local uId = DBM:GetRaidUnitId(args.destName) local uId = DBM:GetRaidUnitId(args.destName)
@@ -468,11 +564,20 @@ function mod:SPELL_AURA_APPLIED(args)
end end
end end
end end
elseif args:IsSpellID(4500001) then -- Miasma (Eye Tentacles) end
if args:IsSpellID(2117054) then -- Miasma (Eye Tentacles)
if args:IsPlayer() then if args:IsPlayer() then
specWarnMiasma:Show(); specWarnMiasma:Show();
end end
end end
if args:IsSpellID(2117117) then -- (From beneath it devours you)
if args.destName == UnitName("player") then
SpecwarnStomach:Show()
SendChatMessage(""..UnitName("PLAYER").."is being sent to the stomach", "Say")
else
warnStomach:Show(args.destName);
end
end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
@@ -494,4 +599,26 @@ function mod:SPELL_CAST_START(args)
specWarnSensoryOverload:Show(); specWarnSensoryOverload:Show();
end end
end end
end if args:IsSpellID(2117084) then
self:ScheduleMethod(0.2, "LesserEldritch")
end
if args:IsSpellID(2117009) then
timerDarkGlare:Start()
warnDarkGlare:Show()
end
if args:IsSpellID(2117076) and args.UnitName == "Giant Claw Tentacle" then
SpecWarnDevSmash:Show()
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2117055,2117056,2117057,2117058) and etent == 0 then
etent = 3
end
if args:IsSpellID(2117060,2117061,2117062,2117063) and etent == 0 then
etent = 1
end
if args:IsSpellID(2117050) and etent == 0 then
etent = 2
end
end
+9
View File
@@ -223,3 +223,12 @@ v5.16 30/11/2022
- Fixed lua error with DBM:AntiSpam - Fixed lua error with DBM:AntiSpam
- Fixed spellIDs for SSC - Fixed spellIDs for SSC
---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
v5.17 07/05/2023
- Rewrote C'Thun, adding new Spell IDs and fixed functions
- Rewrote most of Naxx, adding new Spell IDs and updating old.
- Added triggers and functions to fit with new mechanics
----------------------------------------------------------------------------------------------------
v5.17 15/05/2023
- Rewrote most of the Naxx fights, updating Spell IDs
- Added UNIT_DIED triggers to all
- Added AntiSpam
+3 -3
View File
@@ -43,9 +43,9 @@
------------------------------- -------------------------------
DBM = { DBM = {
Revision = ("$Revision: 5016 $"):sub(12, -3), Revision = ("$Revision: 5016 $"):sub(12, -3),
Version = "5.16", Version = "5.17",
DisplayVersion = "5.16", -- the string that is shown as version DisplayVersion = "5.17", -- the string that is shown as version
ReleaseRevision = 5015 -- the revision of the latest stable version that is available (for /dbm ver2) ReleaseRevision = 5016 -- the revision of the latest stable version that is available (for /dbm ver2)
} }
DBM_SavedOptions = {} DBM_SavedOptions = {}
+196
View File
@@ -0,0 +1,196 @@
local mod = DBM:NewMod("Anetheron", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(17808)
mod:SetUsedIcons(1,2,3,4,5,6,7,8)
mod:RegisterCombat("combat", 17808)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_REFRESH",
"SPELL_AURA_REMOVED",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"CHAT_MSG_RAID_BOSS_EMOTE",
"CHAT_MSG_MONSTER_YELL",
"UNIT_DIED"
)
-- Unknown Entity spawn
-- Unknown Effigy warning (2 stacks++)
-- Teleport active (plus body notification?)
--Carrion Swarm
local warnSwarm = mod:NewSpellAnnounce(2140800, 3)
local timerSwarm = mod:NewNextTimer(30, 2140800)
--Nightmare
local timerNextNightmare = mod:NewNextTimer(45, 2140830)
local warnNightmareSoon = mod:NewAnnounce("Nightmare soon!", 2140830)
local warnNightmare = mod:NewAnnounce("%s is sent into the Nightmare!", 2140830)
-- Ring of Frost
local timerNextRingofFrost = mod:NewNextTimer(45, 2140153)
local timerRingofFrost = mod:NewTimer(15, "Ring of Frost duration", 2140153)
-- Infernal Rain
local timerNextInfernal = mod:NewNextTimer(45, 2140810)
local timerInfernal = mod:NewTimer(10, "Infernal spawning", 2140810)
local timerInfernalRain = mod:NewTimer(19, "Infernal Rain duration", 2140818)
-- Fight
local target1
local target2
local target3
function mod:OnCombatStart(delay)
timerSwarm:Start(10-delay)
timerNextNightmare:Start(35-delay)
timerNextInfernal:Start(20-delay)
self:ScheduleMethod(35-delay,"Nightmare")
target1 = nil
target2 = nil
target3 = nil
DBM.BossHealth:AddBoss(17772, L.Jaina)
end
function mod:Nightmare()
self:UnscheduleMethod("Nightmare")
timerNextNightmare:Start()
warnNightmareSoon:Schedule(40)
self:ScheduleMethod(45,"Nightmare")
end
function mod:InfernalRain()
self:UnscheduleMethod("InfernalRain")
timerInfernal:Stop()
timerInfernalRain:Stop()
timerNextInfernal:Stop()
timerInfernal:Start()
timerInfernalRain:Start()
timerNextInfernal:Start()
self:ScheduleMethod(45,"InfernalRain")
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2140825) then
if target3 == nil and target2 ~= nil and target1 ~= nil then
target3 = args.DestName
self:setIcon(target3, 2)
DBM.BossHealth:AddBoss(92171,target3)
warnNightmare:Show(target3)
elseif target2 == nil and target1 ~= nil then
target2 = args.DestName
self:setIcon(target2, 2)
DBM.BossHealth:AddBoss(92171,target2)
warnNightmare:Show(target2)
elseif target1 == nil then
target1 = args.DestName
self:setIcon(target1, 1)
DBM.BossHealth:AddBoss(92171,target1)
warnNightmare:Show(target1)
end
end
if args:IsSpellID(2140825) and args.destName == target1 then
DBM.BossHealth:RemoveBoss(92171,target1)
self:setIcon(target1, 0)
target1 = nil
elseif args:IsSpellID(2140825) and args.destName == target2 then
DBM.BossHealth:RemoveBoss(92171,target2)
self:setIcon(target2, 0)
target2 = nil
elseif args:IsSpellID(2140825) and args.destName == target3 then
DBM.BossHealth:RemoveBoss(92171,target3)
self:setIcon(target3, 0)
target3 = nil
end
end
function mod:SPELL_AURA_REFRESH(args)
if args:IsSpellID(2140825) and args.destName == target1 then
DBM.BossHealth:RemoveBoss(92171,target1)
self:setIcon(target1, 0)
target1 = nil
elseif args:IsSpellID(2140825) and args.destName == target2 then
DBM.BossHealth:RemoveBoss(92171,target2)
self:setIcon(target2, 0)
target2 = nil
elseif args:IsSpellID(2140825) and args.destName == target3 then
DBM.BossHealth:RemoveBoss(92171,target3)
self:setIcon(target3, 0)
target3 = nil
end
end
function mod:SPELL_AURA_REMOVED(args)
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2140800) then
warnSwarm:Show()
timerSwarm:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.Infernal1 or msg == L.Infernal2 or msg:find(L.Infernal1) or msg:find(L.Infernal2) then
self:UnscheduleMethod("InfernalRain")
timerInfernal:Stop()
timerNextInfernal:Stop()
timerInfernalRain:Stop()
timerNextInfernal:Start(45)
timerInfernal:Start(10)
timerInfernalRain:Start(19)
self:ScheduleMethod(45,"InfernalRain")
end
if msg == L.RingofFrost or msg:find(L.RingofFrost) then
timerNextRingofFrost:Start()
timerRingofFrost:Schedule(2)
end
end
function mod:UNIT_DIED(args)
if args.destName == target1 then
DBM.BossHealth:RemoveBoss(92171,target1)
target1 = nil
elseif args.destName == target2 then
DBM.BossHealth:RemoveBoss(92171,target2)
target2 = nil
elseif args.destName ==target3 then
DBM.BossHealth:RemoveBoss(92171,target3)
target3 = nil
end
end
function mod:OnCombatEnd()
DBM.BossHealth:RemoveBoss(92171,target1)
DBM.BossHealth:RemoveBoss(92171,target2)
DBM.BossHealth:RemoveBoss(92171,target3)
DBM.BossHealth:RemoveBoss(17772)
target1 = nil
target2 = nil
target3 = nil
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg == " Anetheron sends %s into a nightmare!" or msg:find(L.Nightmare) then
if target3 == nil and target2 ~= nil and target1 ~= nil then
target3 = msg:find(L.Nightmare)
self:SetIcon(target3, 3)
DBM.BossHealth:AddBoss(92171,target3)
elseif target2 == nil and target1 ~= nil then
target2 = msg:find(L.Nightmare)
self:SetIcon(target2, 2)
DBM.BossHealth:AddBoss(92171,target2)
elseif target1 == nil then
target1 = msg:find(L.Nightmare)
self:SetIcon(target1, 1)
DBM.BossHealth:AddBoss(92171,target1)
end
end
end
+345
View File
@@ -0,0 +1,345 @@
local mod = DBM:NewMod("Archimonde", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(17968,26648,26647)
mod:SetUsedIcons(8)
mod:RegisterCombat("combat")
mod:SetBossHealthInfo(
17968, "Archimonde",
26648, "Narmak",
26647, "Haaroon"
)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"SPELL_DAMAGE",
"CHAT_MSG_MONSTER_YELL",
"UNIT_DIED",
"UNIT_HEALTH"
)
-- -------------- RP -------------------
local timerCombatStart = mod:NewTimer(23, "Combat starting in ", 800462)
--Haaroon & Narmak
local timerShockwave = mod:NewTimer(25, "Haaroon casting 3 Shockwaves", 2141567)
local timerCastsShockwave = mod:NewCastTimer(3, 2141567)
local warnShockwave = mod:NewSpellAnnounce(2141567, 3)
local timerFelBombs = mod:NewTimer(25, "Narmak throwing 4 Fel Bombs", 2141553)
local timerFelExplosionSoon = mod:NewTimer(10, "Fel Bombs exploding soon", 2141553)
local timerFelExplosion = mod:NewTimer(4, "Fel Bombs exploding", 2141553)
local warnFelBombs = mod:NewSpellAnnounce(2141553, 3)
------------ Archimonde ----------------
-- Transitions
local warnAddPhase = mod:NewAnnounce("Kill Narmak and Haaroon to engage Archimonde", 3, 10066)
local warnFirePhase = mod:NewAnnounce("Fire Phase incoming!", 3, 76325)
local warnLightningPhaseSoon = mod:NewAnnounce("Lightning Phase at 70 percent health!", 3, 2141471)
local warnLightningPhase = mod:NewAnnounce("Lightning Phase incoming!", 3, 2141471)
local timerCallLightning = mod:NewCastTimer(4, 2141471)
local warnVoidPhaseSoon = mod:NewAnnounce("Void Phase at 40 percent health!", 3, 2141480)
local warnVoidPhase = mod:NewAnnounce("Void Phase incoming!", 3, 2141480)
-- All fight
local timerNextForceofWill = mod:NewNextTimer(45, 2141400)
local warnSpecialForceofWill = mod:NewSpecialWarning("Force of Will", 2141400)
local warnForceofWillSoon = mod:NewAnnounce("Force of Will in 5 seconds", 2141400)
local timerForceofWill = mod:NewCastTimer(2, 2141400)
local warnCurseoftheDefiler = mod:NewSpellAnnounce(2141422)
local timerCurseoftheDefiler = mod:NewNextTimer(30, 2141422)
local specWarnWeakCurse = mod:NewSpecialWarning("Curse of the Defiler is weakened. Decurse now!", 2141428)
local warnDecurseJaina = mod:NewAnnounce("Decurse Jaina now!", 2141428)
local warnDecurseTyrande = mod:NewAnnounce("Decurse Tyrande now!",2141428)
local warnDecurseThrall = mod:NewAnnounce("Decurse Thrall now!", 2141428)
--Fire Phase
local timerNextDoomMeteor = mod:NewNextTimer(45, 2141405)
local timerCastDoomMeteor = mod:NewCastTimer(6, 2141405)
local warnDoomMeteor = mod:NewSpellAnnounce(2141405)
local timerDrawFlames = mod:NewNextTimer(55, 2141442)
local warnDrawFlames = mod:NewSpellAnnounce(2141442)
--Lightning Phase
local timerLightningStrikes = mod:NewTimer(10, "Lightning Strikes", 2141456)
local warnLightningStrikes = mod:NewSpecialWarning("Lightning Strikes Soon!", 2141456)
local timerLivingLightning = mod:NewNextTimer(45,2141462)
local warnLivingLightning = mod:NewAnnounce("Archimonde is summoning Living Lightning!", 2141462, 2)
-- Void Phase
local warnGoT = mod:NewSpellAnnounce(2141604, 3)
local timerNextGoT = mod:NewNextTimer(60, 2141604)
local timerCastGoT = mod:NewCastTimer(3, 2141604)
local timerVoidHerald = mod:NewTimer(20, "Void Herald incoming", 5108)
local timerVoidTendril = mod:NewTimer(20, "Void Tendrils spawning", 2117107)
-- Jaina
local warnWardWinter = mod:NewAnnounce("Ward of Winter on %s!", 2140155)
local warnSpecWardsofWinter = mod:NewSpecialWarning("Ward of Winter on you!", 2140155)
local timerWardWinter = mod:NewTargetTimer(15, 2140155)
local timerNextWardWinter = mod:NewNextTimer(45, 2140155)
-- Thrall
local warnTotemofLightning = mod:NewAnnounce("A Lightning Capture Totem is up for 15 seconds!", 2140264)
local timerTotemofLightning = mod:NewTimer(30, "Lightning Capture Totem duration", 2140264)
local timerNextTotemofLightning = mod:NewNextTimer(45, 2140264)
--Tyrande
local warnLightofElune = mod:NewAnnounce("Light of Elune on %s!",2140073)
local timerLightofElune = mod:NewNextTimer(50, 2140073)
local warnSpecLightofElune = mod:NewSpecialWarning("Light of Elune on you!", 2140073)
-- fight
local berserkTimer = mod:NewBerserkTimer(900)
local prewarn
local phase
local terror
local lastDoomfire
local remainingDoomfire
local lastForce
local remainingForce
local drawFlames
function mod:OnCombatStart(delay)
prewarn = 0
phase = 0
terror = 0
lastDoomfire = nil
lastForce = nil
drawFlames = 0
end
function mod:AddPhase()
warnAddPhase:Show()
timerFelBombs:Start(8)
timerShockwave:Start(12)
end
function mod:FirePhase()
phase = 1
berserkTimer:Start()
warnFirePhase:Show()
timerNextDoomMeteor:Start(10)
warnForceofWillSoon:Schedule(25)
timerNextForceofWill:Start(30)
if mod:IsDifficulty("heroic10", "heroic25") then
timerNextWardWinter:Start(180)
else
timerNextWardWinter:Start(50)
end
end
function mod:LightningPhase()
phase = 2
warnLightningPhase:Show()
timerCallLightning:Start()
warnForceofWillSoon:Schedule(33)
timerNextForceofWill:Start(38)
timerTotemofLightning:Start(28)
timerLightningStrikes:Start(16)
warnLightningStrikes:Schedule(14)
self:ScheduleMethod(15,"LightningStrikes")
end
function mod:VoidPhase()
phase = 3
warnVoidPhase:Show()
warnForceofWillSoon:Schedule(33)
timerForceofWill:Start(38)
timerNextGoT:Start(3)
timerVoidTendril:Start(23)
warnLightningStrikes:Schedule(10)
timerLightningStrikes:Start(12)
self:ScheduleMethod(12,"LightningStrikes")
end
function mod:CancelP0Timers()
timerFelBombs:Stop()
timerShockwave:Stop()
end
function mod:CancelP1Timers()
timerNextDoomMeteor:Stop()
timerNextForceofWill:Stop()
warnForceofWillSoon:Cancel()
end
function mod:CancelP2Timers()
self:UnscheduleMethod("LightningStrikes")
timerLightningStrikes:Stop()
warnLightningStrikes:Cancel()
timerNextForceofWill:Stop()
warnForceofWillSoon:Cancel()
timerLivingLightning:Stop()
end
function mod:LightningStrikes()
self:UnscheduleMethod("LightningStrikes")
timerLightningStrikes:Start()
warnLightningStrikes:Schedule(8)
self:ScheduleMethod(10,"LightningStrikes")
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2141428) and args:IsPlayer() then -- Grasp of the Defiler is Weakened
specWarnWeakCurse:Show()
end
if args:IsSpellID(2141428) and args.destName == "Lady Jaina Proudmoore" then
warnDecurseJaina:Show()
elseif args:IsSpellID(2141428) and args.destName == "Tyrande Whisperwind" then
warnDecurseTyrande:Show()
elseif args:IsSpellID(2141428) and args.destName == "Thrall" then
warnDecurseThrall:Show()
end
if args:IsSpellID(2141422,2141423,2141424,2141425) and args:IsPlayer() then -- Curse of the Defiler
warnCurseoftheDefiler:Show()
end
if args:IsSpellID(2140155) then
if args:IsPlayer() then
warnSpecWardsofWinter:Show()
else
warnWardWinter:Show(args.destName)
end
self:SetIcon(args.destName, 4, 15)
timerWardWinter:Start(args.destName)
timerNextWardWinter:Start()
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2141422,2141423,2141424,2141425) and args:IsPlayer() then -- Curse of the Defiler
warnCurseoftheDefiler:Show(args.amount)
end
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2141455,2141456,2141457,2141458) and DBM:AntiSpam(6,5) then
self:UnscheduleMethod("LightningStrikes")
warnLightningStrikes:Cancel()
self:ScheduleMethod(0,"LightningStrikes")
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2141553) and DBM:AntiSpam(5,3) then -- Fel Iron Bombs
warnFelBombs:Show()
timerFelBombs:Start()
timerFelExplosionSoon:Start(11)
timerFelExplosion:Schedule(11)
elseif args:IsSpellID(2141567) and DBM:AntiSpam(5,4) then -- Shockwave
warnShockwave:Show()
timerShockwave:Start()
timerCastsShockwave:Start()
elseif args:IsSpellID(2141405) then -- Doomfire Meteor
warnDoomMeteor:Show()
timerCastDoomMeteor:Start()
timerNextDoomMeteor:Start()
lastDoomfire = GetTime()
elseif args:IsSpellID(2141400) then -- Force of Will
warnSpecialForceofWill:Show()
warnForceofWillSoon:Schedule(40)
timerForceofWill:Start()
timerNextForceofWill:Start()
lastForce = GetTime()
elseif args:IsSpellID(2141519) then -- Call Lightning
self:ScheduleMethod(0, "CancelP1Timers")
self:ScheduleMethod(0, "LightningPhase")
elseif args:IsSpellID(2141604) then -- Glimpse of Tomorrow
warnGoT:Show()
timerCastGoT:Start()
if terror == 1 then
timerNextGoT:Start(60)
elseif terror == 0 then
terror = 1
timerNextGoT:Start(15)
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2141442) then -- Draw Flames
warnDrawFlames:Show()
if drawFlames == 1 then
timerNextDoomMeteor:Start()
elseif drawFlames == 2 then
timerNextForceofWill:Start()
end
elseif args:IsSpellID(2141473) then -- Summon Living Lightning
warnLivingLightning:Show()
timerLivingLightning:Start()
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.FightStartYell or msg:find(L.FightStartYell) then -- Archimonde
timerCombatStart:Start()
self:ScheduleMethod(23,"AddPhase")
end
if msg == L.FirePhase or msg:find(L.FirePhase) then --Archimonde
self:ScheduleMethod(0,"CancelP0Timers")
self:ScheduleMethod(0,"FirePhase")
end
if msg == L.LightningCapTotem or msg:find(L.LightningCapTotem) then --Thrall
warnTotemofLightning:Show()
timerTotemofLightning:Start()
timerNextTotemofLightning:Start()
end
if msg == L.LightofElune or msg:find(L.LightofElune) then -- Tyrande
local lightofElune = msg:find(L.LightofElune)
if lightofElune == UnitName("Player") then
warnSpecLightofElune:Show()
else
warnLightofElune:Show(lightofElune)
end
self:SetIcon(lightofElune, 3, 50)
timerLightofElune:Start()
end
if msg == L.CalloftheVoid or msg:find(L.CalloftheVoid) then --Archimonde Void Phase
self:ScheduleMethod(0, "CancelP2Timers")
self:ScheduleMethod(0,"VoidPhase")
end
-- if msg == L.VoidSpawn or msg:find(L.VoidSpawn) then -- Archimonde Void Spawn
--end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 17968 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.85 and prewarn == 0 and DBM:AntiSpam(5,2) then
prewarn = 1
remainingDoomfire = 45 - (GetTime() - lastDoomfire)
remainingForce = 45 - (GetTime() - lastForce)
if remainingDoomfire < remainingForce then
timerNextDoomMeteor:Cancel()
timerDrawFlames:Start(remainingDoomfire)
drawFlames = 1
else
timerNextForceofWill:Cancel()
timerDrawFlames:Start(remainingForce)
drawFlames = 2
end
end
if self:GetUnitCreatureId(uId) == 17968 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.75 and prewarn == 1 and DBM:AntiSpam(5,2) then
prewarn = 2
warnLightningPhaseSoon:Show()
elseif self:GetUnitCreatureId(uId) == 17968 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.45 and prewarn == 2 and DBM:AntiSpam(5,3) then
prewarn = 3
warnVoidPhaseSoon:Show()
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 26647 then
timerShockwave:Stop()
elseif cid == 26648 then
timerFelBombs:Stop()
end
end
function mod:CombatEnd()
self:ScheduleMethod("CancelP0Timers")
self:ScheduleMethod("CancelP1Timers")
self:ScheduleMethod("CancelP2Timers")
end
+134
View File
@@ -0,0 +1,134 @@
local mod = DBM:NewMod("Azgalor", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(17842)
mod:SetUsedIcons(8)
mod:RegisterCombat("combat", 17842)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED",
"SPELL_CAST_SUCCESS",
"SPELL_CAST_START",
"SPELL_DAMAGE",
"UNIT_DIED"
)
-- mark of Azgalor
local warnMark = mod:NewSpellAnnounce(2141211, 2)
local timerNextMark = mod:NewNextTimer(60, 2141211)
-- Rain of Fire
local specWarnFire = mod:NewSpecialWarning("Rain of Fire on you!", 2141200, 2)
local warnRoF = mod:NewSpellAnnounce(2141200, 2)
local timerRoF = mod:NewCastTimer(3, 2141200)
local timerNextRoF = mod:NewNextTimer(25, 2141200)
--Howl of Terror
local warnHowl = mod:NewSpellAnnounce(2141209, 2)
local timerHowl = mod:NewCastTimer(2, 2141209)
local timerNextHowl = mod:NewNextTimer(30, 2141209)
-- Legion Portal
local warnPortal = mod:NewAnnounce("Legion Portal spawning!", 2, 254274)
local timerNextPortal = mod:NewTimer(45, "Next Legion Portal", 2, 254274)
--Add abilities
local warnDoom = mod:NewAnnounce("Curse of Doom on %s!", 2141250)
local specWarnDoom = mod:NewSpecialWarning("Curse of Doom on you!", 2141250)
local warnShadowStorm = mod:NewAnnounce("Shade is casting Shadow Bolt Storm!", 2140494)
local warnAntiMagic = mod:NewAnnounce("Anti-Magic Shield on %s!", 2140322)
--Impending Doom
local warnImpending = mod:NewAnnounce("Impending Doom on %s!", 2141216)
local specWarnImpending = mod:NewSpecialWarning("Impending Doom on you!", 2141216)
local timerImpending = mod:NewTimer(8, "Impending Doom on %s", 2141216)
--fight
local berserkTimer = mod:NewBerserkTimer(600)
--combat start
function mod:OnCombatStart(delay)
berserkTimer:Start(-delay)
timerNextRoF:Start(20-delay)
timerNextPortal:Start(31-delay)
timerNextMark:Start(15-delay)
timerNextHowl:Start(35-delay)
self:ScheduleMethod(31-delay,"LegionPortal")
end
function mod:LegionPortal()
self:UnscheduleMethod("LegionPortal")
warnPortal:Show()
timerNextPortal:Start()
DBM.BossHealth:AddBoss(26665, L.LegionPortal)
self:ScheduleMethod(45,"LegionPortal")
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2141200,2141201,2141202,2141203) and args:IsPlayer() and DBM:AntiSpam(5, 1) then
specWarnFire:Show()
end
if args:IsSpellID(2141212) and args:IsPlayer() then
warnMark:Show()
timerNextMark:Start()
end
if args:IsSpellID(2141250,2141251,2141252,2141253) then
if args:IsPlayer() then
specWarnDoom:Show()
else
warnDoom:Show(args.destName)
end
end
if args:IsSpellID(2140322) then
warnAntiMagic:Show(args.destName)
end
if args:IsSpellID(2141216) then
if args:IsPlayer() then
specWarnImpending:Show()
else
warnImpending:Show(args.destName)
end
timerImpending:Show(args.destName)
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2141200,2141201,2141202,2141203) and args:IsPlayer() and DBM:AntiSpam(5, 1) then
specWarnFire:Show()
end
if args:IsSpellID(2141212) and args:IsPlayer() then
warnMark:Show(args.amount)
timerNextMark:Start()
end
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2141226) and DBM:AntiSpam(40,2) then
self:SetIcon(args.sourceGUID, 8)
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2141200,2141201,2141202,2141203) then
warnRoF:Show()
timerRoF:Start()
timerNextRoF:Start()
end
if args:IsSpellID(2141209) then
warnHowl:Show()
timerHowl:Start()
timerNextHowl:Start()
end
if args:IsSpellID(2140494) then
warnShadowStorm:Show()
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 26665 then
DBM.BossHealth:Clear()
end
end
+290
View File
@@ -0,0 +1,290 @@
local mod = DBM:NewMod("Chromius", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(26643)
mod:RegisterCombat("combat", 26643)
mod:RegisterEvents(
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"SPELL_AURA_APPLIED",
"SPELL_DAMAGE",
"CHAT_MSG_MONSTER_YELL",
"CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_HEALTH",
"UNIT_DIED"
)
-- Final Countdown
local specWarnFinalCountdown = mod:NewSpecialWarning("Final Countdown! The Hourglass will vibrate %s times!", 2141735)
local warnCountdown = mod:NewAnnounce("There are %s vibrations left!", 2141735)
local timerNextFinalCountdown = mod:NewTimer(60,"Next Final Countdown: (%s)", 2141735)
local timerFinalDuration = mod:NewTimer(2,"Final Countdown (%s ticks)", 2141735)
local warnFinalCDSoon = mod:NewAnnounce("Final Countdown soon!", 2141735)
local timerFinalDelay = mod:NewTimer(3, "Vibration travel time", 2141735)
-- Events (Mannoroth)
local timerNextChaosBlast = mod:NewNextTimer(20,2141800)
local timerCastChaosBlast = mod:NewTargetTimer(3.85, 2141800)
local warnChaosBlast = mod:NewTargetAnnounce(2141800)
local specWarnChaosBlast = mod:NewSpecialWarning("Chaos Blast on you!", 2141800)
local timerMannorothsFury = mod:NewNextTimer(20, 2141809)
local warnMannorothsFury = mod:NewSpellAnnounce(2141809)
--Events (Tyrande)
local warnBlackArrow = mod:NewAnnounce("Black Arrow on %s!", 2141904)
local specWarnBlackArrow = mod:NewSpecialWarning("Black Arrow on you!", 2141904)
--Events (Jaina)
local warnHolyLight = mod:NewAnnounce("%s is casting Holy Light! Interrupt it!", 2141856)
local timerInsanity = mod:NewTimer(106, "Jaina is losing her mind...", 2141884)
-- Dragon abilities
local warnArcaneBreath = mod:NewSpellAnnounce(2141705)
local timerArcaneBreath = mod:NewNextTimer(30, 2141705)
local timerCastArcaneBreath = mod:NewCastTimer(2, 2141705)
local timerBreathDuration = mod:NewTimer(3, "Arcane Breath duration", 2141705)
-- adds
local warnArcaneExplosion = mod:NewAnnounce("Infinite Time Warder is casting Arcane Explosion!", 2141758)
local timerArcaneExplosion = mod:NewCastTimer(4, 2141758)
-- Phases
local warnTransSoon = mod:NewAnnounce("Portal Event incoming in 5 percent health!", 2141724)
local timerTeleport = mod:NewTimer(5, "Teleported in", 2100249)
local warnJainaPhase = mod:NewAnnounce("Enter the portal and kill Jaina!", 2141724)
local warnGromPhase = mod:NewAnnounce("Enter the portal and kill the Infinite Subjugators!", 2141724)
local warnTyrandePhase = mod:NewAnnounce("Enter the Portal and heal the Sentinels!", 2141724)
local SentinelAnnounce = mod:NewAnnounce("There are %s Sentinels remaining!", 2140018)
-- SPELL_DAMAGE special warnings
local specWarnConsecration = mod:NewSpecialWarningMove(2141858)
local specWarnSplitSecond = mod:NewSpecialWarningMove(2141725)
-- fight
local timerCombatStart = mod:NewTimer(20, "Combat starting in", 39255)
local count
local countdown
local duration
local prewarn
local SentinelsAlive
local insanity
local phase
local JainaHP
local TyrandeHP
local ThrallHP
-- INFO ---
-- SPELL_CAST_START Arcane Breath (2141705)
function mod:OnCombatStart(delay)
duration = 2
count = 1
countdown = 1
prewarn = 0
phase = 0
SentinelsAlive = 5
JainaHP = 0
TyrandeHP = 0
ThrallHP = 0
insanity = 0
timerArcaneBreath:Start(40-delay)
timerNextFinalCountdown:Start(65-delay, count)
warnFinalCDSoon:Schedule(60-delay)
self:ScheduleMethod(65-delay,"FinalCountdown")
end
function mod:FinalCountdown()
self:UnscheduleMethod("FinalCountdown")
countdown = count - 1
specWarnFinalCountdown:Show(count)
if phase == 0 then
timerFinalDuration:Start(duration, count)
count = count + 1
duration = duration + 2.5
timerNextFinalCountdown:Start(60,count)
warnFinalCDSoon:Schedule(55)
self:ScheduleMethod(60,"FinalCountdown")
elseif phase == 1 then
timerFinalDelay:Start(3)
self:ScheduleMethod(3,"FinalDuration")
elseif phase == 2 then
timerFinalDelay:Start(3)
self:ScheduleMethod(3,"FinalDuration")
elseif phase == 3 then
timerFinalDelay:Start(3)
self:ScheduleMethod(3,"FinalDuration")
end
end
function mod:FinalDuration()
timerFinalDuration:Start(duration, count)
count = count + 1
duration = duration + 2.5
self:ScheduleMethod(57,"FinalCountdown")
timerNextFinalCountdown:Start(57,count)
warnFinalCDSoon:Schedule(52)
end
function mod:ChaosBlast()
local targetCB = mod:GetBossTarget(26688)
if targetCB == UnitName("player") then
specWarnChaosBlast:Show()
SendChatMessage("Chaos Blast on "..UnitName("PLAYER").."!", "SAY")
else
warnChaosBlast:Show(targetCB)
end
timerCastChaosBlast:Start(targetCB)
self:SetIcon(targetCB, 8, 4)
end
function mod:MannorothsFury()
self:UnscheduleMethod("MannorothsFury")
timerMannorothsFury:Start()
warnMannorothsFury:Show()
self:ScheduleMethod(20,"MannorothsFury")
end
function mod:StopTimers()
timerArcaneBreath:Stop()
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2141904) then
if args:IsPlayer() then
specWarnBlackArrow:Show()
else
warnBlackArrow:Show(args.destName)
end
end
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2141858,2141859,2141860,2141861) and args:IsPlayer() and DBM:AntiSpam(5,1) then
specWarnConsecration:Show()
end
if args:IsSpellID(2141725,2141726,2141727,2141728) and args:IsPlayer() and DBM:AntiSpam(5,2) then
specWarnSplitSecond:Show()
end
if args:IsSpellID(2141736,2141737,2141738,2141739) and DBM:AntiSpam(1.8,6) then
if countdown >= 1 then
warnCountdown:Show(countdown)
countdown = countdown - 1
end
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2141705) then
warnArcaneBreath:Show()
timerArcaneBreath:Start()
timerCastArcaneBreath:Start()
timerBreathDuration:Schedule(2)
end
if args:IsSpellID(2141758) then
warnArcaneExplosion:Show()
timerArcaneExplosion:Start()
self:SetIcon(args.sourceGUID, 8)
end
if args:IsSpellID(2141800) then
self:ScheduleMethod(0.15, "ChaosBlast")
timerNextChaosBlast:Start()
end
if args:IsSpellID(2141856) then
warnHolyLight:Show(args.sourceName)
end
if args:IsSpellID(2141868,2141869,2140134,2140135) and phase == 1 and insanity == 1 and args.sourceName == "Lady Jaina Proudmoore" then
insanity = 0
timerInsanity:Stop()
end
end
function mod:SPELL_CAST_SUCCESS(args)
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.ChromiusRP or msg:find(L.ChromiusRP) then
timerCombatStart:Start()
elseif msg == L.ChromiusRP2 or msg:find(L.ChromiusRP2) then
timerCombatStart:Start()
elseif msg == L.JainaPhaseYell or msg:find(L.JainaPhaseYell) then -- Jaina Phase start
warnJainaPhase:Show()
timerInsanity:Start()
insanity = 1
self:ScheduleMethod(0,"StopTimers")
DBM.BossHealth:Clear()
phase = 1
elseif msg == L.GromPhaseYell or msg:find(L.GromPhaseYell) then -- Grom Phase start
warnGromPhase:Show()
self:ScheduleMethod(0,"StopTimers")
timerNextChaosBlast:Start(20)
timerMannorothsFury:Start(25)
self:ScheduleMethod(25,"MannorothsFury")
DBM.BossHealth:Clear()
phase = 2
elseif msg == L.TyrandePhaseYell or msg:find(L.TyrandePhaseYell) then -- Tyrande Phase start
warnTyrandePhase:Show()
self:ScheduleMethod(0,"StopTimers")
DBM.BossHealth:Clear()
phase = 3
end
end
function mod:UNIT_DIED(args)
if args.destName =="Infinite Manipulator" then
timerTeleport:Start(5)
timerArcaneBreath:Start(13)
self:ScheduleMethod(7,"AddBoss")
JainaHP = 1
phase = 0
end
if args.destName =="Mannoroth" then
timerTeleport:Start(5)
timerArcaneBreath:Start(13)
self:UnscheduleMethod("MannorothsFury")
timerNextChaosBlast:Stop()
timerMannorothsFury:Stop()
self:ScheduleMethod(7,"AddBoss")
ThrallHP = 1
phase = 0
end
if args.destName =="Darnassus Sentinel" then
SentinelsAlive = SentinelsAlive - 1
if DBM:AntiSpam(1, 2) then
SentinelAnnounce:Show(SentinelsAlive)
end
if SentinelsAlive == 0 then
timerTeleport:Start(5)
timerArcaneBreath:Start(13)
self:ScheduleMethod(7,"AddBoss")
TyrandeHP = 1
phase = 0
end
end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 26643 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.80 and prewarn == 0 and DBM:AntiSpam(5,3) then
prewarn = 1
warnTransSoon:Show()
elseif self:GetUnitCreatureId(uId) == 26643 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.55 and prewarn == 1 and DBM:AntiSpam(5,4) then
prewarn = 2
warnTransSoon:Show()
elseif self:GetUnitCreatureId(uId) == 26643 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.30 and prewarn == 2 and DBM:AntiSpam(5,5) then
prewarn = 3
warnTransSoon:Show()
end
end
function mod:AddBoss()
if JainaHP == 1 then
DBM.BossHealth:AddBoss(17772,"Lady Jaina Proudmoore")
elseif TyrandeHP == 1 then
DBM.BossHealth:AddBoss(17948,"Tyrande Whisperwind")
elseif ThrallHP == 1 then
DBM.BossHealth:AddBoss(17852,"Thrall")
end
end
+23
View File
@@ -0,0 +1,23 @@
## Interface: 30300
## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Mount Hyjal|r
## LoadOnDemand: 1
## RequiredDeps: DBM-Core, DBM-BurningCrusade
## SavedVariablesPerCharacter: DBMHyjal_SavedVars, DBMHyjal_SavedStats
## X-DBM-Mod: 1
## X-DBM-Mod-Category: BC
## X-DBM-Mod-Name: Mount Hyjal
## X-DBM-Tab-Sort: 306
## X-DBM-Mod-LoadZone: Hyjal Summit
localization.en.lua
localization.de.lua
localization.cn.lua
localization.tw.lua
localization.ru.lua
localization.es.lua
localization.kr.lua
RageWinterchill.lua
Anetheron.lua
Kazrogal.lua
Azgalor.lua
Chromius.lua
Archimonde.lua
+121
View File
@@ -0,0 +1,121 @@
local mod = DBM:NewMod("Kazrogal", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(17888)
mod:RegisterCombat("combat", 17888)
mod:RegisterEvents(
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED",
"CHAT_MSG_RAID_BOSS_EMOTE",
"CHAT_MSG_MONSTER_YELL",
"SPELL_MISSED"
)
-- Pillar of Suffering (2141019) 200% increased Swing timer + can't dodge
-- Pillar of Cataclysm (2141018) Fire splash damage
-- 1st Pillar (10 seconds)
-- Mark of Kaz
local warnMark = mod:NewSpellAnnounce(2141001, 3)
local timerMark = mod:NewNextTimer(55, 2141000)
-- Warstomp
local warnStomp = mod:NewSpellAnnounce(2141009, 2)
local timerStomp = mod:NewNextTimer(55, 2141009)
-- Pillars
local timerPillar1 = mod:NewTimer(10, "First Pillar", 10408)
local timerPSuffering = mod:NewTimer(40, "Pillar of Suffering duration", 2141030)
local warnPSuffering = mod:NewAnnounce("The Pillar of Suffering has hit the ground", 2, 2141030)
local timerNextPSuffering = mod:NewNextTimer(10,2141030)
local timerPCataclysm = mod:NewTimer(40, "Pillar of Cataclysm duration", 2141026)
local warnPCataclysm = mod:NewAnnounce("The Pillar of Cataclysm has hit the ground", 2, 2141026)
local timerNextPCataclysm = mod:NewNextTimer(10, 2141026)
local pillar
-- Physical attacks
local timerNextMalevolent = mod:NewNextTimer(51, 2141008)
local timerMalevolentSwing = mod:NewCastTimer(4, 2141008)
local warnMalevolent = mod:NewSpellAnnounce(2141008)
-- Scars & Debuffs
local warnCataclysmic = mod:NewAnnounce("You have %s stacks of Cataclysmic Scar", 2141040)
local warnTormenting = mod:NewAnnounce("You have %s stacks of Tormenting Scar", 2141041)
-- fight
local warnChallenged = mod:NewAnnounce("Kaz'rogal fixates on %s!",2141039)
local warnManaTotem = mod:NewAnnounce("Thrall is summoning a Mana Stream Totem! Click it to replenish your mana!", 2140261)
function mod:OnCombatStart(delay)
pillar = 0
timerPillar1:Start(-delay)
timerStomp:Start(-delay)
timerMark:Start(14-delay)
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2141001) and args:IsPlayer() and DBM:AntiSpam(5,1) then
timerMark:Start()
warnMark:Show(args.amount)
end
if args:IsSpellID(2141039) then
warnChallenged:Show(args.destName)
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2141040) and args:IsPlayer() and args.amount >= 4 and DBM:AntiSpam(3,2) then
warnCataclysmic:Show(args.amount)
end
if args:IsSpellID(2141041) and args:IsPlayer() and args.amount >= 4 and DBM:AntiSpam(3,3) then
warnTormenting:Show(args.amount)
end
end
function mod:SPELL_MISSED(args)
if args:IsSpellID(2141009) and DBM:AntiSpam(1,1) then
if pillar == 1 then
timerNextPCataclysm:Start()
pillar = 2
elseif pillar == 2 then
timerNextPSuffering:Start()
pillar = 1
end
timerStomp:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2141027,2141028,2141029,2141030) and DBM:AntiSpam(40,3) then
warnPSuffering:Show()
timerPSuffering:Start()
if pillar == 0 then
pillar = 1
end
elseif args:IsSpellID(2141023,2141024,2141025,2141026) and DBM:AntiSpam(40,4) then
warnPCataclysm:Show()
timerPCataclysm:Start()
if pillar == 0 then
pillar = 2
end
end
if args:IsSpellID(2141008) and DBM:AntiSpam(6, 5) then
timerNextMalevolent:Start()
timerMalevolentSwing:Start()
warnMalevolent:Show()
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == "I am summoning a Mana Stream Totem near us. Use it to replenish!" then
warnManaTotem:Show()
end
end
+276
View File
@@ -0,0 +1,276 @@
local mod = DBM:NewMod("RageWinterchill", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(17767)
mod:SetUsedIcons(8)
mod:RegisterCombat("combat", 17767)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_DAMAGE",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"SPELL_MISSED",
"CHAT_MSG_RAID_BOSS_EMOTE",
"CHAT_MSG_MONSTER_YELL",
"UNIT_HEALTH",
"UNIT_DIED"
)
--DnD
local warnDnDSoon = mod:NewSoonAnnounce(2140600, 2)
local timerDnDCD = mod:NewNextTimer(30, 2140601)
local timerDnDextra = mod:NewNextTimer(10, 2140601)
local specWarnDnD = mod:NewSpecialWarningMove(2140600, 2)
-- Frozen Solid
local specWarnFrozen = mod:NewSpecialWarningYou(2140617, 2)
local timerFrozen = mod:NewTimer(10,"Frozen Solid", 2140617)
local sayFrozenFade = mod:NewFadesYell(2140617)
-- Lich Slap
local timerNextSlap = mod:NewNextTimer(30, 2140645)
local warnLichSlap = mod:NewTargetAnnounce(2140645)
-- Winter's Touch
local warnWT = mod:NewTargetAnnounce(2140605, 2)
local specWarnWT = mod:NewSpecialWarningYou(2140605, 2)
local timerNextWT = mod:NewCDTimer(15, 2140605)
local timerWT = mod:NewCastTimer(1.3, 2140605)
-- Transitions
local warnTransSoon = mod:NewSpecialWarning("Intermission Phase Soon", 1, 500933)
local warnTransmission = mod:NewAnnounce("Transmission: Kill the Phylacteries!", 2, 500933)
-- Ice Barrage
local warnIceBarrage = mod:NewSpellAnnounce(2140624, 2)
local timerIceBarrage = mod:NewCastTimer(8, 2140624)
local timerNextBarrage = mod:NewNextTimer(45, 2140624)
--Chilled to the Bone
local SpecWarnChilled = mod:NewSpecialWarning("You have %s stacks of Chilled to the Bone!", 2140612)
--Frost Nova
local timerNextNova = mod:NewNextTimer(30, 2140620)
-- Chains of Winterchill
local warnChains = mod:NewAnnounce("%s is chained with >%s<!", 2140654)
local timerChains = mod:NewNextTimer(15, 2140654)
--fight
local prewarn
local phylDeath
local phylRemaining
local phylAnnounce =mod:NewAnnounce("There are %s Phylacteries remaining", 2)
local phase
local lastDnD
local remainingDnD
local lastWintersTouch
local remaininTouch
local lastNova
local remainingNova
local lastSlap
local remainingSlap
local berserkTimer = mod:NewBerserkTimer(600)
function mod:OnCombatStart(delay)
prewarn = 1
phylDeath = 0
phase = 1
lastDnD = nil
remainingDnD = nil
lastWintersTouch = nil
remaininTouch = nil
lastNova = nil
remainingNova = nil
lastSlap = nil
remainingSlap = nil
berserkTimer:Start(-delay)
self:ScheduleMethod(0-delay,"DnD")
timerNextWT:Start(10-delay)
timerNextBarrage:Start(45-delay)
timerNextNova:Start(37-delay)
timerNextSlap:Start(10-delay)
timerChains:Start(15-delay)
DBM.BossHealth:AddBoss(17772, L.Jaina)
end
function mod:BossPhase()
self:ScheduleMethod(10,"DnD")
timerNextSlap:Start(10)
timerDnDextra:Start(10)
timerNextWT:Start(20)
timerNextBarrage:Start(25)
timerNextNova:Start(5)
phase = 1
end
function mod:Intermission()
warnTransmission:Show()
self:ScheduleMethod(0,"CancelTimers")
phase = 2
phylDeath = 0
end
function mod:CancelTimers()
timerDnDCD:Stop()
warnDnDSoon:Cancel()
self:UnscheduleMethod("DnD")
timerIceBarrage:Stop()
timerNextBarrage:Stop()
timerNextWT:Stop()
timerNextSlap:Stop()
timerNextNova:Stop()
end
function mod:WTouch()
local targetWT = mod:GetBossTarget(17767)
if targetWT == UnitName("player") then
specWarnWT:Show()
SendChatMessage("Winter's Touch on "..UnitName("PLAYER").."!", "SAY")
else
warnWT:Show(targetWT)
end
timerWT:Start(targetWT)
self:SetIcon(targetWT, 8, 2)
end
function mod:DnD()
self:UnscheduleMethod("DnD")
lastDnD = GetTime()
timerDnDCD:Start(30)
warnDnDSoon:Schedule(25)
self:ScheduleMethod(30,"DnD")
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2140600,2140601,2140602,2140603) then
if args:IsPlayer() and DBM:AntiSpam(8,1) then
specWarnDnD:Show()
end
end
if args:IsSpellID(2140620,2140621,2140622,2140623) and DBM:AntiSpam(5,6) then
lastNova = GetTime()
timerNextNova:Start(65)
end
end
function mod:SPELL_MISSED(args)
if args:IsSpellID(2140620,2140621,2140622,2140623) and DBM:AntiSpam(5,5) then
lastNova = GetTime()
timerNextNova:Start(65)
end
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2140617) and args:IsPlayer() then
specWarnFrozen:Show()
SendChatMessage(L.SayFrozenFade, "SAY")
sayFrozenFade:Countdown(10,3)
timerFrozen:Start()
end
if args:IsSpellID(2140654) and args:IsPlayer() then
warnChains:show(args.sourceName, args.destName)
-- SendChatMessage("sourceName is "..args.sourceName.."", "SAY")
-- SendChatMessage("destName is "..args.destName.."", "SAY")
-- if args.destName == UnitName("Player") then
-- specWarnChains:Show(args.destName)
-- elseif args.sourceName == UnitName("Player") then
-- specWarnChains:show(args.sourceName)
-- end
end
end
-- SendChatMessage(""..UnitName("PLAYER").." is chained to "..args.destName.."!", "YELL")
-- SendChatMessage(""..args.destName.." is chained to "..UnitName("PLAYER").."!", "YELL")
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2140612) and args:IsPlayer() and args.amount > 14 and DBM:AntiSpam(5,4) then
SpecWarnChilled:Show(args.amount)
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2140605) then
self:ScheduleMethod(0.2,"WTouch")
lastWintersTouch = GetTime()
timerNextWT:Start()
end
if args:IsSpellID(2140624) then
warnIceBarrage:Show()
timerIceBarrage:Start()
timerNextBarrage:Start(70)
remaininTouch = (15 - (GetTime() - lastWintersTouch))
remainingDnD = (30 - (GetTime() - lastDnD))
remainingNova = (30 - (GetTime() - lastNova))
remainingSlap = (30 - (GetTime() - lastSlap))
timerDnDCD:Stop()
warnDnDSoon:Cancel()
warnDnDSoon:Schedule(remainingDnD + 5)
timerDnDCD:Start(remainingDnD + 10)
self:UnscheduleMethod("DnD")
self:ScheduleMethod(remainingDnD + 10,"DnD")
timerNextWT:Stop()
timerNextWT:Start(remaininTouch + 10)
timerNextNova:Stop()
timerNextNova:Start(remainingNova + 10)
timerNextSlap:Stop()
timerNextSlap:Start(remainingSlap + 10)
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2140645) then
timerNextSlap:Start(30)
lastSlap = GetTime()
warnLichSlap:Show(args.destName)
end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.TransitionYell or msg:find(L.TransitionYell) then
self:ScheduleMethod(0,"Intermission")
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 26634 then
phylDeath = phylDeath + 1
phylRemaining = (6 - phylDeath)
phylAnnounce:Show(phylRemaining)
end
if cid == 26634 and phylRemaining == 0 then
self:ScheduleMethod(1,"BossPhase")
end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 17767 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.70 and prewarn == 1 and DBM:AntiSpam(5,2) then
prewarn = 2
warnTransSoon:Show()
elseif self:GetUnitCreatureId(uId) == 17767 and (UnitHealth(uId) / UnitHealthMax(uId)) <= 0.36 and prewarn == 2 and DBM:AntiSpam(5,3) then
prewarn = 3
warnTransSoon:Show()
end
end
function mod:OnCombatEnd()
DBM.BossHealth:RemoveBoss(17772)
self:UnscheduleMethod("BossPhase")
self:UnscheduleMethod("Intermission")
end
--function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
-- if msg == L.Transition1 or msg:find(L.Transition1) and phase == 1 then
-- self:ScheduleMethod(0,"Intermission")
-- phase = 2
-- elseif msg == L.Transition2 or msg:find(L.Transition2) and phase == 2 then
-- self:ScheduleMethod(0,"BossPhase")
-- phase = 1
-- end
--end
--function mod:CHAT_MSG_MONSTER_EMOTE(msg)
-- if msg == L.Transition1 or msg:find(L.Transition1) and phase == 1 then
-- self:ScheduleMethod(0,"Intermission")
-- phase = 2
-- elseif msg == L.Transition2 or msg:find(L.Transition2) and phase == 2 then
-- self:ScheduleMethod(0,"BossPhase")
-- phase = 1
-- end
--end
+98
View File
@@ -0,0 +1,98 @@
if GetLocale() ~= "zhCN" then return end
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("Rage")
L:SetGeneralLocalization{
name = "雷基·冬寒"
}
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization{
name = "安纳塞隆"
}
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization{
name = "卡兹洛加"
}
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization{
name = "阿兹加洛"
}
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization{
name = "阿克蒙德"
}
----------------
-- WaveTimers --
----------------
L = DBM:GetModLocalization("HyjalWaveTimers")
L:SetGeneralLocalization{
name = "普通怪物"
}
L:SetWarningLocalization{
WarnWave = "%s",
WarnWaveSoon= "下一波敌人即将到来"
}
L:SetTimerLocalization{
TimerWave = "Next wave"--Translate
}
L:SetOptionLocalization{
WarnWave = "Warn when a new wave is incoming",--Translate
WarnWaveSoon = "Warn when a new wave is incoming soon",--Translate
DetailedWave = "Detailed warning when a new wave is incoming (which mobs)",--Translate
TimerWave = "Show a timer for next wave"--Translate
}
L:SetMiscLocalization{
HyjalZoneName = "海加尔峰",
Thrall = "萨尔",
Jaina = "吉安娜·普罗德摩尔",
RageWinterchill = "雷基·冬寒",
Anetheron = "安纳塞隆",
Kazrogal = "卡兹洛加",
Azgalor = "阿兹加洛",
WarnWave_0 = "第%s/8波",
WarnWave_1 = "第%s/8波 - %s%s",
WarnWave_2 = "第%s/8波 - %s%s 和 %s%s",
WarnWave_3 = "第%s/8波 - %s%s, %s%s 和 %s%s",
WarnWave_4 = "第%s/8波 - %s%s, %s%s, %s%s 和 %s%s",
WarnWave_5 = "第%s/8波 - %s%s, %s%s, %s%s, %s%s 和 %s%s",
RageGossip = "我和我的伙伴们将与您并肩作战,普罗德摩尔女士。",
AnetheronGossip = "我们已经准备好对付阿克蒙德的任何爪牙了,普罗德摩尔女士。",
KazrogalGossip = "我与你并肩作战,萨尔。",
AzgalorGossip = "我们无所畏惧。",
Ghoul = "食尸鬼",
Abomination = "憎恶",
Necromancer = "亡灵巫师",
Banshee = "女妖",
Fiend = "地穴恶魔",
Gargoyle = "石像鬼",
Wyrm = "冰霜巨龙",
Stalker = "恶魔猎犬",
Infernal = "地狱火"
}
+96
View File
@@ -0,0 +1,96 @@
if GetLocale() ~= "deDE" then return end
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("Rage")
L:SetGeneralLocalization{
name = "Furor Winterfrost"
}
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization{
name = "Anetheron"
}
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization{
name = "Kaz'rogal"
}
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization{
name = "Azgalor"
}
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization{
name = "Archimonde"
}
----------------
-- WaveTimers --
----------------
L = DBM:GetModLocalization("HyjalWaveTimers")
L:SetGeneralLocalization{
name = "Wellen (HdZ 3)"
}
L:SetWarningLocalization{
WarnWave = "%s",
}
L:SetTimerLocalization{
TimerWave = "Nächste Welle"
}
L:SetOptionLocalization{
WarnWave = "Warne, wenn eine neue Welle kommt",
DetailedWave = "Detaillierte Warnung, wenn eine neue Welle kommt (welche Mobs)",
TimerWave = "Zeige Zeit bis nächste Welle"
}
L:SetMiscLocalization{
HyjalZoneName = "Hyjalgipfel",
Thrall = "Thrall",
Jaina = "Lady Jaina Prachtmeer",
GeneralBoss = "Boss kommt",
RageWinterchill = "Furor Winterfrost kommt",
Anetheron = "Anetheron kommt",
Kazrogal = "Kaz'rogal kommt",
Azgalor = "Azgalor kommt",
WarnWave_0 = "Welle %s/8",
WarnWave_1 = "Welle %s/8 - %s %s",
WarnWave_2 = "Welle %s/8 - %s %s und %s %s",
WarnWave_3 = "Welle %s/8 - %s %s, %s %s und %s %s",
WarnWave_4 = "Welle %s/8 - %s %s, %s %s, %s %s und %s %s",
WarnWave_5 = "Welle %s/8 - %s %s, %s %s, %s %s, %s %s und %s %s",
RageGossip = "Meine Gefährten und ich werden Euch zur Seite stehen, Lady Prachtmeer.",
AnetheronGossip = "Was auch immer Archimonde gegen uns ins Feld schicken mag, wir sind bereit, Lady Prachtmeer.",
KazrogalGossip = "Ich werde Euch zur Seite stehen, Thrall!",
AzgalorGossip = "Wir haben nichts zu befürchten.",
Ghoul = "Ghule",
Abomination = "Monstrositäten",
Necromancer = "Nekromanten",
Banshee = "Banshees",
Fiend = "Gruftbestien",
Gargoyle = "Gargoyles",
Wyrm = "Frostwyrm",
Stalker = "Teufelspirscher",
Infernal = "Höllenbestien"
}
+153
View File
@@ -0,0 +1,153 @@
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("RageWinterchill")
L:SetGeneralLocalization({
name = "Rage Winterchill"
})
L:SetWarningLocalization({
})
L:SetTimerLocalization({
})
L:SetOptionLocalization({
})
L:SetMiscLocalization({
Transition1 = "%s calls for assistance!",
Transition2 = "%s shatters his Ice Bullwark, continuing his assault!",
TransitionYell = "It will be much colder in your grave.",
SayFrozenFade = ""..UnitName("PLAYER").."is frozen solid for 10 seconds!",
Jaina = "Lady Jaina Proudmoore"
})
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization({
name = "Anetheron"
})
L:SetWarningLocalization({
})
L:SetTimerLocalization({
})
L:SetOptionLocalization({
})
L:SetMiscLocalization({
RingofFrost = "I am summoning a ring of frost heroes! Quickly, move our enemies into my trap!",
Nightmare = "Anetheron sends %s into a nightmare!",
Infernal1 = "Let fire rain from above!",
Infernal2 = "Earth and sky shall burn!",
Jaina = "Lady Jaina Proudmoore"
})
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization({
name = "Kaz'rogal"
})
L:SetWarningLocalization({
})
L:SetTimerLocalization({
})
L:SetOptionLocalization({
})
L:SetMiscLocalization({
})
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization({
name = "Azgalor"
})
L:SetWarningLocalization({
})
L:SetTimerLocalization({
})
L:SetOptionLocalization({
})
L:SetMiscLocalization({
LegionPortal = "Legion Portal"
})
------------------
-- Chromius --
------------------
L = DBM:GetModLocalization("Chromius")
L:SetGeneralLocalization({
name = "Chromius"
})
L:SetWarningLocalization({
})
L:SetTimerLocalization({
})
L:SetOptionLocalization({
})
L:SetMiscLocalization({
ChromiusRP ="You again? I should have known... ",
ChromiusRP2 ="You again? I should have known... ",
JainaPhaseYell ="All this fighting. All this talking. But my words only fall on deaf ears. Maybe a certain mage might be willing to listen...",
JainaPhaseEnd ="Oh Jaina, you would have been happier this way. For a time...",
GromPhaseYell ="Don't listen to her! You must ensure Thrall survives, and Grom must meet his fate",
MannorothYell ="His blood is mine! As is your whole miss misbegotten race!",
GromPhaseEnd ="You should have saved the other one...",
TyrandePhaseYell ="What? She can see the future? I'll take a guess and say save Tyrande, whatever it takes",
TyrandePhaseEnd ="That's sad. They didn't make it. Neither will you if you keep standing in my way! "
})
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization({
name = "Archimonde"
})
L:SetWarningLocalization({
})
L:SetTimerLocalization({
})
L:SetOptionLocalization({
})
L:SetMiscLocalization({
FightStartYell ="All of your efforts have been in vain, for the draining of the World Tree has already begun! Soon the heart of your world will beat no more!",
FirePhase ="Your resistance is insignificant.",
WardofWinter ="I going to place a ward on %s! Use it to quench the fire!",
LightningCapTotem ="I am summoning a Lightning Capture Totem near us! Lure the Ball Lightnings near it!",
LightofElune ="Great Mother, your daugther requires aid. Grant %s your blessed light and guide them through the darkness of the endless night!",
CalloftheVoid ="At last it is here! Mourn and lament the passing of all you have ever known, and all that would have been! Hach min corai!"
})
+96
View File
@@ -0,0 +1,96 @@
if GetLocale() ~= "esES" and GetLocale() ~= "esMX" then return end
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("Rage")
L:SetGeneralLocalization{
name = "Ira Fríoinvierno"
}
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization{
name = "Anetheron"
}
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization{
name = "Kaz'rogal"
}
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization{
name = "Azgalor"
}
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization{
name = "Archimonde"
}
----------------
-- WaveTimers --
----------------
L = DBM:GetModLocalization("HyjalWaveTimers")
L:SetGeneralLocalization{
name = "Oleadas"
}
L:SetWarningLocalization{
WarnWave = "%s",
}
L:SetTimerLocalization{
TimerWave = "Siguiente oleada"
}
L:SetOptionLocalization{
WarnWave = "Mostrar aviso cuando se aproxime una oleada",
DetailedWave = "Mostrar aviso detallado con los tipos y número de enemigos cuando se aproxime una oleada",
TimerWave = "Mostrar temporizador para la siguiente oleada"
}
L:SetMiscLocalization{
HyjalZoneName = "La Cima Hyjal",
Thrall = "Thrall",
Jaina = "Lady Jaina Valiente",
GeneralBoss = "Se aproxima un jefe",
RageWinterchill = "Se aproxima Ira Fríoinvierno",
Anetheron = "Se aproxima Anetheron",
Kazrogal = "Se aproxima Kazrogal",
Azgalor = "Se aproxima Azgalor",
WarnWave_0 = "Oleada %s/8",
WarnWave_1 = "Oleada %s/8 - %s %s",
WarnWave_2 = "Oleada %s/8 - %s %s y %s %s",
WarnWave_3 = "Oleada %s/8 - %s %s, %s %s y %s %s",
WarnWave_4 = "Oleada %s/8 - %s %s, %s %s, %s %s y %s %s",
WarnWave_5 = "Oleada %s/8 - %s %s, %s %s, %s %s, %s %s y %s %s",
RageGossip = "Mis compañeros y yo estamos contigo, Lady Valiente.",
AnetheronGossip = "Estamos listos para cualquier cosa que Archimonde nos mande, Lady Valiente.",
KazrogalGossip = "Estoy contigo, Thrall.",
AzgalorGossip = "No tenemos nada que temer.",
Ghoul = "Necrófagos",
Abomination = "Abominaciones",
Necromancer = "Nigromantes",
Banshee = "Almas en pena",
Fiend = "Malignos de cripta",
Gargoyle = "Gárgolas",
Wyrm = "Vermis de escarcha",
Stalker = "Acechadores viles",
Infernal = "Infernales"
}
+100
View File
@@ -0,0 +1,100 @@
if GetLocale() ~= "koKR" then return end
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("Rage")
L:SetGeneralLocalization{
name = "격노한 윈터칠"
}
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization{
name = "아네테론"
}
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization{
name = "카즈로갈"
}
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization{
name = "아즈갈로"
}
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization{
name = "아키몬드"
}
----------------
-- WaveTimers --
----------------
L = DBM:GetModLocalization("HyjalWaveTimers")
L:SetGeneralLocalization{
name = "하이잘: 일반구간"
}
L:SetWarningLocalization{
WarnWave = "%s",
}
L:SetTimerLocalization{
TimerWave = "다음 공격"
}
L:SetOptionLocalization{
WarnWave = "다음 공격 알림 보기",
DetailedWave = "다음 공격 알림시 적 조합까지 자세히 보기",
TimerWave = "다음 공격 바 보기"
}
L:SetMiscLocalization{
HyjalZoneName = "하이잘 정상",
Thrall = "스랄",
Jaina = "제이나 프라우드무어",
GeneralBoss = "곧 우두머리",
RageWinterchill = "곧 격노한 윈터칠",
Anetheron = "곧 아네테론",
Kazrogal = "곧 카즈로갈",
Azgalor = "곧 아즈갈로",
WarnWave_0 = "공격 %s/8",
WarnWave_1 = "공격 %s/8 - %s %s",
WarnWave_2 = "공격 %s/8 - %s %s, %s %s",
WarnWave_3 = "공격 %s/8 - %s %s, %s %s, %s %s",
WarnWave_4 = "공격 %s/8 - %s %s, %s %s, %s %s, %s %s",
WarnWave_5 = "공격 %s/8 - %s %s, %s %s, %s %s, %s %s, %s %s",
RageGossip = "제 동료와 저는 프라우드무어 님, 당신과 함께하겠습니다.",
AnetheronGossip = "아키몬드가 어떤 군대를 보내던 우리는 준비가 되어 있습니다, 프라우드무어 님.",
KazrogalGossip = "당신과 함께하겠습니다, 대족장님.",
AzgalorGossip = "두려워할 것은 아무것도 없습니다.",
Ghoul = "구울",
Abomination = "누더기골렘",
Necromancer = "강령술사",
Banshee = "밴시",
Fiend = "지하마귀",
Gargoyle = "가고일",
Wyrm = "서리고룡",
Stalker = "지옥사냥개",
Infernal = "지옥불정령"
}
+98
View File
@@ -0,0 +1,98 @@
if GetLocale() ~= "ruRU" then return end
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("Rage")
L:SetGeneralLocalization{
name = "Лютый Хлад"
}
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization{
name = "Анетерон"
}
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization{
name = "Каз'рогал"
}
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization{
name = "Азгалор"
}
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization{
name = "Архимонд"
}
----------------
-- WaveTimers --
----------------
L = DBM:GetModLocalization("HyjalWaveTimers")
L:SetGeneralLocalization{
name = "Треш-мобы"
}
L:SetWarningLocalization{
WarnWave = "%s",
WarnWaveSoon= "Скоро следующая волна"
}
L:SetTimerLocalization{
TimerWave = "Следующая волна"
}
L:SetOptionLocalization{
WarnWave = "Warn when a new wave is incoming",--Translate
WarnWaveSoon = "Warn when a new wave is incoming soon",--Translate
DetailedWave = "Detailed warning when a new wave is incoming (which mobs)",--Translate
TimerWave = "Show a timer for next wave"--Translate
}
L:SetMiscLocalization{
HyjalZoneName = "Вершина Хиджала",
Thrall = "Тралл",
Jaina = "Леди Джайна Праудмур",
RageWinterchill = "Лютый Хлад",
Anetheron = "Анетерон",
Kazrogal = "Каз'рогал",
Azgalor = "Азгалор",
WarnWave_0 = "Волна %s/8",
WarnWave_1 = "Волна %s/8 - %s %s",
WarnWave_2 = "Волна %s/8 - %s %s и %s %s",
WarnWave_3 = "Волна %s/8 - %s %s, %s %s и %s %s",
WarnWave_4 = "Волна %s/8 - %s %s, %s %s, %s %s и %s %s",
WarnWave_5 = "Волна %s/8 - %s %s, %s %s, %s %s, %s %s и %s %s",
RageGossip = "Мои спутники и я – с вами, леди Праудмур.",
AnetheronGossip = "Мы готовы встретить любого, кого пошлет Архимонд.",
KazrogalGossip = "Я с тобой, Тралл.",
AzgalorGossip = "Нам нечего бояться.",
Ghoul = "Вурдалака",
Abomination = "Поганища",
Necromancer = "Некроманта",
Banshee = "Банши",
Fiend = "Некрорахнида",
Gargoyle = "Горгульи",
Wyrm = "Ледяной змей",
Stalker = "Ловчих Скверны",
Infernal = "Инфернала"
}
+97
View File
@@ -0,0 +1,97 @@
if GetLocale() ~= "zhTW" then return end
local L
------------------------
-- Rage Winterchill --
------------------------
L = DBM:GetModLocalization("Rage")
L:SetGeneralLocalization{
name = "瑞齊·凜冬"
}
-----------------
-- Anetheron --
-----------------
L = DBM:GetModLocalization("Anetheron")
L:SetGeneralLocalization{
name = "安納塞隆"
}
----------------
-- Kazrogal --
----------------
L = DBM:GetModLocalization("Kazrogal")
L:SetGeneralLocalization{
name = "卡茲洛加"
}
---------------
-- Azgalor --
---------------
L = DBM:GetModLocalization("Azgalor")
L:SetGeneralLocalization{
name = "亞茲加洛"
}
------------------
-- Archimonde --
------------------
L = DBM:GetModLocalization("Archimonde")
L:SetGeneralLocalization{
name = "阿克蒙德"
}
----------------
-- WaveTimers --
----------------
L = DBM:GetModLocalization("HyjalWaveTimers")
L:SetGeneralLocalization{
name = "小怪模組"
}
L:SetWarningLocalization{
WarnWave = "%s"
}
L:SetTimerLocalization{
TimerWave = "下一波"
}
L:SetOptionLocalization{
WarnWave = "當新一波進攻到來時顯示警告",
DetailedWave = "當新一波進攻到來時顯示詳細警告(何種怪)",
TimerWave = "為下一波進攻顯示計時器"
}
L:SetMiscLocalization{
HyjalZoneName = "海加爾山",
Thrall = "索爾",
Jaina = "珍娜·普勞德摩爾女士",
GeneralBoss = "首領到來",
RageWinterchill = "瑞齊·凜冬到來",
Anetheron = "安納塞隆到來",
Kazrogal = "卡茲洛加到來",
Azgalor = "亞茲加洛到來",
WarnWave_0 = "第%s/8波",
WarnWave_1 = "第%s/8波 - %s %s",
WarnWave_2 = "第%s/8波 - %s %s 和 %s %s",
WarnWave_3 = "第%s/8波 - %s %s, %s %s 和 %s %s",
WarnWave_4 = "第%s/8波 - %s %s, %s %s, %s %s 和 %s %s",
WarnWave_5 = "第%s/8波 - %s %s, %s %s, %s %s, %s %s 和 %s %s",
RageGossip = "我和我的同伴都與你同在,普勞德摩爾女士。",
AnetheronGossip = "不管阿克蒙德要派誰來對付我們,我們都已經準備好了,普勞德摩爾女士。",
KazrogalGossip = "我與你同在,索爾。",
AzgalorGossip = "我們無所畏懼。",
Ghoul = "食屍鬼",
Abomination = "憎惡",
Necromancer = "死靈法師",
Banshee = "女妖",
Fiend = "地穴惡魔",
Gargoyle = "石像鬼",
Wyrm = "冰龍",
Stalker = "惡魔捕獵者",
Infernal = "巨型地獄火"
}
+33 -20
View File
@@ -8,20 +8,21 @@ mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_CAST_START", "SPELL_CAST_START",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"UNIT_DIED"
) )
-----LOCUST SWARM----- -----LOCUST SWARM-----
local prewarnLocust = mod:NewSoonAnnounce(28785, 2) local prewarnLocust = mod:NewSoonAnnounce(2123004, 2)
local warnLocust = mod:NewCastAnnounce(28785, 3) local warnLocust = mod:NewCastAnnounce(2123004, 3)
local timerLocust = mod:NewNextTimer(90, 28785) local timerLocust = mod:NewNextTimer(90, 2123004)
local specWarnLocust = mod:NewSpecialWarningSpell(28785) local specWarnLocust = mod:NewSpecialWarningSpell(2123004)
local timerLocustRemaining = mod:NewBuffActiveTimer(16, 28785) local timerLocustRemaining = mod:NewBuffActiveTimer(17, 2123004)
-----DARK GAZE----- -----DARK GAZE-----
local specWarnDarkGaze = mod:NewSpecialWarningYou(1003011) local specWarnDarkGaze = mod:NewSpecialWarningYou(1003011)
-----IMPALE------ -----IMPALE------
local timerImpale = mod:NewCDTimer(10, 28783) local timerImpale = mod:NewCDTimer(15, 2123001)
local warnImpale = mod:NewTargetAnnounce(28783, 2) local warnImpale = mod:NewTargetAnnounce(2123001, 2)
-----MISC----- -----MISC-----
local berserkTimer = mod:NewBerserkTimer(600) local berserkTimer = mod:NewBerserkTimer(600)
@@ -32,10 +33,11 @@ function mod:OnCombatStart(delay)
berserkTimer:Start(-delay) berserkTimer:Start(-delay)
timerLocust:Start(-delay) timerLocust:Start(-delay)
prewarnLocust:Schedule(85-delay) prewarnLocust:Schedule(85-delay)
timerImpale:Start(10-delay)
end end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(1003011) then if args:IsSpellID(1003011) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnDarkGaze:Show(); specWarnDarkGaze:Show();
SendChatMessage(L.YellDarkGaze, "YELL") SendChatMessage(L.YellDarkGaze, "YELL")
@@ -44,12 +46,14 @@ function mod:SPELL_AURA_APPLIED(args)
end end
function mod:SPELL_CAST_START(args) function mod:SPELL_CAST_START(args)
if args:IsSpellID(28785) then if args:IsSpellID(2123003) then
timerLocust:Start() timerLocust:Start()
specWarnLocust:Show() specWarnLocust:Show()
prewarnLocust:Schedule(85) prewarnLocust:Schedule(85)
timerLocustRemaining:Schedule(3) timerLocustRemaining:Schedule(3)
elseif args:IsSpellID(28783) then timerImpale:Stop()
timerImpale:Start(30)
elseif args:IsSpellID(2123001) then
timerImpale:Start() timerImpale:Start()
tankName = mod:GetBossTarget(15956) tankName = mod:GetBossTarget(15956)
self:ScheduleMethod(0.1, "anubImpale") self:ScheduleMethod(0.1, "anubImpale")
@@ -57,18 +61,27 @@ function mod:SPELL_CAST_START(args)
end end
function mod:anubImpale() function mod:anubImpale()
local target = mod:GetBossTarget(15956) local target = mod:GetBossTarget(15956) or mod:GetBossTarget(26614)
if target then if target ~= tankName then
warnImpale:Show(target) warnImpale:Show(target)
if target == UnitName("player") then
end
elseif target == tankName then elseif target == tankName then
self:ScheduleMethod(0.1, "anubImpale") self:ScheduleMethod(0.1, "anubImpale")
end end
local targetShade = mod:GetBossTarget(1003012) end
if targetShade then
warnImpale:Show(targetShade) function mod:OnCombatEnd()
if targetShade == UnitName("player") then timerLocust:Stop()
end warnLocust:Cancel()
timerImpale:Stop()
warnImpale:Cancel()
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15956 or cid == 26614 then
timerLocust:Stop()
warnLocust:Cancel()
timerImpale:Stop()
warnImpale:Cancel()
end end
end end
+42 -14
View File
@@ -9,15 +9,19 @@ mod:RegisterEvents(
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"SPELL_PERIODIC_DAMAGE", "SPELL_PERIODIC_DAMAGE",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"UNIT_DIED",
"SPELL_AURA_REFRESH"
) )
-----ENRAGE----- -----ENRAGE-----
-- local warnEnrageSoon = mod:NewSoonAnnounce(28798, 3) -- local warnEnrageSoon = mod:NewSoonAnnounce(28798, 3)
-----Frenzy----- -----Frenzy-----
-- local warnFrenzyNow = mod:NewSpellAnnounce(28798, 4) -- local warnFrenzyNow = mod:NewSpellAnnounce(28798, 4)
local timerFrenzy = mod:NewNextTimer(60, 28798) local timerSadism = mod:NewNextTimer(30, 2123101)
local warnFrenzy = mod:NewAnnounce(L.FaerlinaFrenzy, 2, 28798) local timerBloodBath = mod:NewBuffActiveTimer(45, 2123102)
local warnBloodBathSoon = mod:NewAnnounce("Faerlina is getting hungry for blood!", 2, 2123102)
local warnSadism = mod:NewSpellAnnounce(2123101, 3)
-----EMBRACE----- -----EMBRACE-----
local warnEmbraceActive = mod:NewSpellAnnounce(28732, 1) local warnEmbraceActive = mod:NewSpellAnnounce(28732, 1)
local timerEmbrace = mod:NewBuffActiveTimer(20, 28732) local timerEmbrace = mod:NewBuffActiveTimer(20, 28732)
@@ -36,7 +40,7 @@ local berserkTimer = mod:NewBerserkTimer(600)
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
berserkTimer:Start(-delay) berserkTimer:Start(-delay)
timerFrenzy:Start(-delay) timerSadism:Start(60-delay)
-- timer = 60 -- timer = 60
-- timerEnrage:Start(timer - delay) -- timerEnrage:Start(timer - delay)
-- warnEnrageSoon:Schedule(timer - 5 - delay) -- warnEnrageSoon:Schedule(timer - 5 - delay)
@@ -62,10 +66,14 @@ end
-- end -- end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(28798, 54100) then if args:IsSpellID(2123101) then
warnFrenzy:Show(args.spellName, args.destName, args.amount or 1) warnSadism:Show(args.spellName, args.destName, args.amount or 1)
timerFrenzy:Start() timerSadism:Start(30)
elseif args:IsSpellID(1003054) then elseif args:IsSpellID(2123102) then
timerSadism:Stop()
timerBloodBath:Start()
warnBloodBathSoon:Schedule(40)
elseif args:IsSpellID(2123107,2123108,2123109,2123110) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnRainOfFire:Show(); specWarnRainOfFire:Show();
end end
@@ -82,15 +90,24 @@ function mod:SPELL_AURA_APPLIED(args)
end end
end end
function mod:SPELL_AURA_REFRESH(args)
if args:IsSpellID(2123102) then
timerSadism:Stop()
timerBloodBath:Start()
warnBloodBathSoon:Cancel()
warnBloodBathSoon:Schedule(40)
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(28798, 54100) then if args:IsSpellID(2123101) then
warnFrenzy:Show(args.spellName, args.destName, args.amount or 1) warnSadism:Show(args.spellName, args.destName, args.amount or 1)
timerFrenzy:Start() timerSadism:Start()
elseif args:IsSpellID(1003054) then elseif args:IsSpellID(2123107,2123108,2123109,2123110) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnRainOfFire:Show(); specWarnRainOfFire:Show();
end end
elseif args:IsSpellID(869762, 350284) then elseif args:IsSpellID(2123115,2123116,2123117,2123118) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnPoisonPool:Show(); specWarnPoisonPool:Show();
end end
@@ -104,9 +121,20 @@ function mod:SPELL_AURA_APPLIED_DOSE(args)
end end
function mod:SPELL_PERIODIC_DAMAGE(args) function mod:SPELL_PERIODIC_DAMAGE(args)
if args:IsSpellID(350286) then if args:IsSpellID(2123107,2123108,2123109,2123110) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnRainOfFire:Show() specWarnRainOfFire:Show()
end end
end end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15956 or cid == 26615 then
timerSadism:Stop()
end
end
function mod:OnCombatEnd()
timerSadism:Stop()
end end
+76 -34
View File
@@ -11,74 +11,116 @@ mod:RegisterEvents(
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"PLAYER_ALIVE", "PLAYER_ALIVE",
"CHAT_MSG_RAID_BOSS_EMOTE", "CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_HEALTH" "UNIT_HEALTH",
"UNIT_DIED"
) )
-----Necrotic Poison----- -----Necrotic Poison-----
local timerNecrotic = mod:NewNextTimer(60, 28798) local warnNecrotic = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123201)
local warnNecrotic = mod:NewAnnounce(L.MaexxnaNecrotic, 2, 28798) local specWarnNecrotic = mod:NewSpecialWarningStack(2123201, 3)
----DIGESTIVE ACID----
local warnDigestive = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123202)
local specWarnDigestive = mod:NewSpecialWarningStack(2123202, 1)
-----WEB WRAP----- -----WEB WRAP-----
local warnWebWrap = mod:NewTargetAnnounce(28622, 2) local warnWebWrap = mod:NewTargetAnnounce(2123211, 2)
local timerWebWrap = mod:NewNextTimer(40, 28622) local timerWebWrap = mod:NewNextTimer(40, 2123211)
-----WEB SPRAY----- -----WEB SPRAY-----
local warnWebSpraySoon = mod:NewSoonAnnounce(29484, 1) local warnWebSpraySoon = mod:NewSoonAnnounce(2123206, 1)
local warnWebSprayNow = mod:NewSpellAnnounce(29484, 3) local warnWebSprayNow = mod:NewSpecialWarningSpell(2123206, 3)
local timerWebSpray = mod:NewNextTimer(40, 29484) local timerWebSpray = mod:NewNextTimer(50, 2123206)
local timerWebStunSoon = mod:NewTimer(4,"Stun incoming!", 2123210)
local timerWebStun = mod:NewTimer(4, "WRAPPED!", 2123210)
-----SPIDERLINGS----- -----SPIDERLINGS-----
local timerSpider = mod:NewNextTimer(16, 43134) local timerSpider = mod:NewNextTimer(16, 43134)
-----SOFT ENRAGE----- -----SOFT ENRAGE-----
local warnSoftEnrageSoon = mod:NewSpellAnnounce(54123, 3) local warnSoftEnrageSoon = mod:NewSpellAnnounce(54123, 3)
local warnSoftEnrageNow = mod:NewSoonAnnounce(54123, 2) local warnSoftEnrageNow = mod:NewSoonAnnounce(54123, 2)
local maexxnaHealth
local phase local phase
local webSpam = 0
local necroticSpam = 0
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
webSpam = 0
necroticSpam = 0
warnWebSpraySoon:Schedule(35 - delay) warnWebSpraySoon:Schedule(35 - delay)
timerWebSpray:Start(40 - delay) timerWebSpray:Start(40 - delay)
timerWebWrap:Start(20-delay) timerWebWrap:Start(20-delay)
timerSpider:Start(8 - delay) timerSpider:Start(8 - delay)
self:ScheduleMethod(8-delay, "Spiders")
end end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) -- "Kel'Thuzad strikes!"
if msg:find(L.Spiderlings) then
timer = 16
timerSpider:Start(timer) function mod:Spiders()
end timerSpider:Start()
self:ScheduleMethod(16, "Spiders")
end end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(28622) then -- Web Wrap if args:IsSpellID(2123201) then
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
elseif args:IsSpellID(2123206, 2123207, 2123208, 2123209) and DBM:AntiSpam() then
warnWebSprayNow:Show()
timerWebStunSoon:Start()
timerWebSpray:Start()
elseif args:IsSpellID(2123211,2123212,2123216,2123217) and (GetTime() - webSpam) > 5 then -- Web Wrap
webSpam = GetTime()
warnWebWrap:Show(args.destName) warnWebWrap:Show(args.destName)
timerWebWrap:Start() timerWebWrap:Start()
if args.destName == UnitName("player") then if args.destName == UnitName("player") then
SendChatMessage(L.YellWebWrap, "YELL") SendChatMessage(L.YellWebWrap, "YELL")
end end
elseif args:IsSpellID(29484, 54125, 350287) then -- Web Spray elseif args:IsSpellID(2123210) then
timer = 40 timerWebStun:Start()
warnWebSprayNow:Show()
warnWebSpraySoon:Schedule(timer-5)
timerWebSpray:Start(timer)
elseif args:IsSpellID(28776) then
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
timerNecrotic:Start()
end end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(28776) then if args:IsSpellID(2123201) then
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1) if args:IsPlayer() and args.amount >= 1 and (GetTime() - necroticSpam) > 5 then
necroticSpam = GetTime()
specWarnNecrotic:Show(args.amount)
elseif args:IsPlayer() == false and args.amount >= 5 and (GetTime() - necroticSpam) > 5 then
necroticSpam = GetTime()
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
end
end
if args:IsSpellID(2123202) then
if args:IsPlayer() and args.amount >= 1 then
specWarnDigestive:Show(args.amount)
elseif args:IsPlayer() == false and args.amount >= 4 and args.amount <=10 then
warnDigestive:Show(args.spellName, args.destName, args.amount or 1)
end
end end
end end
function mod:UNIT_HEALTH(args) function mod:UNIT_HEALTH(uId)
maexxnaHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100; if self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and phase == 1 then
if maexxnaHealth < 25 and phase == 1 then
phase = 2 phase = 2
warnSoftEnrageSoon:Show() warnSoftEnrageSoon:Show()
elseif maexxnaHealth < 20 and phase == 2 then elseif self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.20 and phase == 2 then
phase = 3 phase = 3
warnSoftEnrageNow:Show() warnSoftEnrageNow:Show()
end end
end end
function mod:OnCombatEnd()
timerWebSpray:Stop()
warnWebSpraySoon:Cancel()
timerSpider:Stop()
timerWebWrap:Stop()
self:UnscheduleMethod("Spiders")
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15952 or cid == 26616 then
timerWebSpray:Stop()
warnWebSpraySoon:Cancel()
timerSpider:Stop()
timerWebWrap:Stop()
self:UnscheduleMethod("Spiders")
end
end
+70 -10
View File
@@ -7,15 +7,26 @@ mod:RegisterCombat("combat")
mod:EnableModel() mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_DAMAGE", "SPELL_DAMAGE",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"SPELL_CAST_SUCCESS",
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"UNIT_DIED"
) )
-----DECIMATE----- -----DECIMATE-----
local warnDecimateSoon = mod:NewSoonAnnounce(54426, 2) local warnDecimateSoon = mod:NewSoonAnnounce(2122905, 2)
local warnDecimateNow = mod:NewSpellAnnounce(54426, 3) local warnDecimateNow = mod:NewSpellAnnounce(2122905, 2)
local timerDecimate = mod:NewNextTimer(120, 54426) local timerDecimate = mod:NewNextTimer(120, 2122905)
local timerFeedFrenzy = mod:NewTimer(30, "Gluth is in a Frenzy", 2122923)
-------MOOD--------
local warnHungry = mod:NewAnnounce("Gluth is Hungry", 2, 2122903, nil, "Show a warning when Gluth gets hungry")
local specWarnAngry = mod:NewSpecialWarning("%s on >%s< (%d)", 2, 2122904)
local warnViciousStacks = mod:NewAnnounce("%s on >%s< (%d)", 2, 2122901)
local SpecWarnVicStacks = mod:NewSpecialWarningStack(2122901, 2)
-----MISC----- -----MISC-----
local enrageTimer = mod:NewBerserkTimer(480) local enrageTimer = mod:NewBerserkTimer(480)
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
@@ -24,12 +35,61 @@ function mod:OnCombatStart(delay)
warnDecimateSoon:Schedule(115 - delay) warnDecimateSoon:Schedule(115 - delay)
end end
local decimateSpam = 0 function mod:SPELL_CAST_SUCCESS(args)
function mod:SPELL_DAMAGE(args) if args:IsSpellID(2122905)then
if args:IsSpellID(28375) and (GetTime() - decimateSpam) > 20 then
decimateSpam = GetTime()
warnDecimateNow:Show() warnDecimateNow:Show()
timerDecimate:Start() timerDecimate:Start()
warnDecimateSoon:Schedule(115) warnDecimateSoon:Schedule(115)
end end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2122901) then
if args:IsPlayer() then
SpecWarnVicStacks:Show(args.amount)
else
warnViciousStacks:Show(args.spellName, args.destName, args.amount or 1)
end
end
if args:IsSpellID(2122904) then
if args.amount >=1 then
specWarnAngry:Show(args.spellName, args.destName, args.amount or 1)
end
end
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2122901) then
if args:IsPlayer() then
SpecWarnVicStacks:Show(args.amount or 1)
else
warnViciousStacks:Show(args.spellName, args.destName, args.amount or 1)
end
end
if args:IsSpellID(2122904) then
specWarnAngry:Show(args.spellName, args.destName, args.amount or 1)
end
if args:IsSpellID(2122903) then
warnHungry:Show()
end
if args:IsSpellID(2122923) and (args.destName == "Gluth") then
timerFeedFrenzy:Start()
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15932 or cid == 26628 then
timerDecimate:Stop()
end
end
function mod:OnCombatEnd()
timerDecimate:Stop()
end
--Vicious Strike debuff 2122901 || Feeding Frenzy 2122923
--DBM_MOROES_GARROTE = "%s on >%s< (%d)" --(args.spellName, args.destName, args.amount or 1)
--local warningGarrote = mod:NewAnnounce(DBM_GLUTH_VICIOUS_BITE, 3, 37066)
--warningGarrote:Show(args.spellName, args.destName, args.amount or 1)
--L:SetWarningLocalization{
+64 -50
View File
@@ -11,28 +11,26 @@ mod:RegisterEvents(
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED", "SPELL_AURA_REMOVED",
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"UNIT_DIED",
"PLAYER_ALIVE" "PLAYER_ALIVE"
) )
-----MUTATING INJECTION----- -----MUTATING INJECTION-----
local warnInjection = mod:NewTargetAnnounce(28169, 2) local warnInjection = mod:NewTargetAnnounce(28169, 2)
local specWarnInjection = mod:NewSpecialWarningYou(28169) local specWarnInjection = mod:NewSpecialWarningYou(2122807)
local timerInjection = mod:NewTargetTimer(10, 28169) local timerInjection = mod:NewTargetTimer(10, 2122807)
local timerNextInjection = mod:NewNextTimer(15, 2122807)
-----POISON CLOUD----- -----POISON CLOUD-----
local timerCloud = mod:NewNextTimer(15, 28240) local timerPoisonCloud = mod:NewNextTimer(8, 2122812)
local warnCloud = mod:NewSpellAnnounce(28240, 2) local warnCloud = mod:NewSpellAnnounce(2122812, 2)
local prewarnCloud = mod:NewSoonAnnounce(28240, 3) local specWarnPoison1 = mod:NewSpecialWarningMove(2122812, true, nil, true)
local specWarnPoison1 = mod:NewSpecialWarningMove(28241, true, nil, true)
local specWarnPoison2 = mod:NewSpecialWarningMove(28158, true, nil, true)
-----VIVIFYING TOXIN----- -----VIVIFYING TOXIN-----
local timerToxin = mod:NewNextTimer(45, 79012) local timerStitchedGiant = mod:NewTimer(60, "Stitched Giant", 79012)
local warnToxin = mod:NewSpellAnnounce(79012, 2)
local prewarnToxin = mod:NewSoonAnnounce(79012, 3)
-----SLIME SPRAY----- -----SLIME SPRAY-----
local timerSpray = mod:NewCDTimer(15, 28157) local timerSpray = mod:NewCDTimer(20, 2122818)
local warnSpray = mod:NewSpellAnnounce(28157, 2) local warnSpray = mod:NewSpellAnnounce(2122818, 2)
-----MISC----- -----MISC-----
local enrageTimer = mod:NewBerserkTimer(480) local enrageTimer = mod:NewBerserkTimer(480)
mod:AddBoolOption("SetIconOnInjectionTarget", true) mod:AddBoolOption("SetIconOnInjectionTarget", true)
local mutateIcons = {} local mutateIcons = {}
@@ -41,15 +39,15 @@ function mod:OnCombatStart(delay)
table.wipe(mutateIcons) table.wipe(mutateIcons)
enrageTimer:Start(-delay) enrageTimer:Start(-delay)
-----Poison Cloud----- -----Poison Cloud-----
timerCloud:Start(15-delay) timerPoisonCloud:Start(10-delay)
warnCloud:Schedule(15-delay) self:ScheduleMethod(10-delay,"PoisonCloud")
prewarnCloud:Schedule(10-delay)
-----Vivifying Toxin----- -----Vivifying Toxin-----
timerToxin:Start(10-delay) timerStitchedGiant:Start(20-delay)
warnToxin:Schedule(10-delay) self:ScheduleMethod(20-delay, "StitchedGiant")
prewarnToxin:Schedule(5-delay)
-----Slime Spray----- -----Slime Spray-----
timerSpray:Start(15-delay) timerSpray:Start(25-delay)
----Injection----
timerNextInjection:Start(10-delay)
end end
local function addIcon() local function addIcon()
@@ -70,41 +68,35 @@ local function removeIcon(target)
end end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(28169) then if args:IsSpellID(2122807) then
warnInjection:Show(args.destName)
timerInjection:Start(args.destName)
if args:IsPlayer() then if args:IsPlayer() then
specWarnInjection:Show() specWarnInjection:Show()
else
warnInjection:Show(args.destName)
end end
timerInjection:Start(args.destName)
timerNextInjection:Start()
if self.Options.SetIconOnInjectionTarget then if self.Options.SetIconOnInjectionTarget then
table.insert(mutateIcons, args.destName) table.insert(mutateIcons, args.destName)
addIcon() addIcon()
end end
elseif args:IsSpellID(28241) then elseif args:IsSpellID(2122812,2122813,2122814) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnPoison1:Show() specWarnPoison1:Show()
end end
elseif args:IsSpellID(28158) then end
if args:IsPlayer() then
specwarnPoison2:Show()
end
end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(28241) then if args:IsSpellID(2122812,2122813,2122814) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnPoison1:Show() specWarnPoison1:Show()
end end
elseif args:IsSpellID(28158) then end
if args:IsPlayer() then
specwarnPoison2:Show()
end
end
end end
function mod:SPELL_AURA_REMOVED(args) function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(28169) then if args:IsSpellID(2122807) then
timerInjection:Cancel(args.destName)--Cancel timer if someone is dumb and dispels it. timerInjection:Cancel(args.destName)--Cancel timer if someone is dumb and dispels it.
if self.Options.SetIconOnInjectionTarget then if self.Options.SetIconOnInjectionTarget then
removeIcon(args.destName) removeIcon(args.destName)
@@ -113,19 +105,41 @@ function mod:SPELL_AURA_REMOVED(args)
end end
function mod:SPELL_CAST_SUCCESS(args) function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(28240) then if args:IsSpellID(2122818) then
timer = 15 timerSpray:Start()
timerCloud:Start(timer)
warnCloud:Schedule(timer)
prewarnCloud:Schedule(timer-5)
elseif args:IsSpellID(79012) then
timer = 42.5
timerToxin:Start(timer)
warnToxin:Schedule(timer)
prewarnToxin:Schedule(timer-5)
elseif args:IsSpellID(28157, 196884) then
timer = 15
timerSpray:Start(timer)
warnSpray:Show() warnSpray:Show()
end end
end
function mod:PoisonCloud()
timerPoisonCloud:Stop()
timerPoisonCloud:Start()
warnCloud:Show()
self:ScheduleMethod(8,"PoisonCloud")
end
function mod:StitchedGiant()
timerStitchedGiant:Stop()
timerStitchedGiant:Start()
self:ScheduleMethod(60,"StitchedGiant")
end
--if args:IsSpellID(28240) then
-- timer = 15
-- timerCloud:Start(timer)
-- warnCloud:Schedule(timer)
-- prewarnCloud:Schedule(timer-5)
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15931 or cid == 26627 then
timerInjection:Stop()
timerSpray:Stop()
timerNextInjection:Stop()
end
end
function mod:OnCombatEnd()
timerInjection:Stop()
timerSpray:Stop()
timerNextInjection:Stop()
end end
+64 -8
View File
@@ -9,15 +9,29 @@ mod:RegisterEvents(
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_DAMAGE", "SPELL_DAMAGE",
"SPELL_MISSED", "SPELL_MISSED",
"UNIT_DIED",
"PLAYER_ALIVE" "PLAYER_ALIVE"
) )
mod:AddBoolOption("WarningHateful", false, "announce") mod:AddBoolOption("WarningHateful", false, "announce")
mod:AddBoolOption("SetIconOnGastricTarget", true)
local mutateIcons = {}
local MT
-----GASTRIC AFFLICTION----- -----GASTRIC AFFLICTION-----
local specWarnGastric = mod:NewSpecialWarningYou(1003086) local specWarnGastric = mod:NewSpecialWarningYou(1003086)
local warnGastric = mod:NewTargetAnnounce(2122517, 2)
local timerGastric = mod:NewNextTimer(20,2122517)
local timerGastricSelf = mod:NewTargetTimer(15,2122517)
-----MISC----- -----MISC-----
local enrageTimer = mod:NewBerserkTimer(360) local enrageTimer = mod:NewBerserkTimer(360)
local timerAchieve = mod:NewAchievementTimer(180, 1857, "TimerSpeedKill") local timerAchieve = mod:NewAchievementTimer(180, 1857, "TimerSpeedKill")
----TOY-----
local specWarnNotFavToy = mod:NewSpecialWarningYou(2122516)
local timerNotFavToy = mod:NewTargetTimer(20,2122516)
local specWarnFavToy = mod:NewSpecialWarningYou(2122515)
local timerFavToy = mod:NewTargetTimer(20,2122515)
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
local function announceStrike(target, damage) local function announceStrike(target, damage)
@@ -27,25 +41,67 @@ end
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
enrageTimer:Start(-delay) enrageTimer:Start(-delay)
timerAchieve:Start(-delay) timerAchieve:Start(-delay)
timerGastric:Start(15-delay)
end end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(1003086) then if args:IsSpellID(2122517,2122518,2122519,2122520) then
if args:IsPlayer() then if args:IsPlayer() then
timer = 5 specWarnGastric:Show();
specWarnGastric:Show(timer); else
warnGastric:Show(args.destName)
end end
end timerGastricSelf:Start(args.destName)
end self:SetIcon(args.destName, 8, 15)
timerGastric:Start()
end
if args:IsSpellID(2122516) then
if args:IsPlayer() then
specWarnNotFavToy:Show(args.destName)
timerNotFavToy:Start(args.destName)
end
MT = args.destName
end
if args:IsSpellID(2122515) then
if args:IsPlayer() then
specWarnFavToy:Show(args.destName)
timerFavToy:Start(args.destName)
end
end
end
function mod:SPELL_DAMAGE(args) function mod:SPELL_DAMAGE(args)
if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then
announceStrike(args.destName, args.amount or 0) announceStrike(args.destName, args.amount or 0)
end end
if args:IsSpellID(2122505) and (args.destName == MT) then
timerNotFavToy:Stop()
timerNotFavToy:Start(MT)
end
end end
function mod:SPELL_MISSED(args) function mod:SPELL_MISSED(args)
if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then
announceStrike(args.destName, getglobal("ACTION_SPELL_MISSED_"..(args.missType)) or "") announceStrike(args.destName, getglobal("ACTION_SPELL_MISSED_"..(args.missType)) or "")
end end
end
function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(2122517,2122518,2122519,2122520) then
timerGastricSelf:Cancel(args.destName)--Cancel timer if someone is dumb and dispels it.
self:SetIcon(args.destName, 0)
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 16028 or cid == 26626 then
timerGastric:Stop()
timerGastricSelf:Stop()
end
end
function mod:OnCombatEnd()
timerGastric:Stop()
timerGastricSelf:Stop()
end end
+260 -134
View File
@@ -7,112 +7,78 @@ mod:RegisterCombat("yell", L.Yell)
mod:EnableModel() mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_CAST_START", "SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"CHAT_MSG_RAID_BOSS_EMOTE", "CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_AURA", "UNIT_AURA",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"SPELL_AURA_APPLIED",
"SPELL_AURA_REMOVED",
"UNIT_DIED"
) )
-----POLARITY SHIFT----- -----POLARITY SHIFT-----
local timerShiftCast = mod:NewCastTimer(3, 28089) local timerShiftCast = mod:NewCastTimer(4, 2124201)
local timerNextShift = mod:NewNextTimer(30, 28089) local timerNextShift = mod:NewNextTimer(34, 2124201)
local warnShiftCasting = mod:NewCastAnnounce(28089, 3) local warnShiftCasting = mod:NewCastAnnounce(2124201, 2)
local specWarnNegative = mod:NewSpecialWarningMove(2124203, 2)
local specWarnPositive = mod:NewSpecialWarningMove(2124202, 2)
local warnMagnetic = mod:NewAnnounce("Magnetic Reversal", 2, 2124245, nil, "Show warning for Magnetic Reversal")
local timerMagnetic = mod:NewTimer(16, "Magnetic Reversal duration", 2124245)
local warnTankOvercharged = mod:NewTargetAnnounce(2124222, 2)
local specWarnTankOvercharged = mod:NewSpecialWarningYou(2124222, 2)
-----THROW----- -----THROW-----
local warnThrow = mod:NewSpellAnnounce(28338, 2) local warnThrow = mod:NewSpellAnnounce(2124244, 2)
local warnThrowSoon = mod:NewSoonAnnounce(28338, 1) local warnThrowSoon = mod:NewSoonAnnounce(2124244, 2)
local timerThrow = mod:NewNextTimer(20.6, 28338) local timerThrow = mod:NewNextTimer(20.6, 2124244)
-----MISC----- -----MISC-----
local warnChargeChanged = mod:NewSpecialWarning("WarningChargeChanged")
local warnChargeNotChanged = mod:NewSpecialWarning("WarningChargeNotChanged", false)
local enrageTimer = mod:NewBerserkTimer(365) local enrageTimer = mod:NewBerserkTimer(365)
mod:AddBoolOption("ArrowsEnabled", false, "Arrows")
mod:AddBoolOption("ArrowsRightLeft", false, "Arrows")
mod:AddBoolOption("ArrowsInverse", false, "Arrows")
mod:AddBoolOption("HealthFrame", true) mod:AddBoolOption("HealthFrame", true)
mod:SetBossHealthInfo( mod:SetBossHealthInfo(
15930, L.Boss1, 15930, L.Boss1,
15929, L.Boss2 15929, L.Boss2
) )
local currentCharge local currentCharge
local phase2 local phase2
local down = 0 local i = 7
-- Polarity shift (2124201)
-- Overcharged (2124222)
-- Magnetic Reversal (2124245)
--TEST REALM--
local negativePolarity = CreateFrame("Frame", nil, UIParent)
negativePolarity:Hide()
local negativeTexture = negativePolarity:CreateTexture(nil, "BACKGROUND")
negativeTexture:SetTexture("Interface\\Icons\\Spell_ChargeNegative")
negativeTexture:SetPoint("CENTER", negativePolarity, "CENTER")
negativePolarity:SetHeight(0.8)
negativePolarity:SetWidth(0.8)
negativePolarity:SetPoint("CENTER", UIParent, "CENTER", 0, 445)
local positivePolarity = CreateFrame("Frame", nil, UIParent)
positivePolarity:Hide()
local positiveTexture = positivePolarity:CreateTexture(nil, "BACKGROUND")
positiveTexture:SetTexture("Interface\\Icons\\Spell_ChargePositive")
positiveTexture:SetPoint("CENTER", positivePolarity, "CENTER")
positivePolarity:SetHeight(0.8)
positivePolarity:SetWidth(0.8)
positivePolarity:SetPoint("CENTER", UIParent, "CENTER", 0, 445)
-- Polarity Positive (2124202)
-- Polarity Negative (2124203)
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
phase2 = false phase2 = false
self.vb.phase = 1 self.vb.phase = 1
currentCharge = nil currentCharge = 0
i = 7
down = 0 down = 0
self:ScheduleMethod(20.6 - delay, "TankThrow") self:ScheduleMethod(20.6 - delay, "TankThrow")
timerThrow:Start(-delay) timerThrow:Start(-delay)
warnThrowSoon:Schedule(17.6 - delay) warnThrowSoon:Schedule(17.6 - delay)
end end
local lastShift = 0
function mod:SPELL_CAST_START(args)
if args:IsSpellID(28089) then
phase2 = true
self.vb.phase = 2
timerNextShift:Start()
timerShiftCast:Start()
warnShiftCasting:Show()
lastShift = GetTime()
end
end
function mod:UNIT_AURA(elapsed)
if not phase2 then return end
local charge
local i = 1
while UnitDebuff("player", i) do
local _, _, icon, count = UnitDebuff("player", i)
if icon == "Interface\\Icons\\Spell_ChargeNegative" then
if count > 1 then return end
charge = L.Charge1
elseif icon == "Interface\\Icons\\Spell_ChargePositive" then
if count > 1 then return end
charge = L.Charge2
end
i = i + 1
end
if charge then
lastShift = 0
if charge == currentCharge then
warnChargeNotChanged:Show()
if self.Options.ArrowsEnabled and self.Options.ArrowsRightLeft then
if self.Options.ArrowsInverse then
self:ShowLeftArrow()
else
self:ShowRightArrow()
end
end
else
warnChargeChanged:Show(charge)
if self.Options.ArrowsEnabled then
if self.Options.ArrowsRightLeft and self.Options.ArrowsInverse then
self:ShowRightArrow()
elseif self.Options.ArrowsRightLeft then
self:ShowLeftArrow()
elseif currentCharge then
self:ShowUpArrow()
end
end
end
currentCharge = charge
end
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg == L.Emote or msg == L.Emote2 then
down = down + 1
if down >= 2 then
self:UnscheduleMethod("TankThrow")
timerThrow:Cancel()
warnThrowSoon:Cancel()
DBM.BossHealth:Hide()
enrageTimer:Start()
end
end
end
function mod:TankThrow() function mod:TankThrow()
if not self:IsInCombat() or phase2 then if not self:IsInCombat() or phase2 then
DBM.BossHealth:Hide() DBM.BossHealth:Hide()
@@ -123,64 +89,224 @@ function mod:TankThrow()
self:ScheduleMethod(20.6, "TankThrow") self:ScheduleMethod(20.6, "TankThrow")
end end
local function arrowOnUpdate(self, elapsed) function mod:SPELL_CAST_START(args)
self.elapsed = (self.elapsed or 0) + elapsed if args:IsSpellID(2124201) then
if self.elapsed >= 3.5 and self.elapsed < 4.5 then phase2 = true
self:SetAlpha(4.5 - self.elapsed) self.vb.phase = 2
elseif self.elapsed >= 4.5 then self:ScheduleMethod(0, "ShiftingPolarity")
self:Hide()
end end
end end
local function arrowOnShow(self) function mod:SPELL_AURA_APPLIED(args)
self.elapsed = 0 if args:IsSpellID(2124245) and DBM:AntiSpam(2, 6) then
self:SetAlpha(1) if args:IsPlayer() then
SendChatMessage("Magnetic Reversal on "..UnitName("PLAYER").."!", "Say")
end
warnMagnetic:Show(args.destName)
timerMagnetic:Start()
mod:SetIcon(args.destName, i, 15)
i = i-1
end
if args:IsSpellID(2124222) then
local tanktarget = args.destName
if args:IsPlayer() then
specWarnTankOvercharged:Show()
else
warnTankOvercharged:Show(tanktarget)
end
mod:SetIcon(tanktarget, 8, 15)
end
end end
function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(2124245) then
i = 7
end
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg == L.Emote or msg == L.Emote2 then
self:UnscheduleMethod("TankThrow")
timerThrow:Cancel()
warnThrowSoon:Cancel()
DBM.BossHealth:Hide()
enrageTimer:Start()
end
end
function mod:UNIT_AURA(unit)
if UnitDebuff("Player","Polarity: Negative") then
if currentCharge == 1 or currentCharge == 0 then
specWarnNegative:Show()
end
currentCharge = 2
negativePolarity:Show()
positivePolarity:Hide()
end
if UnitDebuff("Player","Polarity: Positive") then
if currentCharge == 2 or currentCharge == 0 then
specWarnPositive:Show()
end
currentCharge = 1
negativePolarity:Hide()
positivePolarity:Show()
end
end
function mod:ShiftingPolarity()
timerNextShift:Start()
timerShiftCast:Start()
warnShiftCasting:Show()
self:ScheduleMethod(34,"ShiftingPolarity")
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15928 or cid == 26629 then
positivePolarity:Hide()
negativePolarity:Hide()
timerShiftCast:Stop()
timerMagnetic:Stop()
self:UnscheduleMethod("ShiftingPolarity")
end
end
function mod:OnCombatEnd()
negativePolarity:Hide()
positivePolarity:Hide()
self:UnscheduleMethod("ShiftingPolarity")
end
--local function PolarityOnShow(self)
-- self.elapsed = 0
-- self:SetAlpha(1)
--end
--function mod:ShowNegativePolarity()
-- negativePolarity:Show()
--end
--function mod:ShowPositivePolarity()
-- positivePolarity:Show()
--end
-----------------------CURRENTLY DEPRECATED-----------------------
--mod:AddBoolOption("ArrowsEnabled", false, "Arrows")
--mod:AddBoolOption("ArrowsRightLeft", false, "Arrows")
--mod:AddBoolOption("ArrowsInverse", false, "Arrows")
--function mod:UNIT_AURA(elapsed)
-- if not phase2 then return end
-- local charge
-- local i = 1
-- while UnitDebuff("player", i) do
-- local _, _, icon, count = UnitDebuff("player", i)
-- if icon == "Interface\\Icons\\Spell_ChargeNegative" then
-- if count > 1 then return end
-- charge = L.Charge1
-- elseif icon == "Interface\\Icons\\Spell_ChargePositive" then
-- if count > 1 then return end
-- charge = L.Charge2
-- end
-- i = i + 1
-- end
-- if charge then
-- lastShift = 0
-- if charge == currentCharge then
-- warnChargeNotChanged:Show()
-- if self.Options.ArrowsEnabled and self.Options.ArrowsRightLeft then
-- if self.Options.ArrowsInverse then
-- self:ShowLeftArrow()
-- else
-- self:ShowRightArrow()
-- end
-- end
-- else
-- warnChargeChanged:Show(charge)
-- if self.Options.ArrowsEnabled then
-- if self.Options.ArrowsRightLeft and self.Options.ArrowsInverse then
-- self:ShowRightArrow()
-- elseif self.Options.ArrowsRightLeft then
-- self:ShowLeftArrow()
-- elseif currentCharge then
-- self:ShowUpArrow()
-- end
-- end
-- end
-- currentCharge = charge
-- end
--end
--local function arrowOnUpdate(self, elapsed)
-- self.elapsed = (self.elapsed or 0) + elapsed
-- if self.elapsed >= 3.5 and self.elapsed < 4.5 then
-- self:SetAlpha(4.5 - self.elapsed)
-- elseif self.elapsed >= 4.5 then
-- self:Hide()
-- end
--end
--local function arrowOnShow(self)
-- self.elapsed = 0
-- self:SetAlpha(1)
--end
-- this file uses the texture Textures/arrow.tga. This image was created by Everaldo Coelho and is licensed under the GNU Lesser General Public License. See Textures/lgpl.txt. -- this file uses the texture Textures/arrow.tga. This image was created by Everaldo Coelho and is licensed under the GNU Lesser General Public License. See Textures/lgpl.txt.
local arrowLeft = CreateFrame("Frame", nil, UIParent) --local arrowLeft = CreateFrame("Frame", nil, UIParent)
arrowLeft:Hide() --arrowLeft:Hide()
local arrowLeftTexture = arrowLeft:CreateTexture(nil, "BACKGROUND") --local arrowLeftTexture = arrowLeft:CreateTexture(nil, "BACKGROUND")
arrowLeftTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow") --arrowLeftTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
arrowLeftTexture:SetPoint("CENTER", arrowLeft, "CENTER") --arrowLeftTexture:SetPoint("CENTER", arrowLeft, "CENTER")
arrowLeft:SetHeight(1) --arrowLeft:SetHeight(1)
arrowLeft:SetWidth(1) --arrowLeft:SetWidth(1)
arrowLeft:SetPoint("CENTER", UIParent, "CENTER", -150, -30) --arrowLeft:SetPoint("CENTER", UIParent, "CENTER", -150, -30)
arrowLeft:SetScript("OnShow", arrowOnShow) --arrowLeft:SetScript("OnShow", arrowOnShow)
arrowLeft:SetScript("OnUpdate", arrowOnUpdate) --arrowLeft:SetScript("OnUpdate", arrowOnUpdate)
local arrowRight = CreateFrame("Frame", nil, UIParent) --local arrowRight = CreateFrame("Frame", nil, UIParent)
arrowRight:Hide() --arrowRight:Hide()
local arrowRightTexture = arrowRight:CreateTexture(nil, "BACKGROUND") --local arrowRightTexture = arrowRight:CreateTexture(nil, "BACKGROUND")
arrowRightTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow") --arrowRightTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
arrowRightTexture:SetPoint("CENTER", arrowRight, "CENTER") --arrowRightTexture:SetPoint("CENTER", arrowRight, "CENTER")
arrowRightTexture:SetTexCoord(1, 0, 0, 1) ----arrowRightTexture:SetTexCoord(1, 0, 0, 1)
arrowRight:SetHeight(1) --arrowRight:SetHeight(1)
arrowRight:SetWidth(1) --arrowRight:SetWidth(1)
arrowRight:SetPoint("CENTER", UIParent, "CENTER", 150, -30) --arrowRight:SetPoint("CENTER", UIParent, "CENTER", 150, -30)
arrowRight:SetScript("OnShow", arrowOnShow) --arrowRight:SetScript("OnShow", arrowOnShow)
arrowRight:SetScript("OnUpdate", arrowOnUpdate) --arrowRight:SetScript("OnUpdate", arrowOnUpdate)
local arrowUp = CreateFrame("Frame", nil, UIParent) --local arrowUp = CreateFrame("Frame", nil, UIParent)
arrowUp:Hide() --arrowUp:Hide()
local arrowUpTexture = arrowUp:CreateTexture(nil, "BACKGROUND") --local arrowUpTexture = arrowUp:CreateTexture(nil, "BACKGROUND")
arrowUpTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow") --arrowUpTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
arrowUpTexture:SetRotation(math.pi * 3 / 2) --arrowUpTexture:SetRotation(math.pi * 3 / 2)
arrowUpTexture:SetPoint("CENTER", arrowUp, "CENTER") --arrowUpTexture:SetPoint("CENTER", arrowUp, "CENTER")
arrowUp:SetHeight(1) --arrowUp:SetHeight(1)
arrowUp:SetWidth(1) --arrowUp:SetWidth(1)
arrowUp:SetPoint("CENTER", UIParent, "CENTER", 0, 40) --arrowUp:SetPoint("CENTER", UIParent, "CENTER", 0, 40)
arrowUp:SetScript("OnShow", arrowOnShow) --arrowUp:SetScript("OnShow", arrowOnShow)
arrowUp:SetScript("OnUpdate", arrowOnUpdate) --arrowUp:SetScript("OnUpdate", arrowOnUpdate)
function mod:ShowRightArrow() --function mod:ShowRightArrow()
arrowRight:Show() -- arrowRight:Show()
end --end
function mod:ShowLeftArrow() --function mod:ShowLeftArrow()
arrowLeft:Show() -- arrowLeft:Show()
end --end
--
function mod:ShowUpArrow() --function mod:ShowUpArrow()
arrowUp:Show() -- arrowUp:Show()
end --end
+281 -464
View File
@@ -2,7 +2,7 @@ local mod = DBM:NewMod("Kel'Thuzad", "DBM-Naxx", 5)
local L = mod:GetLocalizedStrings() local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 2574 $"):sub(12, -3)) mod:SetRevision(("$Revision: 2574 $"):sub(12, -3))
mod:SetCreatureID(15990) mod:SetCreatureID(15990,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630)
mod:SetUsedIcons(8) mod:SetUsedIcons(8)
mod:RegisterCombat("yell", L.Yell) mod:RegisterCombat("yell", L.Yell)
mod:EnableModel() mod:EnableModel()
@@ -11,530 +11,347 @@ mod:RegisterEvents(
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_START", --This should allow the addon to process this Event using the scripting from Anub'Rekhan for Impale. "SPELL_CAST_START", --This should allow the addon to process this Event using the scripting from Anub'Rekhan for Impale.
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"CHAT_MSG_MONSTER_EMOTE",
"CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_HEALTH", "UNIT_HEALTH",
"UNIT_AURA",
"UNIT_DIED",
"PLAYER_ALIVE" "PLAYER_ALIVE"
) )
----------PHASE 1---------- ----------PHASE 1----------
-----MAJOR ADD WAVE----- local warnAbomination = mod:NewAnnounce("Abomination spawning", 1, 500335)
local warnMajorWave = mod:NewAnnounce("Major Wave Spawned", 2, 1003064, nil, "Show warning for Major Wave spawn") local timerAbomination = mod:NewTimer(30, "Abomination spawning", 500335)
local warnMajorWaveSoon = mod:NewAnnounce("Major Wave Spawns Soon", 3, 1003064, nil, "Show pre-warning for Major Wave spawn") local warnBanshee = mod:NewAnnounce("Soul Weaver spawning", 1, 58359)
local timerMajorWave = mod:NewTimer(30, "Next Major Wave", 1003064, nil, "Show timer for Major Wave spawn") local timerBanshee = mod:NewTimer(30, "Soul Weaver spawning", 58359)
local warnPosess = mod:NewTargetAnnounce(2124512, 2)
local timerPosess = mod:NewTargetTimer(10, 2124512)
-----CONSTRICTING CHAINS----- -----CONSTRICTING CHAINS-----
local warnChains = mod:NewTargetAnnounce(1003114, 2) local warnChains = mod:NewTargetAnnounce(1003114, 2)
-----WAIL OF SOULS----- -----WAIL OF SOULS-----
local warnWailSoul = mod:NewSpellAnnounce(1003115, 2) local warnWailSoul = mod:NewSpellAnnounce(1003115, 2)
-----PHASE 1 -> 2 TRANSITION----- -----PHASE 1 -> 2 TRANSITION-----
local warnPhase2 = mod:NewPhaseAnnounce(2, 3) local warnPhase2 = mod:NewPhaseAnnounce(2, 3)
local timerPhase2 = mod:NewTimer(180, "Phase Two", 29485, nil, "Show timer for Phase Two") local timerPhase2 = mod:NewTimer(178, "Phase Two", 500992, nil, "Show timer for Phase Two")
-----PHASE 2 -> 3 TRANSITION----- local timerPhase2Transition = mod:NewTimer(15, "Phase Two starting", 500992)
local warnPhase3 = mod:NewPhaseAnnounce(3, 3)
local timerPhase3 = mod:NewTimer(378, "Phase Three", 29485, nil, "Show timer for Phase Three")
----------PHASE 2---------- ----------PHASE 2----------
-----SHADE OF NAXXRAMAS----- --Shuffle in all timers we want to kill--
local warnNaxxShade = mod:NewAnnounce("Shade of Naxx Spawned", 2, 25228, nil, "Show warning for Shade of Naxxramas spawn") --ANUB--
local warnNaxxShadeSoon = mod:NewAnnounce("Shade of Naxx Spawns Soon", 3, 25228, nil, "Show pre-warning for Shade of Naxxramas spawn") local timerLocust = mod:NewNextTimer(90, 2123004)
local timerNaxxShade = mod:NewTimer(60, "Next Shade of Naxx", 25228, nil, "Show timer for Shade of Naxxramas spawn") local timerImpale = mod:NewCDTimer(15, 2123001)
-----DISRUPTING SHOUT----- --Faerlina--
local warnShout = mod:NewSpellAnnounce(29107, 2) local timerSadism = mod:NewNextTimer(30, 2123101)
local warnShoutSoon = mod:NewSoonAnnounce(29107, 3) --NOTH--
local timerShout = mod:NewCDTimer(16, 29107) local timerCurse = mod:NewNextTimer(30, 2123805)
-----SEEING RED----- --LOATHEB--
local warnSeeingRed = mod:NewSpellAnnounce(1003255, 2) local timerNextDeathbloom = mod:NewNextTimer(30, 2122627)
-----GASTRIC AFFLICTION----- local timerDeathblooming = mod:NewTimer(15, "Deathbloom expires!", 2122627)
local warnGastric = mod:NewTargetAnnounce(1003086, 2) local timerNecrotic = mod:NewBuffActiveTimer(16, 2122601)
local specWarnGastric = mod:NewSpecialWarningYou(1003086) --INSTRUCTOR--
-----VOID ZONE----- local timerenrage = mod:NewTimer(180, "Enrage", 2123914)
local specWarnVoid = mod:NewSpecialWarningYou(28865) local timerKnife = mod:NewNextTimer(15, 2123924)
-----SAFETY DANCE----- --HORSEMEN--
local warnDanceSoon = mod:NewAnnounce("Safety Dance Soon", 2, 46573, nil, "Show pre-warning for the Safetyy Dance") local timerMark = mod:NewNextTimer(12, 2124103)
local warnDance = mod:NewAnnounce("Dance Ends Now", 3, 46573, nil, "Show warning for the Safety Dance") local timerNextHolyWrath = mod:NewNextTimer(20, 2124141)
local timerDance = mod:NewTimer(22, "Safety Dance Starts", 46573, nil, "Show timer for the Safety Dance") local timerNextDeepChill = mod:NewNextTimer(20, 2124167)
-----HARVEST SOUL----- local timerNextMeteor = mod:NewNextTimer(20, 2124128)
local warnHarvestSoon = mod:NewSoonAnnounce(28679, 3) local timerNextFamine = mod:NewNextTimer(20, 2124166)
local warnHarvest = mod:NewSpellAnnounce(28679, 2) --PATCH--
local timerHarvest = mod:NewNextTimer(15, 28679) local timerGastric = mod:NewNextTimer(20,2122517)
-----MAEXXNA SPIDERLINGS----- local timerGastricSelf = mod:NewTargetTimer(15,2122517)
local timerSpider = mod:NewNextTimer(16, 43134) --GROBB--
-----NOTH'S SHADE (UNSCRIPTED)----- local timerSpray = mod:NewCDTimer(20, 2122818)
local warnNothShade = mod:NewAnnounce("Noth's Shade Spawned", 2, 1003072, nil, "Show warning for Noth's Shade spawn") local timerNextInjection = mod:NewNextTimer(15, 2122807)
local timerNothShade = mod:NewTimer(60, "Next Noth's Shade", 1003072, nil, "Show timer for Noth's Shade spawn") --GLUTH--
-----FROST BLAST----- local timerDecimate = mod:NewNextTimer(120, 2122905)
local warnBlast = mod:NewSpellAnnounce(29879, 2) --THADD--
local timerBlast = mod:NewCDTimer(16, 29879) local timerShiftCast = mod:NewCastTimer(4, 2124201)
-----DETONATE MANA----- local timerNextShift = mod:NewNextTimer(34, 2124201)
local warnMana = mod:NewSpellAnnounce(27819, 2) local warnShiftCasting = mod:NewCastAnnounce(2124201, 3)
local timerMana = mod:NewCDTimer(30, 27819) --SAPPH--
-----DEATH AND DECAY----- local timerNextBellowing = mod:NewNextTimer(45, 2124332)
local specWarnDnD = mod:NewSpecialWarningYou(1003113) -----PHASE 2 -> 3 TRANSITION-----
-----CHAINS OF KEL'THUZAD----- local warnPhase3 = mod:NewPhaseAnnounce(3, 3)
local warnChains = mod:NewSpellAnnounce(28410, 2) local timerPhase3 = mod:NewTimer(10, "Phase Three", 802125, nil, "Show the timer for Phase Three")
local timerChains = mod:NewCDTimer(16, 28410) ----------PHASE 3----------
local warnFrostSoon = mod:NewAnnounce("Frost Phase soon", 3, 2124594)
local warnFrostNow = mod:NewAnnounce("Frost Phase now!", 2, 2124594)
local timerKTteleport = mod:NewTimer(42, "Kel'Thuzad teleports", 46573)
local timerFrostPhase = mod:NewTimer(45, "Frost Phase ends", 2124594)
local warnAddsSoon = mod:NewAnnounce("Guardians spawn at 36%!, 2, 70965")
-----PHASE 3 ABILITIES-----
local specWarnDnD = mod:NewSpecialWarningMove(2124575,1)
local warnDnD = mod:NewSpellAnnounce(2124575, 2)
local timerDnD = mod:NewNextTimer(20, 2124575)
local specWarnFissure = mod:NewSpecialWarningMove(2124579,1)
local warnFissure = mod:NewSpellAnnounce(2124579,1)
local timerFissure = mod:NewCDTimer(20,2124579)
local warnFlashFreezeSoon = mod:NewSoonAnnounce(2124587, 2)
local timerFlashFreeze = mod:NewCDTimer(30, 2124587)
local specWarnManaBomb = mod:NewSpecialWarningYou(2124572, 2)
local warnManaBomb = mod:NewTargetAnnounce(2124572, 2)
local timerNextManaBomb = mod:NewNextTimer(20, 2124572)
local timerManaBomb = mod:NewBuffActiveTimer(8, 2124572)
-----RANGE CHECK----- -----RANGE CHECK-----
mod:AddBoolOption("ShowRange", true) mod:AddBoolOption("ShowRange", true)
----------BOSS TRACKING---------- ----------BOSS TRACKING----------
local anub
local faerlina
local maexx
local noth
local heigan
local loatheb
local razuv
local gothik
local horse
local patch
local grobb
local gluth
local thadd
local spiderHealth
local plagueHealth
local militaryHealth
local constructHealth
local spiderBoss
local plagueBoss
local militaryBoss
local constructBoss
local heiganDanceStart
----------MISC---------- ----------MISC----------
local notRealRazuv = 0
local hasShoutCast = 0
local phase = 0 local phase = 0
local shadesSpawned = 0 local icy = 8
local berserkTimer = mod:NewBerserkTimer(1140) local mana = 8
local necroticSpam = 0
local bloomSpam = 0
local warnFrost = 0
local frostPhase = 0
local fissure = 20
local shadeCounter = 0
-----CODE START----- -----CODE START-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
mod:phaseOne() icy = 8
berserkTimer:Start(1140) mana = 8
notRealRazuv = 1 warnFrost = 0
self.vb.phase = 1 frostPhase = 0
shadeCounter = 0
fissure = 20
self.vb.phase = 1
mod:ScheduleMethod(0-delay,"PhaseOne")
end end
function mod:phaseOne() function mod:PhaseOne()
phase = 1 timerPhase2:Start()
anub = 0 timerAbomination:Start(10)
faerlina = 0 timerBanshee:Start(25)
maexx = 0 self:ScheduleMethod(10, "Abomination")
noth = 0 self:ScheduleMethod(25, "Banshee")
heigan = 0 self:ScheduleMethod(178, "PhaseTwoTransition")
loatheb = 0
razuv = 0
gothik = 0
horse = 0
patch = 0
grobb = 0
gluth = 0
thadd = 0
spiderBoss = 0
plagueBoss = 0
militaryBoss = 0
constructBoss = 0
heiganDanceStart = 0
shadesSpawned = 0
hasShoutCast = 0
DBM.RangeCheck:Hide()
mod:phase2Transition()
mod:timerMajorWaveRepeat()
self:ScheduleMethod(30, "timerMajorWaveRepeat")
self:ScheduleMethod(60, "timerMajorWaveRepeat")
self:ScheduleMethod(90, "timerMajorWaveRepeat")
end end
function mod:timerMajorWaveRepeat() function mod:Abomination()
timer = 30 warnAbomination:Show()
warnMajorWave:Schedule(timer) timerAbomination:Start()
warnMajorWaveSoon:Schedule(timer-5) self:ScheduleMethod(30, "Abomination")
timerMajorWave:Start(timer)
end end
function mod:phase2Transition() function mod:Banshee()
timer = 180 warnBanshee:Show()
warnPhase2:Schedule(timer) timerBanshee:Start()
warnPhase2Soon:Schedule(timer-10) self:ScheduleMethod(30, "Banshee")
timerPhase2:Start(timer)
self:ScheduleMethod(timer, "phaseTwo")
end end
function mod:phaseTwo() function mod:PhaseTwoTransition()
phase = 2 self:UnscheduleMethod("Banshee")
self:UnscheduleMethod("Abomination")
timerAbomination:Stop()
timerBanshee:Stop()
timerPhase2Transition:Start()
end
function mod:PhaseTwo()
phase = 2
self.vb.phase = 2 self.vb.phase = 2
if self.Options.ShowRange then
mod:RangeTogglePhaseTwo()
end
-----SHADE SPAWNS-----
-- mod:timerNaxxShadeRepeat()
mod:phase3Transition()
-- timer = 34
-- self:ScheduleMethod(timer, "timerNaxxShadeRepeat")
-- self:ScheduleMethod(timer+60, "timerNaxxShadeRepeat")
-- self:ScheduleMethod(timer+120, "timerNaxxShadeRepeat")
-----HEALTH CHECK DEBUGS-----
-- local shade1 = UnitGUID("boss1")
-- local shade2 = UnitGUID("boss2")
-- local shade3 = UnitGUID("boss3")
-- local shade4 = UnitGUID("boss4")
-- mod:checkHealth()
end end
function mod:phase3Transition() function mod:PhaseThreeTransition()
timer = 600 timerDnD:Start(10)
warnPhase3:Schedule(timer) timerPhase3:Start()
warnPhase3Soon:Schedule(timer-10)
timerPhase3:Start(timer)
self:ScheduleMethod(timer, "phaseThree")
end end
function mod:phaseThree() function mod:PhaseThree()
phase = 3 phase = 3
self.vb.phase = 3 self.vb.phase = 3
if self.Options.ShowRange then timerDnD:Start()
mod:RangeTogglePhaseThree() timerNextManaBomb:Start(20)
end timerFissure:Start(10)
timerBlast:Start(45) timerFlashFreeze:Start()
timerMana:Start(30) self:ScheduleMethod(20, "DnD")
timerChains:Start(90)
end end
function mod:SPELL_CAST_START() -- self:ScheduleMethod(10, "Fissure")
if args:IsSpellID(28478) and phase == 2 then -- Flash Freeze (2124587)
self:Unschedule("warnPhase3") -- Death and Decay (2124575) fixed
self:Unschedule("warnPhase3Soon") -- Shadow Fissure (2124579) fixed
self:UnscheduleMethod("phaseThree") -- Mana Bomb (2124572) fixed
timerPhase3:Stop() --[[ CHECK
mod:phaseThree() function mod:ShadowFissure()
end fissure = fissure + 1
timerFissure:Start(fissure)
self:ScheduleMod(fissure, "ShadowFissure")
end
]]--
function mod:FrostPhase()
self:UnscheduleMethod(44, "DnD")
timerDnD:Cancel(44)
timerFrostPhase:Start()
self:ScheduleMethod(45, "FrostPhaseFinished")
end end
-- function mod:timerNaxxShadeRepeat() function mod:FrostPhaseFinished()
-- if shadesSpawned == 0 then timerDnD:Start(25)
-- timer = 34 self:ScheduleMethod(25, "DnD")
-- warnNaxxShade:Schedule(timer) end
-- warnNaxxShadeSoon:Schedule(timer-10)
-- timerNaxxShade:Start(timer) function mod:DnD()
-- shadesSpawned = shadesSpawned+1 timerDnD:Start()
-- warnShout:Schedule(timer+16) warnDnD:Show()
-- warnShoutSoon:Schedule(timer+11) self:ScheduleMethod(20,"DnD")
-- timerShout:Start(timer+16) end
-- else
-- timer = 60 function mod:SPELL_CAST_START(args)
-- warnNaxxShade:Schedule(timer) end
-- warnNaxxShadeSoon:Schedule(timer-10)
-- timerNaxxShade:Start(timer)
-- shadesSpawned = shadesSpawned+1
-- if hasShoutCast == 0 then
-- warnShout:Schedule(timer+16)
-- warnShoutSoon:Schedule(timer+11)
-- timerShout:Start(timer+16)
-- end
-- end
-- end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
-----CONSTRICTING CHAINS----- -----CONSTRICTING CHAINS-----
if args:IsSpellID(1003114) then if args:IsSpellID(2124516) then
warnChains:Show(args.destName) warnChains:Show(args.destName)
-----SHADOW FISSURE-----
elseif args:IsSpellID(2124579) and DBM:AntiSpam(5,5) then
if args.destName == UnitName("player") then if args.destName == UnitName("player") then
specWarnFissure:Show()
else
warnFissure:Show()
end end
end timerFissure:Start()
-----HARVEST SOUL-----
if args:IsSpellID(28679) then
if args:IsPlayer() then
timer = 15
warnHarvestSoon:Schedule(timer-5)
warnHarvest:Schedule(timer)
timerHarvest:Start(timer)
end
end
-----SEEING RED-----
if args:IsSpellID(1003255) then
warnSeeingRed:Show()
end
-----GASTRIC AFFLICTION-----
if args:IsSpellID(1003086) then
warnGastric:Show(args.destName)
if args.destName == UnitName("player") then
specWarnGastric:Show()
end
end
-----VOID ZONE-----
if args:IsSpellID(28865) then
if args.destName == UnitName("player") then
specWarnVoid:Show()
end
end
-----DEATH AND DECAY----- -----DEATH AND DECAY-----
if args:IsSpellID(1003113) then elseif args:IsSpellID(2124575, 2124576, 2124577, 2124578) then
if args.destName == UnitName("player") then if args.destName == UnitName("player") then
specWarnDnD:Show() specWarnDnD:Show()
end end
elseif args:IsSpellID(2124512) then
warnPosess:Show(args.destName)
timerPosess:Start(args.destName)
elseif args:IsSpellID(2124506) then
self:SetIcon(args.destName, icy)
icy = icy - 1
elseif args:IsSpellID(2124587,2124588,2124589, 2124590) then
timerFlashFreeze:Start()
warnFlashFreezeSoon:Schedule(25)
elseif args:IsSpellID(2124572) then
if args:IsPlayer() then
SendChatMessage("Mana Bomb on "..UnitName("PLAYER").."!", "Say")
specWarnManaBomb:Show()
else
warnManaBomb:Show(args.destName)
timerNextManaBomb:Start()
timerManaBomb:Start()
self:SetIcon(args.destName, mana)
mana = mana - 1
end
end end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
-----HARVEST SOUL-----
if args:IsSpellID(28679) then
if args:IsPlayer() then
timer = 15
warnHarvestSoon:Schedule(timer-5)
warnHarvest:Schedule(timer)
timerHarvest:Start(timer)
end
end
-----GASTRIC AFFLICTION-----
if args:IsSpellID(1003086) then
warnGastric:Show(args.destName)
if args.destName == UnitName("player") then
specWarnGastric:Show()
end
end
-----VOID ZONE-----
if args:IsSpellID(28865) then
if args.destName == UnitName("player") then
specWarnVoid:Show()
end
end
-----DEATH AND DECAY-----
if args:IsSpellID(1003113) then
if args.destName == UnitName("player") then
specWarnDnD:Show()
end
end
end end
function mod:SPELL_CAST_SUCCESS(args) function mod:SPELL_CAST_SUCCESS(args)
----------SPELL TRACKING----------
-----DISRUPTING SHOUT-----
if args:IsSpellID(29107) then
if notRealRazuv == 1 then
timer = 16
warnShout:Show()
warnShoutSoon:Schedule(timer-5)
timerShout:Start(timer)
hasShoutCast = 1
end
-----WAIL OF SOULS-----
elseif args:IsSpellID(1003115) then
warnWailSoul:Show()
-----FROST BLAST-----
elseif args:IsSpellID(29879) then
warnBlast:Show()
timerBlast:Start(45)
-----MANA DETONATION-----
elseif args:IsSpellID(27819) then
warnMana:Show()
timerMana:Start(30)
-----CHAINS-----
elseif args:IsSpellID(28410) then
warnChains:Show()
timerChains:Start(90)
end
--[[
----------BOSS CHECKING TOOLS----------
-----ANUB-----
if args:IsSpellID(28783) and args:sourceGUID(shade1) and spiderBoss == 0 then
spiderBoss = 1
anub = 1
elseif args:IsSpellID(28783) and args:sourceGUID(shade2) and spiderBoss == 0 then
spiderBoss = 2
anub = 2
elseif args:IsSpellID(28783) and args:sourceGUID(shade3) and spiderBoss == 0 then
spiderBoss = 3
anub = 3
elseif args:IsSpellID(28783) and args:sourceGUID(shade4) and spiderBoss == 0 then
spiderBoss = 4
anub = 4
end
-----NOTH-----
if args:IsSpellID(29213) and args:sourceGUID(shade1) and plagueBoss == 0 then
plagueBoss = 1
noth = 1
elseif args:IsSpellID(29213) and args:sourceGUID(shade2) and plagueBoss == 0 then
plagueBoss = 2
noth = 2
elseif args:IsSpellID(29213) and args:sourceGUID(shade3) and plagueBoss == 0 then
plagueBoss = 3
noth = 3
elseif args:IsSpellID(29213) and args:sourceGUID(shade4) and plagueBoss == 0 then
plagueBoss = 4
noth = 4
end
-----RAZUVIOUS-----
if args:IsSpellID(29107) and args:sourceGUID(shade1) and militaryBoss == 0 then
militaryBoss = 1
razuv = 1
elseif args:IsSpellID(29107) and args:sourceGUID(shade2) and militaryBoss == 0 then
militaryBoss = 2
razuv = 2
elseif args:IsSpellID(29107) and args:sourceGUID(shade3) and militaryBoss == 0 then
militaryBoss = 3
razuv = 3
elseif args:IsSpellID(29107) and args:sourceGUID(shade4) and militaryBoss == 0 then
militaryBoss = 4
razuv = 4
end
-----PATCHWERK-----
if args:IsSpellID(28308) and args:sourceGUID(shade1) and constructBoss == 0 then
constructBoss = 1
patch = 1
elseif args:IsSpellID(28308) and args:sourceGUID(shade2) and constructBoss == 0 then
constructBoss = 2
patch = 2
elseif args:IsSpellID(28308) and args:sourceGUID(shade3) and constructBoss == 0 then
constructBoss = 3
patch = 3
elseif args:IsSpellID(28308) and args:sourceGUID(shade4) and constructBoss == 0 then
constructBoss = 4
patch = 4
end
]]--
end end
function mod:UNIT_HEALTH(uId) function mod:UNIT_HEALTH(uId)
--[[ if self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.80 and warnFrost == 0 then
if phase == 2 then warnFrost = 1
-----SPIDER WING----- warnFrostSoon:Show()
if spiderBoss == 1 then elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and warnFrost == 1 then
spiderHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100; warnFrost = 2
elseif spiderBoss == 2 then warnFrostSoon:Show()
spiderHealth = math.max(0, UnitHealth("boss2")) / math.max(1, UnitHealthMax("boss2")) * 100; elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.75 and frostPhase == 0 then
elseif spiderBoss == 3 then frostPhase = 1
spiderHealth = math.max(0, UnitHealth("boss3")) / math.max(1, UnitHealthMax("boss3")) * 100; self:ScheduleMethod(43, "FrostPhase")
elseif spiderBoss == 4 then timerKTteleport:Start(43)
spiderHealth = math.max(0, UnitHealth("boss4")) / math.max(1, UnitHealthMax("boss4")) * 100; elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.50 and frostPhase == 1 then
end frostPhase = 2
-----PLAGUE WING----- self:ScheduleMethod(43, "FrostPhase")
if plagueBoss == 1 then timerKTteleport:Start(43)
plagueHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100; elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.40 and frostPhase == 2 then
elseif plagueBoss == 2 then frostPhase = 3
plagueHealth = math.max(0, UnitHealth("boss2")) / math.max(1, UnitHealthMax("boss2")) * 100; warnAddsSoon:Show()
elseif plagueBoss == 3 then
plagueHealth = math.max(0, UnitHealth("boss3")) / math.max(1, UnitHealthMax("boss3")) * 100;
elseif plagueBoss == 4 then
plagueHealth = math.max(0, UnitHealth("boss4")) / math.max(1, UnitHealthMax("boss4")) * 100;
end
-----MILITARY WING-----
if militaryBoss == 1 then
militaryHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
elseif militaryBoss == 2 then
militaryHealth = math.max(0, UnitHealth("boss2")) / math.max(1, UnitHealthMax("boss2")) * 100;
elseif militaryBoss == 3 then
militaryHealth = math.max(0, UnitHealth("boss3")) / math.max(1, UnitHealthMax("boss3")) * 100;
elseif militaryBoss == 4 then
militaryHealth = math.max(0, UnitHealth("boss4")) / math.max(1, UnitHealthMax("boss4")) * 100;
end
-----CONSTRUCT WING-----
if constructBoss == 1 then
constructHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
elseif constructBoss == 2 then
constructHealth = math.max(0, UnitHealth("boss2")) / math.max(1, UnitHealthMax("boss2")) * 100;
elseif constructBoss == 3 then
constructHealth = math.max(0, UnitHealth("boss3")) / math.max(1, UnitHealthMax("boss3")) * 100;
elseif constructBoss == 4 then
constructHealth = math.max(0, UnitHealth("boss4")) / math.max(1, UnitHealthMax("boss4")) * 100;
end
end
]]--
end
function mod:checkHealth()
--[[
if phase == 2 then
self:ScheduleMethod(1, checkHealth)
end
-----SPIDER WING-----
if spiderHealth < 67 then
anub = spiderBoss
elseif spiderHealth > 67 and spiderHealth < 34 then
anub = 0
faerlina = spiderBoss
elseif spiderHealth > 34 and spiderHealth < 1 then
faerlina = 0
maexx = spiderBoss
timer = 8
timerSpider:Start(timer)
self:ScheduleMethod(timer, "spiderTimerRepeat")
elseif spiderHealth == 0 then
maexx = 0
end
-----PLAGUE WING-----
if plagueHealth < 67 then
noth = plagueBoss
elseif plagueHealth > 67 and plagueHealth < 34 then
noth = 0
heigan = plagueBoss
if heiganDanceStart == 0 then
heiganDanceStart = 1
timer = 21
timerDance:Start(timer)
warnDance:Schedule(timer)
warnDanceSoon:Schedule(timer-5)
end
elseif plagueHealth > 34 and spiderHealth < 1 then
heigan = 0
loatheb = plagueBoss
elseif plagueHealth == 0 then
loatheb = 0
end
-----MILITARY WING-----
if militaryHealth < 67 then
razuv = militaryBoss
elseif militaryHealth > 67 and militaryHealth < 34 then
razuv = 0
gothik = militaryBoss
timer = 15
warnHarvestSoon:Schedule(timer-5)
warnHarvest:Schedule(timer)
timerHarvest:Start(timer)
elseif militaryHealth > 34 and militaryHealth < 1 then
gothik = 0
horse = militaryBoss
warnHarvestSoon:Cancel()
warnHarvest:Cancel()
timerHarvest:Stop()
elseif militaryHealth == 0 then
horse = 0
end
-----CONSTRUCT WING-----
if constructHealth < 75 then
patch = constructBoss
elseif constructHealth > 75 and constructHealth < 50 then
patch = 0
grobb = constructBoss
elseif constructHealth > 50 and constructHealth < 25 then
grobb = 0
gluth = constructBoss
elseif constructHealth > 25 and constructHealth < 1 then
gluth = 0
thadd = constructBoss
elseif constructHealth == 0 then
thadd = 0
end
]]--
end
function mod:spiderTimerRepeat()
if maexx == 0 then
else
timer = 16
timerSpider:Start(timer)
self:ScheduleMethod(timer, "spiderTimerRepeat")
end end
end end
function mod:RangeTogglePhaseTwo(show) function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if show then if msg == L.EmotePhase3 or msg:find(L.EmotePhase3) then
DBM.RangeCheck:Show(15) self:ScheduleMethod(0, "PhaseThree")
else
DBM.RangeCheck:Hide()
end end
end end
function mod:RangeTogglePhaseThree(show) function mod:CHAT_MSG_MONSTER_EMOTE(msg)
if show then if msg == L.EmotePhase3 or msg:find(L.EmotePhase3) then
DBM.RangeCheck:Show(10) self:ScheduleMethod(0, "PhaseThree")
else
DBM.RangeCheck:Hide()
end end
end end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15928 then
icy = 8
elseif (cid >= 26614 and cid <= 26629) then
shadeCounter = shadeCounter + 1
if (mod:IsDifficulty("heroic10") or mod:IsDifficulty("heroic25")) and shadeCounter == 17 then
self:ScheduleMethod(0, "phaseThreeTransition")
elseif not (mod:IsDifficulty("heroic10") or mod:IsDifficulty("heroic25")) and shadeCounter == 16 then
self:ScheduleMethod(0, "phaseThreeTransition")
end
end
if cid == 26614 then --Anub
timerLocust:Stop()
timerImpale:Stop()
elseif cid == 26615 then -- Faerlina
timerSadism:Stop()
elseif cid == 26617 then -- Noth
timerCurse:Stop()
elseif cid == 26619 then -- Loatheb
timerNextDeathbloom:Stop()
timerDeathblooming:Stop()
timerNecrotic:Stop()
elseif cid == 26620 then -- Raz
timerenrage:Stop()
timerKnife:Stop()
elseif (cid >= 26622 and cid <= 2665) then -- Horsemen
timerMark:Stop()
timerNextHolyWrath:Stop()
timerNextDeepChill:Stop()
timerNextMeteor:Stop()
timerNextFamine:Stop()
elseif cid == 26626 then -- Patch
timerGastric:Stop()
timerGastricSelf:Stop()
elseif cid == 26627 then -- Grobb
timerNextInjection:Stop()
timerSpray:Stop()
elseif cid == 26628 then -- Gluth
timerDecimate:Stop()
elseif cid == 26629 then -- Thadd
timerNextShift:Stop()
self:UnscheduleMethod("ShiftingPolarity")
elseif cid == 26630 then -- Sapph
timerNextBellowing:Stop()
end
end
function mod:OnCombatEnd()
self:UnscheduleMethod("DnD")
timerLocust:Stop()
timerImpale:Stop()
timerSadism:Stop()
timerCurse:Stop()
timerNextDeathbloom:Stop()
timerDeathblooming:Stop()
timerNecrotic:Stop()
timerenrage:Stop()
timerKnife:Stop()
timerMark:Stop()
timerNextHolyWrath:Stop()
timerNextDeepChill:Stop()
timerNextMeteor:Stop()
timerNextFamine:Stop()
timerGastric:Stop()
timerGastricSelf:Stop()
timerNextInjection:Stop()
timerSpray:Stop()
timerDecimate:Stop()
timerNextShift:Stop()
timerNextBellowing:Stop()
end
+116 -70
View File
@@ -7,102 +7,148 @@ mod:RegisterCombat("combat")
mod:EnableModel() mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"CHAT_MSG_MONSTER_EMOTE",
"CHAT_MSG_RAID_BOSS_EMOTE", "CHAT_MSG_RAID_BOSS_EMOTE",
"CHAT_MSG_MONSTER_EMOTE",
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"PLAYER_ALIVE" "SPELL_CAST_START",
"PLAYER_ALIVE",
"UNIT_DIED"
) )
-----DRAIN LIFE-----
local warnDrainLifeNow = mod:NewSpellAnnounce(28542, 2)
local warnDrainLifeSoon = mod:NewSoonAnnounce(28542, 1)
local timerDrainLife = mod:NewCDTimer(22, 28542)
-----DEEP BREATH----- -----DEEP BREATH-----
local warnAirPhaseSoon = mod:NewAnnounce("WarningAirPhaseSoon", 3, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") local warnDeepBreath = mod:NewSpecialWarning("WarningDeepBreath")
local warnAirPhaseNow = mod:NewAnnounce("WarningAirPhaseNow", 4, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") local timerDeepBreath = mod:NewTimer(16.5, "Deep Breath", 2106817)
local warnLanded = mod:NewAnnounce("WarningLanded", 4, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") -----AIR PHASE------
local warnDeepBreath = mod:NewSpecialWarning("WarningDeepBreath") local warnAirPhaseSoon = mod:NewAnnounce("WarningAirPhaseSoon", 3, 2124314)
local timerLanding = mod:NewTimer(28.5, "TimerLanding", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") local warnAirPhaseNow = mod:NewAnnounce("WarningAirPhaseNow", 4, 2124314)
local timerAirPhase = mod:NewTimer(66, "TimerAir", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") local timerAirPhase = mod:NewTimer(120, "TimerAir", 2124314)
local timerIceBlast = mod:NewTimer(9.3, "TimerIceBlast", 15876) local warnLanded = mod:NewAnnounce("WarningLanded", 4, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp")
local timerLanding = mod:NewTimer(26, "TimerLanding", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp")
----ICE SPIKES & BLIZZARD----
local specWarningBlizzard = mod:NewSpecialWarningMove(2124328, 2)
-- FROST BREATH--
local timerNextBreath = mod:NewNextTimer(20, 2124322)
local timerBreath = mod:NewCastTimer(2, 2124322)
----BELLOWING ROAR----
local timerBellowing = mod:NewCastTimer(5, 2124332)
local timerNextBellowing = mod:NewNextTimer(45, 2124332)
local timerTerrified = mod:NewTimer(5, "Terrified!", 2124332)
local specWarnBellowing = mod:NewSpecialWarningSpell(2124332, 2)
--- CURSE OF SAPPHIRON----
local timerNextCurse = mod:NewNextTimer(30, 2124338)
local warnCurse = mod:NewTargetAnnounce(2124338, 2)
----FROST TOMB----
local specWarnTombTarget = mod:NewSpecialWarningYou(2124344, 2)
local warnTombTarget = mod:NewTargetAnnounce(2124344, 2)
mod:AddBoolOption("WarningIceblock", true, "announce") mod:AddBoolOption("WarningIceblock", true, "announce")
-----MISC----- -----MISC-----
local noTargetTime = 0
local isFlying = false -- Frost Breath (2124323, 2124324, 2124325, 2124326)
-- Curse of Sapphiron (2124338)
-- Bellowing Roar (2124332)
-- Bellowing Roar effect ()
-- Frost Tomb target (2124344)
-- Frost Tomb (2124309)
-- Blizzard (2124328, 2124329, 2124330, 2124331)
-- Ice Spikes (2124333, 2124334, 2124335, 2124336)
-- "%s lifts off into the air!"
-- "%s takes a deep breath."
-- "%s resumes his attacks!"
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
noTargetTime = 0 warnAirPhaseSoon:Schedule(80-delay)
isFlying = false timerAirPhase:Start(90-delay)
warnAirPhaseSoon:Schedule(38.5 - delay) timerNextBreath:Start(-delay)
timerAirPhase:Start(48.5 - delay) timerNextCurse:Start(15-delay)
end end
function mod:GroundPhase()
warnAirPhaseSoon:Schedule(110)
warnLanded:Show()
timerAirPhase:Start()
timerNextBreath:Start()
timerNextCurse:Start(15)
end
function mod:AirPhase()
timerLanding:Start()
warnLanded:Schedule(27)
timerDeepBreath:Start()
warnDeepBreath:Schedule(16.5)
timerNextBreath:Stop()
timerNextCurse:Stop()
timerNextBellowing:Stop()
timerNextBellowing:Start(27.5)
end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(28522) and args:IsPlayer() and self.Options.WarningIceblock then if args:IsSpellID(2124344) then
SendChatMessage(L.WarningYellIceblock, "YELL") if args:IsPlayer() then
specWarnTombTarget:Show()
SendChatMessage("Ice Tomb incoming on "..UnitName("PLAYER").."!", "Say")
else
warnTombTarget:Show(args.destName)
end
elseif args:IsSpellID(2124328) and args.IsPlayer() then
specWarningBlizzard:Show()
elseif args:IsSpellID(2124338) then
timerNextCurse:Start()
warnCurse:Show(args.destName)
elseif args:IsSpellID(2124332) then
timerTerrified:Start()
end end
end end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(28542, 55665) then -- Life Drain function mod:SPELL_CAST_START(args)
warnDrainLifeNow:Show() if args:IsSpellID(2124332) then
warnDrainLifeSoon:Schedule(18.5) specWarnBellowing:Show()
timerDrainLife:Start() timerBellowing:Start()
timerNextBellowing:Start()
timerTerrified:Schedule(4.5)
end
if args:IsSpellID(2124322) then
timerNextBreath:Start()
timerBreath:Start()
end
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg == L.EmoteFlying or msg:find(L.EmoteFlying) then
self:ScheduleMethod(0, "AirPhase")
elseif msg == L.EmoteLanding or msg:find(L.EmoteLanding) then
self:ScheduleMethod(0, "GroundPhase")
end end
end end
function mod:CHAT_MSG_MONSTER_EMOTE(msg) function mod:CHAT_MSG_MONSTER_EMOTE(msg)
if msg == L.EmoteBreath or msg:find(L.EmoteBreath) then if msg == L.EmoteFlying or msg:find(L.EmoteFlying) then
self:SendSync("DeepBreath") self:ScheduleMethod(0, "AirPhase")
elseif msg == L.EmoteLanding or msg:find(L.EmoteLanding) then
self:ScheduleMethod(0, "GroundPhase")
end end
end end
mod.CHAT_MSG_RAID_BOSS_EMOTE = mod.CHAT_MSG_MONSTER_EMOTE -- used to be a normal emote function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
function mod:OnSync(event) if cid == 15989 or cid == 26630 then
if event == "DeepBreath" then timerAirPhase:Stop()
timerIceBlast:Show() timerLanding:Stop()
timerLanding:Update(14) timerNextBellowing:Stop()
self:ScheduleMethod(14.5, "Landing") timerNextBreath:Stop()
warnDeepBreath:Show() timerNextCurse:Stop()
end end
end end
function mod:Landing() function mod:OnCombatEnd()
warnAirPhaseSoon:Schedule(56) timerAirPhase:Stop()
warnLanded:Show() timerLanding:Stop()
timerAirPhase:Start() timerNextBellowing:Stop()
timerNextBreath:Stop()
timerNextCurse:Stop()
end end
local function resetIsFlying()
isFlying = false
end
mod:RegisterOnUpdateHandler(function(self, elapsed)
if not self:IsInCombat() then return end
local foundBoss, target
for i = 1, GetNumRaidMembers() do
local uId = "raid"..i.."target"
if self:GetUnitCreatureId(uId) == 15989 and UnitAffectingCombat(uId) then
target = UnitName(uId.."target")
foundBoss = true
break
end
end
if foundBoss and not target then
noTargetTime = noTargetTime + elapsed
elseif foundBoss then
noTargetTime = 0
end
if noTargetTime > 0.5 and not isFlying then
noTargetTime = 0
isFlying = true
self:Schedule(60, resetIsFlying)
timerDrainLife:Cancel()
timerAirPhase:Cancel()
warnAirPhaseNow:Show()
timerLanding:Start()
end
end, 0.2)
+45 -26
View File
@@ -8,52 +8,40 @@ mod:RegisterEvents(
"SPELL_AURA_APPLIED", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul. "SPELL_AURA_APPLIED", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul.
"SPELL_AURA_APPLIED_DOSE", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul. "SPELL_AURA_APPLIED_DOSE", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul.
"UNIT_DIED", "UNIT_DIED",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"UNIT_HEALTH",
"UNIT_DIED",
"CHAT_MSG_MONSTER_YELL"
) )
-----ADD DEATHS----- -----ADD DEATHS-----
local warnRiderDown = mod:NewAnnounce("Unrelenting Rider Killed", 2, 36461, nil, "Show a warning when an Unrelenting Rider is killed") local warnRiderDown = mod:NewAnnounce("Unrelenting Rider Killed", 2, 36461, nil, "Show a warning when an Unrelenting Rider is killed")
local warnKnightDown = mod:NewAnnounce("Unrelenting Death Knight Killed", 2, 36461, nil, "Show a warning when an Unrelenting Rider is killed") local warnKnightDown = mod:NewAnnounce("Unrelenting Death Knight Killed", 2, 36461, nil, "Show a warning when an Unrelenting Rider is killed")
-----HARVEST SOUL----- -----HARVEST SOUL-----
local warnHarvestSoon = mod:NewSoonAnnounce(28679, 3) local warnHarvestSoon = mod:NewSoonAnnounce(28679, 2)
local warnHarvest = mod:NewSpellAnnounce(28679, 2) local warnHarvest = mod:NewSpellAnnounce(28679, 2)
local timerHarvest = mod:NewNextTimer(15, 28679) local timerHarvest = mod:NewNextTimer(15, 28679)
-----COMBAT START---- -----COMBAT START----
local timerCombatStart = mod:NewTimer(25, "Combat Starts", 2457, nil, "Show timer for the start of combat") local timerCombatStart = mod:NewTimer(25, "Combat Starts", 2457, nil, "Show timer for the start of combat")
local warnCombatStartSoon = mod:NewAnnounce("Combat Starts Soon", 2, 2457, nil, "Show pre-warning for the end of the Safety Dance") local warnCombatStartSoon = mod:NewAnnounce("Combat Starts Soon", 2, 2457, nil, "Show pre-warning for the end of the Safety Dance")
local warnCombatStart = mod:NewAnnounce("Combat Starts Now", 3, 2457, nil, "Show warning for the end of the Safety Dance") local warnCombatStart = mod:NewAnnounce("Combat Starts Now", 2, 2457, nil, "Show warning for the end of the Safety Dance")
-----GOTHIK ARRIVES---- -----GOTHIK ARRIVES----
local timerGothik = mod:NewTimer(100, "Gothik Arrives", 46573, nil, "Show timer for the arrival of Gothik") local timerGothik = mod:NewTimer(100, "Gothik Arrives", 46573, nil, "Show timer for the arrival of Gothik")
local warnGothikSoon = mod:NewAnnounce("Gothik Arrives Soon", 2, 46573, nil, "Show pre-warning for the arrival of Gothik") local warnGothikSoon = mod:NewAnnounce("Gothik Arrives Soon", 2, 46573, nil, "Show pre-warning for the arrival of Gothik")
local warnGothik = mod:NewAnnounce("Gothik Arrives Now", 3, 46573, nil, "Show warning for the arrival of Gothik") local warnGothik = mod:NewAnnounce("Gothik Arrives Now", 2, 46573, nil, "Show warning for the arrival of Gothik")
--------MISC--------
local phase = nil
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
self:ScheduleMethod(115, "HarvestSoul")
-----HARVEST SOUL-----
harvestSoulIntiialTimer = 115
warnHarvestSoon:Schedule(harvestSoulIntiialTimer-5)
warnHarvest:Schedule(harvestSoulIntiialTimer)
timerHarvest:Start(harvestSoulIntiialTimer)
-----COMBAT START----
combatStartTimer = 25
timerCombatStart:Start(combatStartTimer)
warnCombatStartSoon:Schedule(combatStartTimer-5)
warnCombatStart:Schedule(combatStartTimer)
-----GOTHIK ARRIVES----
gothikTimer = 100
timerGothik:Start(gothikTimer)
warnGothikSoon:Schedule(gothikTimer-5)
warnGothik:Schedule(gothikTimer)
end end
function mod:HarvestSoul() function mod:HarvestSoul()
timer = 15 timerHarvest:Start(20)
timerHarvest:Start(timer) warnHarvestSoon:Schedule(17)
warnHarvestSoon:Schedule(timer-3, 15) warnHarvest:Schedule(20)
warnHarvest:Schedule(timer) self:ScheduleMethod(20, "HarvestSoul")
self:ScheduleMethod(timer, "HarvestSoul")
end end
function mod:UNIT_DIED(args) function mod:UNIT_DIED(args)
@@ -65,4 +53,35 @@ function mod:UNIT_DIED(args)
warnKnightDown:Show() warnKnightDown:Show()
end end
end end
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if (msg == L.yell or msg:find(L.yell)) and phase == nil then
self:ScheduleMethod(100, "HarvestSoul")
phase = 1
-----HARVEST SOUL-----
warnHarvestSoon:Schedule(115)
warnHarvest:Schedule(120)
timerHarvest:Start(120)
-----COMBAT START----
timerCombatStart:Start(25)
warnCombatStartSoon:Schedule(20)
warnCombatStart:Schedule(25)
-----GOTHIK ARRIVES----
timerGothik:Start(100)
warnGothikSoon:Schedule(95)
warnGothik:Schedule(100)
end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 16060 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.11 and phase ==1 then
self:UnscheduleMethod("HarvestSoul")
timerHarvest:Stop()
phase = 2
end
end
function mod:OnCombatEnd()
self:UnscheduleMethod("HarvestSoul")
end end
+128 -6
View File
@@ -7,16 +7,39 @@ mod:RegisterCombat("combat", 16063, 16064, 16065, 30549)
mod:EnableModel() mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"SPELL_CAST_START",
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"UNIT_DIED"
) )
-----MARKS----- -----MARKS-----
local warnMarkSoon = mod:NewAnnounce("WarningMarkSoon", 1, 28835, false) local warnMarkSoon = mod:NewAnnounce("WarningMarkSoon", 1, 28835, false)
local warnMarkNow = mod:NewAnnounce("WarningMarkNow", 2, 28835) local warnMarkNow = mod:NewAnnounce("WarningMarkNow", 2, 28835)
local specWarnMarkOnPlayer = mod:NewSpecialWarning("SpecialWarningMarkOnPlayer", nil, false, true) local specWarnMarkOnPlayer = mod:NewSpecialWarning("SpecialWarningMarkOnPlayer", nil, false, true)
local specWarnHolyWrathYou = mod:NewSpecialWarningYou(2124141,2)
local warnHolyWrath = mod:NewTargetAnnounce(2124141,2)
local specWarnDeepChillYou = mod:NewSpecialWarningYou(2124167,2)
local warnDeepChill = mod:NewTargetAnnounce(2124167,2)
local specWarnMeteorYou = mod:NewSpecialWarningYou(2124128,2)
local warnMeteor = mod:NewTargetAnnounce(2124128,2)
local specWarnFamineYou = mod:NewSpecialWarningYou(2124166,2)
local warnFamine = mod:NewTargetAnnounce(2124166,2)
----timers----
local timerMark = mod:NewTimer(12, "Mark of the Apocalypse", 2124107)
local timerHolyWrath = mod:NewTargetTimer(3.8, 2124141)
local timerNextHolyWrath = mod:NewNextTimer(20, 2124141)
local timerDeepChill = mod:NewTargetTimer(3.8, 2124167)
local timerNextDeepChill = mod:NewNextTimer(20, 2124167)
local timerMeteor = mod:NewTargetTimer(7.8, 2124128)
local timerNextMeteor = mod:NewNextTimer(20, 2124128)
local timerFamine = mod:NewTargetTimer(3.8, 2124166)
local timerNextFamine = mod:NewNextTimer(20, 2124166)
-----MISC----- -----MISC-----
local berserkTimer = mod:NewBerserkTimer(600) local berserkTimer = mod:NewBerserkTimer(606)
local meteorTarget = nil
mod:AddBoolOption("HealthFrame", true) mod:AddBoolOption("HealthFrame", true)
mod:SetBossHealthInfo( mod:SetBossHealthInfo(
16064, L.Korthazz, 16064, L.Korthazz,
@@ -29,21 +52,120 @@ local markCounter = 0
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
berserkTimer:Start() berserkTimer:Start()
timerMark:Start(18-delay)
timerNextMeteor:Start(21-delay)
timerNextDeepChill:Start(11-delay)
timerNextHolyWrath:Start(25-delay)
timerNextFamine:Start(16-delay)
markCounter = 0 markCounter = 0
end end
function mod:Meteor()
local myName = UnitName("player")
if meteorTarget == myName then
specWarnMeteorYou:Show()
SendChatMessage("Meteor on "..UnitName("PLAYER").."!", "Say")
else
warnMeteor:Show(meteorTarget)
end
timerMeteor:Start(meteorTarget)
timerNextMeteor:Start()
self:SetIcon(meteorTarget, 7, 8)
end
function mod:DeepChill()
local targetDC = mod:GetBossTarget(30549) or mod:GetBossTarget(26622)
if targetDC == UnitName("player") then
specWarnDeepChillYou:Show()
SendChatMessage("Deep Chill on "..UnitName("PLAYER").."!", "Say")
else
warnDeepChill:Show(targetDC)
end
timerDeepChill:Start(targetDC)
timerNextDeepChill:Start()
self:SetIcon(targetDC, 6, 4)
end
function mod:HolyWrath()
local targetHW = mod:GetBossTarget(16063) or mod:GetBossTarget(26624)
if targetHW == UnitName("player") then
specWarnHolyWrathYou:Show()
SendChatMessage("Holy Wrath on "..UnitName("PLAYER").."!", "Say")
else
warnHolyWrath:Show(targetHW)
end
timerHolyWrath:Start(targetHW)
timerNextHolyWrath:Start()
self:SetIcon(targetHW, 1, 4)
end
function mod:Famine()
local famineTarget = mod:GetBossTarget(16065) or mod:GetBossTarget(26625) --Finds target of boss (if exsists) otherwise, find target of shade (if exists)
if famineTarget == UnitName("player") then --if target == player
specWarnFamineYou:Show()
SendChatMessage("Field of Famine on "..UnitName("PLAYER").."!", "Say")
else
warnFamine:Show(famineTarget)
end
timerFamine:Start(famineTarget) --we want timers to start even if player is the target, you had the timers only in the "if not player".
timerNextFamine:Start()
self:SetIcon(famineTarget, 3, 4)
end
local markSpam = 0 local markSpam = 0
function mod:SPELL_CAST_SUCCESS(args) function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(28832, 28833, 28834, 28835) and (GetTime() - markSpam) > 5 then if args:IsSpellID(2124103,2124107,2124111,2124115) and (GetTime() - markSpam) > 5 then
markSpam = GetTime() markSpam = GetTime()
markCounter = markCounter + 1 markCounter = markCounter + 1
end end
end end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2124141) then
self:ScheduleMethod(0.25, "HolyWrath")
end
if args:IsSpellID(2124167) then
self:ScheduleMethod(0.25, "DeepChill")
end
if args:IsSpellID(2124166) then
self:ScheduleMethod(0.25, "Famine")
end
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2124128) then
self:ScheduleMethod(0.25, "Meteor")
meteorTarget = args.destName
elseif args:IsSpellID(2124103, 2124104, 2124105, 2124106) or args:IsSpellID(2124107, 2124108, 2124109, 2124110) or args:IsSpellID(2124111, 2124112, 2124113, 2124114) or args:IsSpellID(2124115, 2124116, 2124117, 2124118) then
timerMark:Start()
end
end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(28832, 28833, 28834, 28835) and args:IsPlayer() then if args:IsSpellID(2124103,2124107,2124111,2124115) and args:IsPlayer() then
if args.amount >= 4 then if args.amount >= 3 then
specWarnMarkOnPlayer:Show(args.spellName, args.amount) specWarnMarkOnPlayer:Show(args.spellName, args.amount)
end end
elseif args:IsSpellID(2124103, 2124104, 2124105, 2124106) or args:IsSpellID(2124107, 2124108, 2124109, 2124110) or args:IsSpellID(2124111, 2124112, 2124113, 2124114) or args:IsSpellID(2124115, 2124116, 2124117, 2124118) then
timerMark:Start()
end end
end end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 16063 or 26624 then
timerNextHolyWrath:Stop()
end
if cid == 16064 or 26623 then
timerNextMeteor:Stop()
end
if cid == 16065 or 26625 then
timerNextFamine:Stop()
end
if cid == 30549 or 26622 then
timerNextDeepChill:Stop()
end
if cid >= 26622 and cid <= 26625 then
timerMark:Stop()
end
end
+119 -85
View File
@@ -10,122 +10,156 @@ mod:SetBossHealthInfo(
) )
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"SPELL_CAST_START", "SPELL_CAST_START",
"UNIT_HEALTH", "UNIT_HEALTH",
"PLAYER_ALIVE" "UNIT_DIED",
"PLAYER_ALIVE",
"SPELL_MISSED"
) )
-----DISRUPTING SHOUT----- -----DISRUPTING SHOUT-----
local warnShoutNow = mod:NewSpellAnnounce(29107, 2) local timerShout = mod:NewCDTimer(8, 2123920)
local warnShoutSoon = mod:NewSoonAnnounce(29107, 3) -----Break Unholy Blade-----
local timerShout = mod:NewCDTimer(10, 29107) local warnUnholyBladeNow = mod:NewSpellAnnounce(2123928, 2)
local warnShoutNowBackup = mod:NewSpellAnnounce(29107, 2) local warnUnholyBladeSoon = mod:NewSoonAnnounce(2123928, 2)
local warnShoutSoonBackup = mod:NewSoonAnnounce(29107, 3) local timerUnholyBlade = mod:NewNextTimer(30, 2123928)
local timerShoutBackup = mod:NewCDTimer(10, 29107) local timerCastUnholyBlade = mod:NewCastTimer(3, 2123928)
-----SHADOW BURST-----
local warnShadowBurstNow = mod:NewSpellAnnounce(1003108, 2)
local warnShadowBurstSoon = mod:NewSoonAnnounce(1003108, 3)
local timerShadowBurst = mod:NewNextTimer(25, 1003108)
-----JAGGED KNIFE----- -----JAGGED KNIFE-----
local warnKnifeNow = mod:NewTargetAnnounce(55550, 2) local warnKnifeNow = mod:NewTargetAnnounce(2123924, 2)
local specWarnKnife = mod:NewSpecialWarningSpell(55550, nil, nil, nil, 10) local timerKnife = mod:NewNextTimer(15, 2123924)
-----BRUISING BLOW----- -----Death Strike-----
local warnBlowNow = mod:NewSpellAnnounce(26613, 2) local timerDeathStrike = mod:NewNextTimer(15,2123919)
local warnBlowSoon = mod:NewSoonAnnounce(26613, 3) local warnDeathStrike = mod:NewCastAnnounce(2123919)
local timerBlow = mod:NewNextTimer(15, 26613) local specwarnDeathStrike = mod:NewSpecialWarningStack(2123919, 2)
-----CURSE OF FEEBLENESS----- --------Strikes--------------
local warnCurseNow = mod:NewSpellAnnounce(1003253, 2) local timerPlagueStrike = mod:NewTimer(12, "Plague Strike active", 2123905)
local warnCurseEndSoon = mod:NewSoonAnnounce(1003253, 3) local timerFrostStrike = mod:NewTimer(12, "Frost Strike active", 2123904)
local timerCurse = mod:NewBuffActiveTimer(120, 1003253)
-----MISC----- -----MISC-----
local razHealth local prewarn
local phase local phase
local notKT = 0
local warnPhase2 = mod:NewPhaseAnnounce(2) local warnPhase2 = mod:NewPhaseAnnounce(2)
local warnPhase2Soon = mod:NewAnnounce("Prepare to stack for Anti-Magic Zone!", 1, 2123928, nil, "Show pre-warning for Phase 2")
local timerenrage = mod:NewTimer(180, "Enrage", 2123914)
-----PROG NOTES-------
--"Brake Unholy Blade" (2123928) - vet ikke timer
-- 2123905,"Plague Strike" || SPELL_CAST_SUCCESS
--2123919,"Death Strike" || SPELL_CAST_START - vet ikke timer
-- 2123920 - Disrupting Shout || vet ikke timer
-- Frost Strike - (finn Spell ID). 12 sec, 20sec CD
-- finn timer Death Strike
-- finn timer Jagged Knife
-- finn timer Break Unholy Blade
-- fix trigger for p2
--
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
phase = 1 phase = 1
prewarn = 1
self.vb.phase = 1 self.vb.phase = 1
RealRazuv = 1 -----Break Unholy Blade-----
-----Shout----- timerUnholyBlade:Start(-delay)
warnShoutNow:Schedule(16 - delay) if mod:GetBossTarget(16061) ~= nil then
warnShoutSoon:Schedule(11 - delay) timerKnife:Start(-delay)
timerShout:Start(16 - delay) timerDeathStrike:Start(20-delay)
-----Shadow Burst----- end
warnShadowBurstNow:Schedule(25-delay) end
warnShadowBurstSoon:Schedule(20-delay)
timerShadowBurst:Start(25-delay) function mod:BreakUnholyBlade()
-----Bruising Blow----- warnUnholyBladeNow:Show()
warnBlowNow:Schedule(15-delay) timerUnholyBlade:Start()
warnBlowSoon:Schedule(10-delay) timerCastUnholyBlade:Start()
timerBlow:Start(15-delay) warnUnholyBladeSoon:Show(25)
end
function mod:DeathStrike()
warnDeathStrike:Show()
timerDeathStrike:Start()
end
function mod:PhaseTwo()
timerDeathStrike:Stop()
timerUnholyBlade:Stop()
warnPhase2:Show();
timerenrage:Start()
timerShout:Start(8)
timerKnife:Start()
end end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(55550) then if args:IsSpellID(2123924,2123925,2123926,2123927) then
warnKnifeNow:Show(args.destName) warnKnifeNow:Show(args.destName)
if args:IsPlayer() then if args:IsPlayer() then
specWarnKnife:Show(10); SendChatMessage("Jagged Cold Steel Knife on "..UnitName("PLAYER").."!", "Say")
SendChatMessage(L.YellKnife, "YELL")
notKT = 1
end end
elseif args:IsSpellID(1003253) then timerKnife:Start()
timer = 120 end
warnCurseNow:Schedule(timer) if args:IsSpellID(2123914) then
warnCurseEndSoon:Schedule(timer-10) self:ScheduleMethod(0,"PhaseTwo")
timerCurse:Start(timer) end
notKT = 1 end
end
function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(2123919) and args.amount >=1 then
if args:IsPlayer() then
specwarnDeathStrike:Show(args.amount)
end
end
end end
function mod:SPELL_CAST_SUCCESS(args) function mod:SPELL_CAST_SUCCESS(args)
if RealRazuv then if args:IsSpellID(2123905) then
if args:IsSpellID(26613) then timerPlagueStrike:Start()
timer = 15
warnBlowNow:Schedule(timer)
warnBlowSoon:Schedule(timer-5)
timerBlow:Start(timer)
elseif args:IsSpellID(29107) then
if notKT == 1 then
timer = 10
self:Unschedule("warnShoutNowBackup")
self:Unschedule("warnShoutSoonBackup")
timerShoutBackup:Stop()
warnShoutNow:Schedule(timer)
warnShoutSoon:Schedule(timer-3)
timerShout:Start(timer)
warnShoutNowBackup:Schedule(timer*2)
warnShoutSoonBackup:Schedule(timer*2-3)
timerShoutBackup:Start(timer*2)
end
end end
if args:IsSpellID(2123904) then
timerFrostStrike:Start()
end
end
function mod:SPELL_DAMAGE(args)
if args:IsSpellID(2123928,2123929,2123930,2123931) then
phase = 2
self.vb.phase = 2
self:ScheduleMethod(0,"PhaseTwo")
end
end
function mod:SPELL_MISSED(args)
if args:IsSpellID(2123920) and (args.destName == "Instructor Razuvious" or args.destName == "Shade of Instructor Razuvious") then
timerShout:Start()
end end
end end
function mod:SPELL_CAST_START(args) function mod:SPELL_CAST_START(args)
if args:IsSpellID(1003108) then if args:IsSpellID(2123928,2123929,2123930,2123931) then
timer = 25 self:ScheduleMethod(0,"BreakUnholyBlade")
warnShadowBurstNow:Schedule(timer) end
warnShadowBurstSoon:Schedule(timer-5) if args:IsSpellID(2123919) then
timerShadowBurst:Start(timer) self:ScheduleMethod(0, "DeathStrike")
end end
end end
function mod:UNIT_HEALTH(args) function mod:UNIT_HEALTH(uId)
razHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100; if self:GetUnitCreatureId(uId) == 16061 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and phase == 1 and prewarn == 1 then
if razHealth < 40 and phase == 1 then warnPhase2Soon:Show()
phase = 2 prewarn = 2
self.vb.phase = 2
warnPhase2:Show();
-----Shadow Burst-----
warnShadowBurstNow:Cancel();
warnShadowBurstSoon:Cancel();
timerShadowBurst:Cancel();
end end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 16061 or cid == 26620 then
timerenrage:Stop()
timerKnife:Stop()
end
end
function mod:OnCombatEnd()
timerenrage:Stop()
timerKnife:Stop()
end end
+146 -46
View File
@@ -6,79 +6,179 @@ mod:SetCreatureID(15936)
mod:RegisterCombat("combat") mod:RegisterCombat("combat")
mod:EnableModel() mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"PLAYER_ALIVE" "PLAYER_ALIVE",
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"UNIT_DIED"
) )
-----TELEPORT----- -----TELEPORT-----
local warnTeleportSoon = mod:NewAnnounce("Teleport to Platform Soon", 2, 46573, nil, "Show pre-warning for Heigan teleporting to the platform") local warnTeleportSoon = mod:NewAnnounce("The Dance is starting soon", 2, 46573, nil, "Show pre-warning for Heigan teleporting to the platform")
local warnTeleportNow = mod:NewAnnounce("Teleport to Platform Now", 3, 46573, nil, "Show warning for Heigan teleporting to the platform") local warnTeleportNow = mod:NewAnnounce("Teleport to Platform Now", 2, 46573, nil, "Show warning for Heigan teleporting to the platform")
local timerTeleport = mod:NewTimer(90, "Teleport to Platform", 46573, nil, "Show timer for Heigan teleporting to the platform") local timerTeleport = mod:NewTimer(90, "Heigan's Dance (Teleport)", 46573, nil, "Show timer for Heigan teleporting to the platform")
-----POSITIONS-----
local timerPositionOne = mod:NewTimer(10, "Position: Entrance", 2122702)
local timerPositionTwo = mod:NewTimer(10, "Position: Center West", 2122702)
local timerPositionThree = mod:NewTimer(10, "Position: Center East", 2122702)
local timerPositionFour = mod:NewTimer(10, "Position: Exit", 2122702)
-----DANCE ENDS---- -----DANCE ENDS----
local timerDanceEnds = mod:NewTimer(47, "Dance Ends", 46573, nil, "Show timer for the end of the Safety Dance") local timerDanceEnds = mod:NewTimer(50, "Dance Ends", 46573, nil, "Show timer for the end of the Safety Dance")
local warnDanceEndsSoon = mod:NewAnnounce("Dance Ends Soon", 2, 46573, nil, "Show pre-warning for the end of the Safety Dance")
local warnDanceEnds = mod:NewAnnounce("Dance Ends Now", 3, 46573, nil, "Show warning for the end of the Safety Dance")
-----SPELL DISRUPTION------ -----SPELL DISRUPTION------
local specWarnSpellDisruption = mod:NewSpecialWarningYou(29310, false) local specWarnSpellDisruption = mod:NewSpecialWarningYou(2122708)
local specWarnBurningFever = mod:NewSpecialWarningYou(1003068) local specWarnDecrepitFever = mod:NewSpecialWarningYou(1003068)
-----Touch of the Unclean----- -----Touch of the Unclean-----
local warnTouch = mod:NewAnnounce(L.HeiganTouch, 2, 196780)-- 196791 heroic local specWarnTouch = mod:NewSpecialWarningStack(2122722, nil, 2)
local warnTouchHC = mod:NewAnnounce(L.HeiganTouchHC, 2, 196791) local warnTouch = mod:NewAnnounce("%s on >%s< (%d)",2, 2122722)
----PLAGUE NOVA----
local specWarnPlagueNova = mod:NewSpecialWarningSpell(2122717, 2)
local timerPlagueNova = mod:NewNextTimer(60, 2122717)
local timerCastPlagueNova = mod:NewCastTimer(5, 2122717)
-----MISC----- -----MISC-----
local berserkTimer = mod:NewBerserkTimer(540) local berserkTimer = mod:NewBerserkTimer(540)
local dance = 0
local forward = 1
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
berserkTimer:Start(540-delay) berserkTimer:Start(540-delay)
dance = 0
mod:SlowDancePhase() self:ScheduleMethod(0-delay,"SlowDancePhase")
end
function mod:DancePhase()
timer = 45
timerDanceEnds:Show(timer)
warnDanceEndsSoon:Schedule(timer-10, 10)
warnDanceEnds:Schedule(timer)
self:ScheduleMethod(timer, "SlowDancePhase")
end end
function mod:SlowDancePhase() function mod:SlowDancePhase()
timer = 90 dance = 0
timerTeleport:Show(timer) forward = 1
warnTeleportSoon:Schedule(timer-15, 15) timerPositionTwo:Stop()
warnTeleportNow:Schedule(timer) timerPositionThree:Stop()
self:ScheduleMethod(timer, "DancePhase") self:UnscheduleMethod("PositionTwo")
self:UnscheduleMethod("PositionThree")
timerTeleport:Start(90)
warnTeleportSoon:Schedule(85)
timerPositionOne:Start(15)
self:ScheduleMethod(15,"PositionTwo")
end
function mod:DancePhase()
dance = 1
forward = 1
timerPositionThree:Stop()
self:UnscheduleMethod("PositionFour")
timerDanceEnds:Start()
timerPositionOne:Start(10)
self:ScheduleMethod(10,"PositionTwo")
end
function mod:PositionOne()
forward = 1
if dance == 1 then
timerPositionOne:Start(4)
self:ScheduleMethod(4, "PositionTwo")
else
timerPositionOne:Start(10)
self:ScheduleMethod(10, "PositionTwo")
end
end
function mod:PositionTwo()
if dance == 1 then
timerPositionTwo:Start(4)
if forward == 1 then
self:ScheduleMethod(4, "PositionThree")
else
self:ScheduleMethod(4, "PositionOne")
end
else
timerPositionTwo:Start(10)
if forward == 1 then
self:ScheduleMethod(10, "PositionThree")
else
self:ScheduleMethod(10, "PositionOne")
end
end
end
function mod:PositionThree()
if dance == 1 then
timerPositionThree:Start(4)
if forward == 1 then
self:ScheduleMethod(4, "PositionFour")
else
self:ScheduleMethod(4, "PositionTwo")
end
else
timerPositionThree:Start(10)
if forward == 1 then
self:ScheduleMethod(10, "PositionFour")
else
self:ScheduleMethod(10, "PositionTwo")
end
end
end
function mod:PositionFour()
forward = 0
if dance == 1 then
timerPositionFour:Start(4)
self:ScheduleMethod(4, "PositionThree")
else
timerPositionFour:Start(10)
self:ScheduleMethod(10, "PositionThree")
end
end
function mod:KillPositions()
timerPositionOne:Stop()
timerPositionTwo:Stop()
timerPositionThree:Stop()
timerPositionFour:Stop()
self:UnscheduleMethod("PositionOne")
self:UnscheduleMethod("PositionTwo")
self:UnscheduleMethod("PositionThree")
self:UnscheduleMethod("PositionFour")
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2122717) then
specWarnPlagueNova:Show()
timerCastPlagueNova:Start()
self:ScheduleMethod(0, "DancePhase")
self:ScheduleMethod(50, "SlowDancePhase")
end
end end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(29310) then if args:IsSpellID(2122708) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnSpellDisruption:Show(); specWarnSpellDisruption:Show()
end end
elseif args:IsSpellID(1003068) then elseif args:IsSpellID(1003068) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnBurningFever:Show(); specWarnDecrepitFever:Show();
SendChatMessage(L.YellBurningFever, "YELL") SendChatMessage("Decrepit Fever on "..UnitName("PLAYER").."!", "Say")
end end
elseif args:IsSpellID(196780) then
warnTouch:Show(args.spellName, args.destName, args.amount or 1)
elseif args:IsSpellID(196791) then elseif args:IsSpellID(196791) then
warnTouchHC:Show(args.spellName, args.destName, args.amount or 1) warnTouch:Show(args.destName, args.amount or 1)
end end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(29310) then if args:IsSpellID(2122722) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnSpellDisruption:Show(); specWarnTouch:Show(args.amount)
else
warnTouch:Show(args.spellName, args.destName, args.amount or 1)
end end
elseif args:IsSpellID(1003068) then
if args:IsPlayer() then
specWarnBurningFever:Show();
SendChatMessage(L.YellBurningFever, "YELL")
end
elseif args:IsSpellID(196780) then
warnTouch:Show(args.spellName, args.destName, args.amount or 1)
elseif args:IsSpellID(196791) then
warnTouchHC:Show(args.spellName, args.destName, args.amount or 1)
end end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15936 or cid == 26618 then
self:ScheduleMethod(0,"KillPositions")
end
end
function mod:OnCombatEnd()
self:ScheduleMethod(0,"KillPositions")
end end
+100 -55
View File
@@ -6,51 +6,78 @@ mod:SetCreatureID(16011)
mod:RegisterCombat("combat") mod:RegisterCombat("combat")
mod:EnableModel() mod:EnableModel()
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_CAST_SUCCESS",
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"SPELL_AURA_REMOVED",
"UNIT_HEALTH", "UNIT_HEALTH",
"UNIT_DIED",
"PLAYER_ALIVE" "PLAYER_ALIVE"
) )
-----SPORES----- -----SPORES-----
local warnSporeNow = mod:NewSpellAnnounce(29234, 3) local warnSporeNow = mod:NewSpellAnnounce(29234, 2)
local warnSporeSoon = mod:NewSoonAnnounce(29234, 2) local warnSporeSoon = mod:NewSoonAnnounce(29234, 2)
local timerSpore = mod:NewNextTimer(18, 29234) local timerSpore = mod:NewNextTimer(30, 29234)
local specWarnCloudOfBlight = mod:NewSpecialWarningMove(79008) local specWarnCloudOfBlight = mod:NewSpecialWarningMove(79008)
-----IMPENDING DOOM----- -----IMPENDING DOOM-----
local warnDoomNow = mod:NewSpellAnnounce(29204, 3) local warnDoomNow = mod:NewSpellAnnounce(29204, 2)
local timerDoom = mod:NewNextTimer(180, 29204) local timerNextDoom = mod:NewNextTimer(180, 29204)
local timerDoomDamage = mod:NewTimer(8, "Inevitable Doom expires!", 2122623)
-----HEALING AURA----- -----HEALING AURA-----
local warnHealSoon = mod:NewAnnounce("WarningHealSoon", 4, 48071) local warnHealNow = mod:NewAnnounce("Healing available!", 1, 48071)
local warnHealNow = mod:NewAnnounce("WarningHealNow", 1, 48071, false) local timerNecrotic = mod:NewBuffActiveTimer(16, 2122601)
local timerAura = mod:NewBuffActiveTimer(17, 55593) local timerCastHeal = mod:NewTimer(4, "Heal now!", nil)
-----SOFT ENRAGE----- -----SOFT ENRAGE-----
local warnSoftEnrageSoon = mod:NewSpellAnnounce(79009, 3) local warnSoftEnrageSoon = mod:NewSpellAnnounce(79009, 2)
local warnSoftEnrageNow = mod:NewSoonAnnounce(79009, 2) local warnSoftEnrageNow = mod:NewSoonAnnounce(79009, 2)
local loathebHealth local softEnrage
local phase -----DEATHBLOOM-----
local timerNextDeathbloom = mod:NewNextTimer(30, 2122627)
local timerDeathblooming = mod:NewTimer(15, "Deathbloom expires!", 2122627)
local specWarnDeathblooming = mod:NewAnnounce("Deathbloom will expire soon!", 1,2122627)
local warnDeathbloomStack = mod:NewAnnounce("%s on >%s< (%d)", 2, 2122631)
-----MISC----- -----MISC-----
mod:AddBoolOption("SporeDamageAlert", false) mod:AddBoolOption("SporeDamageAlert", false)
local doomCounter = 0 local doomCounter = 0
local doomSpam = 0
local bloomSpam = 0
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
phase = 1 doomSpam = 0
bloomSpam = 0
softEnrage = 0
doomCounter = 0 doomCounter = 0
if mod:IsDifficulty("heroic25") then timerSpore:Start(15-delay)
sporeTimer = 15 timerNecrotic:Start(10-delay)
else timerNextDoom:Start(30-delay)
sporeTimer = 15 timerNextDeathbloom:Start(10-delay)
end self:ScheduleMethod(15-delay, "SporeSpawn")
timerSpore:Start(sporeTimer - delay)
warnSporeSoon:Schedule(sporeTimer - delay)
timerDoom:Start(120 - delay, doomCounter + 1)
self:ScheduleMethod(sporeTimer, "SporeSpawn")
end end
function mod:SPELL_CAST_SUCCESS(args) -- Deathbloom (2122631)
if args:IsSpellID(29204, 55052) then -- Inevitable Doom -- Deathbloom trigger (2122627)
-- Necrotic Aura (2122601)
-- Aura of Famine (2122605)
-- Inevitable Doom (2122623)
-- Cloud of Plight (2122646)
function mod:SporeSpawn()
warnSporeNow:Show()
timerSpore:Start()
warnSporeSoon:Schedule(25)
self:ScheduleMethod(30, "SporeSpawn")
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2122646) then
if args:IsPlayer() then
specWarnCloudOfBlight:Show();
end
end
if args:IsSpellID(2122623,2122624,2122625,2122626) and (GetTime() - doomSpam) > 5 then
doomSpam = GetTime() -- Inevitable Doom
doomCounter = doomCounter + 1 doomCounter = doomCounter + 1
local timer = 30 local timer = 30
if doomCounter >= 7 then if doomCounter >= 7 then
@@ -58,46 +85,64 @@ function mod:SPELL_CAST_SUCCESS(args)
else timer = 12 end else timer = 12 end
end end
warnDoomNow:Show(doomCounter) warnDoomNow:Show(doomCounter)
timerDoom:Start(timer, doomCounter + 1) timerNextDoom:Start(timer, doomCounter + 1)
elseif args:IsSpellID(55593) then timerDoomDamage:Start()
timerAura:Start()
warnHealSoon:Schedule(14)
warnHealNow:Schedule(17)
end end
end if args:IsSpellID(2122601) and DBM:AntiSpam(5,2) then
timerNecrotic:Start()
function mod:SPELL_AURA_APPLIED(args) warnHealNow:Schedule(16)
if args:IsSpellID(79008) then timerCastHeal:Schedule(16)
if args:IsPlayer() then end
specWarnCloudOfBlight:Show(); if args:IsSpellID(2122627) and DBM:AntiSpam(5,4) then
end specWarnDeathblooming:Show()
timerDeathblooming:Start()
timerNextDeathbloom:Start()
end end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(79008) then if args:IsSpellID(2122646) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnCloudOfBlight:Show(); specWarnCloudOfBlight:Show();
end end
end end
end if args:IsSpellID(2122631) then
if args:IsPlayer() and (args.amount == 5 or args.amount == 10 or args.amount == 15 or args.amount == 20) and (GetTime() - bloomSpam) > 5 then
function mod:SporeSpawn(args) bloomSpam = GetTime()
timer = 14 warnDeathbloomStack:Show(args.spellName, args.destName, args.amount or 1)
warnSporeNow:Show() end
timerSpore:Start(timer)
warnSporeSoon:Schedule(timer-3)
self:ScheduleMethod(timer, "SporeSpawn")
end
function mod:UNIT_HEALTH(args)
loathebHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
if loathebHealth < 25 and phase == 1 then
phase = 2
warnSoftEnrageSoon:Show()
elseif loathebHealth < 20 and phase == 2 then
phase = 3
warnSoftEnrageNow:Show()
end end
end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 16011 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and softEnrage == 0 then
softEnrage = 1
warnSoftEnrageSoon:Show()
elseif self:GetUnitCreatureId(uId) == 16011 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.20 and softEnrage == 1 then
softEnrage = 2
warnSoftEnrageNow:Show()
warnSporeSoon:Cancel()
timerSpore:Stop()
timerNecrotic:Stop()
warnHealNow:Cancel()
timerNextDoom:Stop()
self:UnscheduleMethod("SporeSpawn")
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 16011 or cid == 26619 then
timerNecrotic:Stop()
timerNextDeathbloom:Stop()
timerDeathblooming:Stop()
timerNextDoom:stop()
end
end
function mod:OnCombatEnd()
timerNecrotic:Stop()
timerNextDeathbloom:Stop()
timerDeathblooming:Stop()
timerNextDoom:stop()
end end
+101 -46
View File
@@ -6,82 +6,137 @@ mod:SetCreatureID(15954)
mod:RegisterCombat("combat") mod:RegisterCombat("combat")
mod:RegisterEvents( mod:RegisterEvents(
"SPELL_CAST_SUCCESS", "SPELL_CAST_SUCCESS",
"SPELL_CAST_START",
"SPELL_AURA_APPLIED", "SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE", "SPELL_AURA_APPLIED_DOSE",
"PLAYER_ALIVE" "PLAYER_ALIVE",
"UNIT_HEALTH",
"UNIT_DIED",
"CHAT_MSG_RAID_BOSS_EMOTE"
) )
-----TELEPORT----- -----TELEPORT-----
local warnTeleportNow = mod:NewAnnounce("Teleport Now", 3, 46573, nil, "Show warning for Noth teleporting to and from the balcony") local warnIntermissionNow = mod:NewAnnounce("Intermission now", 2, 46573, nil, "Show warning for Noth teleporting to the balcony")
local warnTeleportSoon = mod:NewAnnounce("Teleport in 10 seconds", 1, 46573, nil, "Show pre-warning for Noth teleporting to and from the balcony") local warnIntermissionSoon = mod:NewAnnounce("Intermission soon", 2, 46573, nil, "Show pre-warning for Noth teleporting to the balcony")
local timerTeleport = mod:NewTimer(600, "Teleport to Balcony", 46573, nil, "Show timer for Noth teleporting to the balcony") local timerTeleportBack = mod:NewTimer(60, "Noth returns to the battlefield", 46573, nil, "Show timer for Noth teleporting from the balcony")
local timerTeleportBack = mod:NewTimer(600, "Teleport to Raid", 46573, nil, "Show timer for Noth teleporting from the balcony") local warnNothReturn = mod:NewAnnounce("Noth has returned to the battlefield", 46573, nil, "Show warning for Noth returning from the balcony")
-----CURSE----- -----CURSE-----
local warnCurse = mod:NewSpellAnnounce(29213, 2) local timerCurse = mod:NewNextTimer(30, 2123805)
local specWarnCurse = mod:NewSpecialWarningYou(29213) local warnCurse = mod:NewSpellAnnounce(2123805, 2)
local specWarnCurse = mod:NewSpecialWarningYou(2123805)
-----Adds----- -----Adds-----
local timerSkeletons = mod:NewNextTimer(30, 52611) local timerWarriorSkeletons = mod:NewTimer(30,"Wave of Warrior Skeletons", 52611)
local timerSkeletonWave = mod:NewTimer(26, "Wave of Skeletons", 52611)
local timerArcaneExplo = mod:NewNextTimer(30, 2123828)
--Rise, my soldiers! Rise and fight once more! --Rise, my soldiers! Rise and fight once more!
-----MISC----- -----MISC-----
-- local berserkTimer = mod:NewBerserkTimer(375) -- local berserkTimer = mod:NewBerserkTimer(375)
local phase = 0 local phase = 0
local prePhase = 0
local curseSpam = 0
-----BOSS FUNCTIONS----- -----BOSS FUNCTIONS-----
function mod:OnCombatStart(delay) function mod:OnCombatStart(delay)
-- berserkTimer:Start(375-delay)
timerSkeletons:Start(15-delay)
timerSkeletons:Schedule(15)
phase = 0 phase = 0
self:BackInRoom() prePhase = 0
curseSpam = 0
self:ScheduleMethod(0-delay,"NothFight")
end end
function mod:Balcony() function mod:Intermission()
local timer warnIntermissionNow:Show()
if phase == 1 then timer = 60 timerCurse:Stop()
elseif phase == 2 then timer = 60 timerWarriorSkeletons:Stop()
elseif phase == 3 then timer = 60 timerArcaneExplo:Start(15)
else return end timerSkeletonWave:Start(10)
timerTeleportBack:Show(timer) self:UnscheduleMethod("WarriorSkeletons")
warnTeleportSoon:Schedule(timer - 10) self:ScheduleMethod(15,"SkeletonWaves")
warnTeleportNow:Schedule(timer) timerTeleportBack:Start()
self:ScheduleMethod(timer, "BackInRoom") self:ScheduleMethod(60, "NothFight")
timerSkeletons:Start(5)
timerSkeletons:Schedule(5)
end end
function mod:BackInRoom() function mod:NothFight()
phase = phase + 1 timerWarriorSkeletons:Start(22)
local timer timerCurse:Start()
if phase == 1 then timer = 75 self:ScheduleMethod(22,"WarriorSkeletons")
elseif phase == 2 then timer = 75 if phase >= 1 then
elseif phase == 3 then timer = 75 warnNothReturn:Show()
else return end
timerTeleport:Show(timer)
warnTeleportSoon:Schedule(timer - 10)
warnTeleportNow:Schedule(timer)
self:ScheduleMethod(timer, "Balcony")
timerSkeletons:Start(15)
timerSkeletons:Schedule(15)
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(29213, 54835, 350288) then -- Curse of the Plaguebringer
warnCurse:Show()
end end
end end
function mod:WarriorSkeletons()
timerWarriorSkeletons:Start()
self:ScheduleMethod(30,"WarriorSkeletons")
end
function mod:SkeletonWaves()
timerSkeletonWave:Start()
timerArcaneExplo:Start()
end
function mod:SPELL_AURA_APPLIED(args) function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(29213, 54835, 350288) then if args:IsSpellID(2123805) and DBM:AntiSpam(5,1) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnCurse:Show(); specWarnCurse:Show()
end end
timerCurse:Start()
end end
end end
function mod:SPELL_AURA_APPLIED_DOSE(args) function mod:SPELL_AURA_APPLIED_DOSE(args)
if args:IsSpellID(29213, 54835, 350288) then if args:IsSpellID(29213, 54835, 350288) then
if args:IsPlayer() then if args:IsPlayer() then
specWarnCurse:Show(); specWarnCurse:Show();
end end
end end
end end
function mod:UNIT_HEALTH(uId)
if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.80 and prePhase ==0 then
warnIntermissionSoon:Show()
prePhase = 1
end
--if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.753 and phase ==0 then
--self:ScheduleMethod(0,"Intermission")
--phase = 1
--end
if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and prePhase ==1 then
warnIntermissionSoon:Show()
prePhase = 2
end
--if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.503 and phase ==1 then
-- self:ScheduleMethod(0,"Intermission")
-- phase = 2
--end
if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.30 and prePhase ==2 then
warnIntermissionSoon:Show()
prePhase = 3
end
--if self:GetUnitCreatureId(uId) == 15954 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.253 and phase ==2 then
-- self:ScheduleMethod(0,"Intermission")
-- phase = 3
--end
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg == L.Teleport or msg:find(L.Teleport) then
self:ScheduleMethod(0,"Intermission")
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15954 or cid == 26617 then
timerCurse:Stop()
self:UnscheduleMethod("WarriorSkeletons")
end
end
function mod:OnCombatEnd()
self:UnscheduleMethod("WarriorSkeletons")
timerCurse:Stop()
timerWarriorSkeletons:Stop()
end
+16 -6
View File
@@ -105,6 +105,10 @@ L:SetOptionLocalization({
TimerTeleportBack = "Show timer for Teleport back" TimerTeleportBack = "Show timer for Teleport back"
}) })
L:SetMiscLocalization({
Teleport = "%s teleports to the balcony above!"
})
-------------------------- --------------------------
-- Heigan the Unclean -- -- Heigan the Unclean --
-------------------------- --------------------------
@@ -167,7 +171,8 @@ L:SetGeneralLocalization({
}) })
L:SetOptionLocalization({ L:SetOptionLocalization({
WarningHateful = "Post Hateful Strike targets to raid chat\n(requires announce to be enabled and leader/promoted status)" WarningHateful = "Post Hateful Strike targets to raid chat\n(requires announce to be enabled and leader/promoted status)",
SetIconOnGastricTarget = "Set icons on Gastric Affliction targets"
}) })
L:SetMiscLocalization({ L:SetMiscLocalization({
@@ -191,7 +196,7 @@ L:SetOptionLocalization({
}) })
L:SetWarningLocalization({ L:SetWarningLocalization({
SpecialWarningInjection = "Mutating Injection on you" SpecialWarningInjection = "Mutating Injection on you"
}) })
L:SetTimerLocalization({ L:SetTimerLocalization({
@@ -205,6 +210,9 @@ L = DBM:GetModLocalization("Gluth")
L:SetGeneralLocalization({ L:SetGeneralLocalization({
name = "Gluth" name = "Gluth"
}) })
L:SetWarningLocalization{
DBM_GLUTH_VICIOUS_BITE = "%s on >%s< (%d)" --(args.spellName, args.destName, args.amount or 1)
}
---------------- ----------------
-- Thaddius -- -- Thaddius --
@@ -217,8 +225,8 @@ L:SetGeneralLocalization({
L:SetMiscLocalization({ L:SetMiscLocalization({
Yell = "Stalagg crush you!", Yell = "Stalagg crush you!",
Emote = "%s overloads!", Emote = "%s overload!",
Emote2 = "Tesla Coil overloads!", Emote2 = "The Tesla Coils overload!",
Boss1 = "Feugen", Boss1 = "Feugen",
Boss2 = "Stalagg", Boss2 = "Stalagg",
Charge1 = "negative", Charge1 = "negative",
@@ -334,7 +342,7 @@ L:SetWarningLocalization({
L:SetMiscLocalization({ L:SetMiscLocalization({
Korthazz = "Thane Korth'azz", Korthazz = "Thane Korth'azz",
Rivendare = "Highlord Mograine", Mograine = "Highlord Mograine",
Blaumeux = "Lady Blaumeux", Blaumeux = "Lady Blaumeux",
Zeliek = "Sir Zeliek" Zeliek = "Sir Zeliek"
}) })
@@ -360,7 +368,9 @@ L:SetOptionLocalization({
}) })
L:SetMiscLocalization({ L:SetMiscLocalization({
EmoteBreath = "%s takes a deep breath.", EmoteBreath = "Sapphiron takes a deep breath.",
EmoteFlying = "Sapphiron lifts off into the air!",
EmoteLanding = "Sapphiron resumes his attacks!",
WarningYellIceblock = "I'm an Ice Block!" WarningYellIceblock = "I'm an Ice Block!"
}) })