5.17 + Hyjal from Szyler's Discord
This commit is contained in:
+235
-108
@@ -13,7 +13,9 @@ mod:RegisterEvents(
|
||||
"SPELL_PERIODIC_HEAL",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"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 warnStomach = mod:NewAnnounce("Stomach Phase Now", 2, 26476)
|
||||
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----------
|
||||
local timerDarkGlareCD = mod:NewCDTimer(87.5, 26029)
|
||||
local timerDarkGlare = mod:NewTimer(37.5, "Dark Glare: Time Remaining", 26029)
|
||||
local timerDarkGlareCD = mod:NewCDTimer(89, 26029)
|
||||
local timerDarkGlare = mod:NewTimer(33, "Dark Glare: Time Remaining", 26029)
|
||||
local timerEldritch = mod:NewTimer(5, "LOOK AWAY", 4500009)
|
||||
local timerEldritchCD = mod:NewCDTimer(30, 4500009)
|
||||
local timerEyeTentacleShadow = mod:NewTimer(45, "Eye Tentacles: Shadow", 4500000)
|
||||
local timerEyeTentacleFire = mod:NewTimer(45, "Eye Tentacles: Fire", 4500054)
|
||||
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 timerGiantClawTentacle = mod:NewTimer(14, "Giant Claw Tentacle", 6524)
|
||||
local timerWeakened = mod:NewTimer(30, "Weakened: Time Remaining", 25383)
|
||||
local timerManipulator = mod:NewTimer(15, "Manipulator Tentacle", 4500067)
|
||||
local timerDevastator = mod:NewTimer(15, "Devastator Tentacle", 4500007)
|
||||
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----------
|
||||
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 specWarnSensoryOverload = mod:NewSpecialWarningYou(4500068)
|
||||
local specWarnDigestiveAcid = mod:NewSpecialWarningStack(26476, nil, 4) --(mod.Options.NumAcidStacks or 4))
|
||||
local SpecwarnStomach = mod:NewSpecialWarningYou(2117117, 4)
|
||||
----------PreWarning Functions----------
|
||||
function mod:preShadow()
|
||||
prewarnEyeTentacleShadow:Show()
|
||||
@@ -115,17 +124,33 @@ function mod:preMalignant()
|
||||
end
|
||||
|
||||
----------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()
|
||||
warnEyeTentacleShadow:Show()
|
||||
etent = 2
|
||||
lasttent = 1
|
||||
end
|
||||
function mod:alertFire()
|
||||
warnEyeTentacleFire:Show()
|
||||
lasttent = 2
|
||||
etent = 3
|
||||
lasttent = 2
|
||||
end
|
||||
function mod:alertNature()
|
||||
warnEyeTentacleNature:Show()
|
||||
lasttent = 3
|
||||
etent = 1
|
||||
lasttent = 3
|
||||
end
|
||||
function mod:alertStomach()
|
||||
warnStomach:Show()
|
||||
@@ -159,13 +184,15 @@ end
|
||||
function mod:OnCombatStart(delay)
|
||||
phase = 1
|
||||
self.vb.phase = 1
|
||||
etent = 1
|
||||
lasttent = 3
|
||||
etent = 0
|
||||
lasttent = 0
|
||||
miniadd = 1
|
||||
eldfixglare = 1
|
||||
timerNextEyeTent:Start(45)
|
||||
self:ScheduleMethod(0-delay, "eldFearInitial")
|
||||
self:ScheduleMethod(0-delay, "darkGlareInitial")
|
||||
self:ScheduleMethod(0-delay, "eyeTentacle")
|
||||
self:ScheduleMethod(48-delay, "firstEyeTentacle")
|
||||
|
||||
-- self:ScheduleMethod(0-delay, "miniAddInitial")
|
||||
if self.Options.RangeFrame then
|
||||
DBM.RangeCheck:Show(13)
|
||||
@@ -184,41 +211,84 @@ end
|
||||
--function mod:miniAdd()
|
||||
-- local timer15 = 15
|
||||
--end
|
||||
|
||||
function mod:eyeTentacle()
|
||||
local timer1 = 45
|
||||
if etent == 1 then
|
||||
timerEyeTentacleShadow:Start(timer1)
|
||||
self:ScheduleMethod(timer1-5, "preShadow")
|
||||
self:ScheduleMethod(timer1, "alertShadow")
|
||||
|
||||
function mod:firstEyeTentacle()
|
||||
local timer0 = 43
|
||||
if etent == 1 then
|
||||
timerEyeTentacleShadow:Start(42)
|
||||
self:ScheduleMethod(39, "preShadow")
|
||||
self:ScheduleMethod(42, "alertShadow")
|
||||
etent = 2
|
||||
lasttent = 3
|
||||
elseif etent == 2 then
|
||||
timerEyeTentacleFire:Start(timer1)
|
||||
self:ScheduleMethod(timer1-5, "preFire")
|
||||
self:ScheduleMethod(timer1, "alertFire")
|
||||
timerEyeTentacleFire:Start(42)
|
||||
self:ScheduleMethod(39, "preFire")
|
||||
self:ScheduleMethod(42, "alertFire")
|
||||
etent = 3
|
||||
lasttent = 1
|
||||
elseif etent == 3 then
|
||||
timerEyeTentacleNature:Start(timer1)
|
||||
self:ScheduleMethod(timer1-5, "preNature")
|
||||
self:ScheduleMethod(timer1, "alertNature")
|
||||
timerEyeTentacleNature:Start(42)
|
||||
self:ScheduleMethod(39, "preNature")
|
||||
self:ScheduleMethod(42, "alertNature")
|
||||
etent = 1
|
||||
lasttent = 2
|
||||
elseif etent == 0 then
|
||||
timerNextEyeTent:Start(42)
|
||||
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
|
||||
|
||||
function mod:darkGlareInitial()
|
||||
local timer11 = 50
|
||||
timerDarkGlareCD:Start(timer11)
|
||||
self:ScheduleMethod(timer11-5, "preGlare")
|
||||
self:ScheduleMethod(timer11, "alertGlare")
|
||||
timerDarkGlareCD:Start(55)
|
||||
self:ScheduleMethod(50, "preGlare")
|
||||
self:ScheduleMethod(55, "darkGlare")
|
||||
end
|
||||
|
||||
function mod:darkGlare()
|
||||
local timer10 = 87.5
|
||||
timerDarkGlare:Start()
|
||||
timerDarkGlareCD:Start(timer10)
|
||||
self:ScheduleMethod(timer10-5, "preGlare")
|
||||
self:ScheduleMethod(timer10, "alertGlare")
|
||||
timerDarkGlareCD:Start(89)
|
||||
self:ScheduleMethod(84, "preGlare")
|
||||
self:ScheduleMethod(89, "alertGlare")
|
||||
self:ScheduleMethod(89,"darkGlare")
|
||||
end
|
||||
|
||||
function mod:eldFearInitial()
|
||||
@@ -238,9 +308,9 @@ function mod:eldFear()
|
||||
elseif eldfixglare == 2 then
|
||||
self:ScheduleMethod(timer12-5, "eldFearGlareFix")
|
||||
end
|
||||
timerEldritchCD:Start(timer12)
|
||||
self:ScheduleMethod(timer12-5, "preFear")
|
||||
self:ScheduleMethod(timer12, "alertFear")
|
||||
timerEldritchCD:Start(30)
|
||||
self:ScheduleMethod(25, "preFear")
|
||||
self:ScheduleMethod(30, "alertFear")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -249,35 +319,9 @@ function mod:eldFearGlareFix()
|
||||
end
|
||||
|
||||
function mod:enterStomach()
|
||||
local timer2a = 20
|
||||
local timer2b = 10
|
||||
if mod:IsDifficulty("heroic10") then
|
||||
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
|
||||
self:UnscheduleMethod("enterStomach")
|
||||
timerStomach:Start(41)
|
||||
self:ScheduleMethod(41, "enterStomach")
|
||||
end
|
||||
|
||||
function mod:clawTentacleInitial()
|
||||
@@ -328,19 +372,20 @@ function mod:geyeTentacle()
|
||||
self:ScheduleMethod(timer9, "geyeTentacle")
|
||||
end
|
||||
|
||||
function mod:fixweaknessTimers()
|
||||
self:ScheduleMethod(0, "stomachWeaknessFix")
|
||||
function mod:fixWeaknessTimers()
|
||||
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, "geyeTentacleWeaknessFix")
|
||||
if lasttent == 1 then
|
||||
etent = 2
|
||||
elseif lasttent == 2 then
|
||||
etent = 3
|
||||
elseif lasttent == 3 then
|
||||
etent = 1
|
||||
end
|
||||
self:ScheduleMethod(0, "eyeTentacle")
|
||||
timerStomach:Start(15)
|
||||
self:ScheduleMethod(15, "enterStomach")
|
||||
self:ScheduleMethod(0, "p2eyeTentacle")
|
||||
end
|
||||
|
||||
function mod:phaseTwo()
|
||||
warnPhase2:Show()
|
||||
self.vb.phase = 2
|
||||
@@ -351,8 +396,9 @@ function mod:phaseTwo()
|
||||
elseif lasttent == 3 then
|
||||
etent = 1
|
||||
end
|
||||
timerStomach:Start(20)
|
||||
self:ScheduleMethod(6, "eyeTentacle")
|
||||
self:ScheduleMethod(1, "enterStomach")
|
||||
self:ScheduleMethod(20, "enterStomach")
|
||||
self:ScheduleMethod(0, "clawTentacleInitial")
|
||||
self:ScheduleMethod(0, "geyeTentacleInitial")
|
||||
end
|
||||
@@ -383,17 +429,17 @@ function mod:UNIT_DIED(args)
|
||||
self:UnscheduleMethod("darkGlareInitial")
|
||||
self:UnscheduleMethod("preGlare")
|
||||
self:UnscheduleMethod("alertGlare")
|
||||
|
||||
self:UnscheduleMethod("firstEyeTentacle")
|
||||
self:ScheduleMethod(0, "phaseTwo")
|
||||
end
|
||||
end
|
||||
|
||||
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")
|
||||
specWarnRevelations:Show();
|
||||
end
|
||||
if msg:find(L.Glare) then
|
||||
if msg == L.EmoteGlare or msg:find(L.EmoteGlare) then
|
||||
eldfixglare = 2
|
||||
timerEldritchCD:Stop()
|
||||
self:UnscheduleMethod("eldFearInitial")
|
||||
@@ -403,7 +449,75 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
||||
self:ScheduleMethod(0, "darkGlare")
|
||||
self:ScheduleMethod(37.5, "eldFear")
|
||||
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()
|
||||
warnWeakened:Show()
|
||||
timerGiantClawTentacle:Stop()
|
||||
@@ -412,6 +526,14 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
||||
timerEyeTentacleFire:Stop()
|
||||
timerEyeTentacleNature: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("stomachWeaknessFix")
|
||||
self:UnscheduleMethod("preStomach")
|
||||
@@ -426,35 +548,9 @@ function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
||||
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")
|
||||
self:ScheduleMethod(30, "fixweaknessTimers")
|
||||
end
|
||||
end
|
||||
|
||||
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:IsSpellID(2117074) then -- Malignant Grasp (Malignant Tentacle)
|
||||
if args.destName then
|
||||
if (not args:IsPlayer()) then
|
||||
local uId = DBM:GetRaidUnitId(args.destName)
|
||||
@@ -468,11 +564,20 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif args:IsSpellID(4500001) then -- Miasma (Eye Tentacles)
|
||||
end
|
||||
if args:IsSpellID(2117054) then -- Miasma (Eye Tentacles)
|
||||
if args:IsPlayer() then
|
||||
specWarnMiasma:Show();
|
||||
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
|
||||
|
||||
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
@@ -494,4 +599,26 @@ function mod:SPELL_CAST_START(args)
|
||||
specWarnSensoryOverload:Show();
|
||||
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
|
||||
|
||||
@@ -223,3 +223,12 @@ v5.16 30/11/2022
|
||||
- Fixed lua error with DBM:AntiSpam
|
||||
- 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
|
||||
@@ -43,9 +43,9 @@
|
||||
-------------------------------
|
||||
DBM = {
|
||||
Revision = ("$Revision: 5016 $"):sub(12, -3),
|
||||
Version = "5.16",
|
||||
DisplayVersion = "5.16", -- the string that is shown as version
|
||||
ReleaseRevision = 5015 -- the revision of the latest stable version that is available (for /dbm ver2)
|
||||
Version = "5.17",
|
||||
DisplayVersion = "5.17", -- the string that is shown as version
|
||||
ReleaseRevision = 5016 -- the revision of the latest stable version that is available (for /dbm ver2)
|
||||
}
|
||||
|
||||
DBM_SavedOptions = {}
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 = "地狱火"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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!"
|
||||
})
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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 = "지옥불정령"
|
||||
}
|
||||
@@ -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 = "Инфернала"
|
||||
}
|
||||
@@ -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 = "巨型地獄火"
|
||||
}
|
||||
@@ -8,20 +8,21 @@ mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_CAST_START",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
-----LOCUST SWARM-----
|
||||
local prewarnLocust = mod:NewSoonAnnounce(28785, 2)
|
||||
local warnLocust = mod:NewCastAnnounce(28785, 3)
|
||||
local timerLocust = mod:NewNextTimer(90, 28785)
|
||||
local specWarnLocust = mod:NewSpecialWarningSpell(28785)
|
||||
local timerLocustRemaining = mod:NewBuffActiveTimer(16, 28785)
|
||||
local prewarnLocust = mod:NewSoonAnnounce(2123004, 2)
|
||||
local warnLocust = mod:NewCastAnnounce(2123004, 3)
|
||||
local timerLocust = mod:NewNextTimer(90, 2123004)
|
||||
local specWarnLocust = mod:NewSpecialWarningSpell(2123004)
|
||||
local timerLocustRemaining = mod:NewBuffActiveTimer(17, 2123004)
|
||||
-----DARK GAZE-----
|
||||
local specWarnDarkGaze = mod:NewSpecialWarningYou(1003011)
|
||||
-----IMPALE------
|
||||
local timerImpale = mod:NewCDTimer(10, 28783)
|
||||
local warnImpale = mod:NewTargetAnnounce(28783, 2)
|
||||
local timerImpale = mod:NewCDTimer(15, 2123001)
|
||||
local warnImpale = mod:NewTargetAnnounce(2123001, 2)
|
||||
-----MISC-----
|
||||
local berserkTimer = mod:NewBerserkTimer(600)
|
||||
|
||||
@@ -32,10 +33,11 @@ function mod:OnCombatStart(delay)
|
||||
berserkTimer:Start(-delay)
|
||||
timerLocust:Start(-delay)
|
||||
prewarnLocust:Schedule(85-delay)
|
||||
timerImpale:Start(10-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(1003011) then
|
||||
if args:IsSpellID(1003011) then
|
||||
if args:IsPlayer() then
|
||||
specWarnDarkGaze:Show();
|
||||
SendChatMessage(L.YellDarkGaze, "YELL")
|
||||
@@ -44,12 +46,14 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(28785) then
|
||||
if args:IsSpellID(2123003) then
|
||||
timerLocust:Start()
|
||||
specWarnLocust:Show()
|
||||
prewarnLocust:Schedule(85)
|
||||
timerLocustRemaining:Schedule(3)
|
||||
elseif args:IsSpellID(28783) then
|
||||
timerImpale:Stop()
|
||||
timerImpale:Start(30)
|
||||
elseif args:IsSpellID(2123001) then
|
||||
timerImpale:Start()
|
||||
tankName = mod:GetBossTarget(15956)
|
||||
self:ScheduleMethod(0.1, "anubImpale")
|
||||
@@ -57,18 +61,27 @@ function mod:SPELL_CAST_START(args)
|
||||
end
|
||||
|
||||
function mod:anubImpale()
|
||||
local target = mod:GetBossTarget(15956)
|
||||
if target then
|
||||
local target = mod:GetBossTarget(15956) or mod:GetBossTarget(26614)
|
||||
if target ~= tankName then
|
||||
warnImpale:Show(target)
|
||||
if target == UnitName("player") then
|
||||
end
|
||||
elseif target == tankName then
|
||||
self:ScheduleMethod(0.1, "anubImpale")
|
||||
end
|
||||
local targetShade = mod:GetBossTarget(1003012)
|
||||
if targetShade then
|
||||
warnImpale:Show(targetShade)
|
||||
if targetShade == UnitName("player") then
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnCombatEnd()
|
||||
timerLocust:Stop()
|
||||
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
|
||||
@@ -9,15 +9,19 @@ mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_PERIODIC_DAMAGE",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"UNIT_DIED",
|
||||
"SPELL_AURA_REFRESH"
|
||||
)
|
||||
|
||||
-----ENRAGE-----
|
||||
-- local warnEnrageSoon = mod:NewSoonAnnounce(28798, 3)
|
||||
-----Frenzy-----
|
||||
-- local warnFrenzyNow = mod:NewSpellAnnounce(28798, 4)
|
||||
local timerFrenzy = mod:NewNextTimer(60, 28798)
|
||||
local warnFrenzy = mod:NewAnnounce(L.FaerlinaFrenzy, 2, 28798)
|
||||
local timerSadism = mod:NewNextTimer(30, 2123101)
|
||||
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-----
|
||||
local warnEmbraceActive = mod:NewSpellAnnounce(28732, 1)
|
||||
local timerEmbrace = mod:NewBuffActiveTimer(20, 28732)
|
||||
@@ -36,7 +40,7 @@ local berserkTimer = mod:NewBerserkTimer(600)
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
berserkTimer:Start(-delay)
|
||||
timerFrenzy:Start(-delay)
|
||||
timerSadism:Start(60-delay)
|
||||
-- timer = 60
|
||||
-- timerEnrage:Start(timer - delay)
|
||||
-- warnEnrageSoon:Schedule(timer - 5 - delay)
|
||||
@@ -62,10 +66,14 @@ end
|
||||
-- end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(28798, 54100) then
|
||||
warnFrenzy:Show(args.spellName, args.destName, args.amount or 1)
|
||||
timerFrenzy:Start()
|
||||
elseif args:IsSpellID(1003054) then
|
||||
if args:IsSpellID(2123101) then
|
||||
warnSadism:Show(args.spellName, args.destName, args.amount or 1)
|
||||
timerSadism:Start(30)
|
||||
elseif args:IsSpellID(2123102) then
|
||||
timerSadism:Stop()
|
||||
timerBloodBath:Start()
|
||||
warnBloodBathSoon:Schedule(40)
|
||||
elseif args:IsSpellID(2123107,2123108,2123109,2123110) then
|
||||
if args:IsPlayer() then
|
||||
specWarnRainOfFire:Show();
|
||||
end
|
||||
@@ -82,15 +90,24 @@ function mod:SPELL_AURA_APPLIED(args)
|
||||
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)
|
||||
if args:IsSpellID(28798, 54100) then
|
||||
warnFrenzy:Show(args.spellName, args.destName, args.amount or 1)
|
||||
timerFrenzy:Start()
|
||||
elseif args:IsSpellID(1003054) then
|
||||
if args:IsSpellID(2123101) then
|
||||
warnSadism:Show(args.spellName, args.destName, args.amount or 1)
|
||||
timerSadism:Start()
|
||||
elseif args:IsSpellID(2123107,2123108,2123109,2123110) then
|
||||
if args:IsPlayer() then
|
||||
specWarnRainOfFire:Show();
|
||||
end
|
||||
elseif args:IsSpellID(869762, 350284) then
|
||||
elseif args:IsSpellID(2123115,2123116,2123117,2123118) then
|
||||
if args:IsPlayer() then
|
||||
specWarnPoisonPool:Show();
|
||||
end
|
||||
@@ -104,9 +121,20 @@ function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_PERIODIC_DAMAGE(args)
|
||||
if args:IsSpellID(350286) then
|
||||
if args:IsSpellID(2123107,2123108,2123109,2123110) then
|
||||
if args:IsPlayer() then
|
||||
specWarnRainOfFire:Show()
|
||||
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
|
||||
@@ -11,74 +11,116 @@ mod:RegisterEvents(
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"PLAYER_ALIVE",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"UNIT_HEALTH"
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
-----Necrotic Poison-----
|
||||
local timerNecrotic = mod:NewNextTimer(60, 28798)
|
||||
local warnNecrotic = mod:NewAnnounce(L.MaexxnaNecrotic, 2, 28798)
|
||||
local warnNecrotic = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123201)
|
||||
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-----
|
||||
local warnWebWrap = mod:NewTargetAnnounce(28622, 2)
|
||||
local timerWebWrap = mod:NewNextTimer(40, 28622)
|
||||
local warnWebWrap = mod:NewTargetAnnounce(2123211, 2)
|
||||
local timerWebWrap = mod:NewNextTimer(40, 2123211)
|
||||
-----WEB SPRAY-----
|
||||
local warnWebSpraySoon = mod:NewSoonAnnounce(29484, 1)
|
||||
local warnWebSprayNow = mod:NewSpellAnnounce(29484, 3)
|
||||
local timerWebSpray = mod:NewNextTimer(40, 29484)
|
||||
local warnWebSpraySoon = mod:NewSoonAnnounce(2123206, 1)
|
||||
local warnWebSprayNow = mod:NewSpecialWarningSpell(2123206, 3)
|
||||
local timerWebSpray = mod:NewNextTimer(50, 2123206)
|
||||
local timerWebStunSoon = mod:NewTimer(4,"Stun incoming!", 2123210)
|
||||
local timerWebStun = mod:NewTimer(4, "WRAPPED!", 2123210)
|
||||
-----SPIDERLINGS-----
|
||||
local timerSpider = mod:NewNextTimer(16, 43134)
|
||||
local timerSpider = mod:NewNextTimer(16, 43134)
|
||||
-----SOFT ENRAGE-----
|
||||
local warnSoftEnrageSoon = mod:NewSpellAnnounce(54123, 3)
|
||||
local warnSoftEnrageNow = mod:NewSoonAnnounce(54123, 2)
|
||||
local maexxnaHealth
|
||||
local warnSoftEnrageSoon = mod:NewSpellAnnounce(54123, 3)
|
||||
local warnSoftEnrageNow = mod:NewSoonAnnounce(54123, 2)
|
||||
local phase
|
||||
|
||||
local webSpam = 0
|
||||
local necroticSpam = 0
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
webSpam = 0
|
||||
necroticSpam = 0
|
||||
warnWebSpraySoon:Schedule(35 - delay)
|
||||
timerWebSpray:Start(40 - delay)
|
||||
timerWebWrap:Start(20-delay)
|
||||
timerSpider:Start(8 - delay)
|
||||
self:ScheduleMethod(8-delay, "Spiders")
|
||||
end
|
||||
|
||||
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
||||
if msg:find(L.Spiderlings) then
|
||||
timer = 16
|
||||
timerSpider:Start(timer)
|
||||
end
|
||||
-- "Kel'Thuzad strikes!"
|
||||
|
||||
|
||||
function mod:Spiders()
|
||||
timerSpider:Start()
|
||||
self:ScheduleMethod(16, "Spiders")
|
||||
end
|
||||
|
||||
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)
|
||||
timerWebWrap:Start()
|
||||
if args.destName == UnitName("player") then
|
||||
SendChatMessage(L.YellWebWrap, "YELL")
|
||||
end
|
||||
elseif args:IsSpellID(29484, 54125, 350287) then -- Web Spray
|
||||
timer = 40
|
||||
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()
|
||||
elseif args:IsSpellID(2123210) then
|
||||
timerWebStun:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
if args:IsSpellID(28776) then
|
||||
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
|
||||
if args:IsSpellID(2123201) then
|
||||
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
|
||||
|
||||
function mod:UNIT_HEALTH(args)
|
||||
maexxnaHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
|
||||
|
||||
if maexxnaHealth < 25 and phase == 1 then
|
||||
function mod:UNIT_HEALTH(uId)
|
||||
if self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and phase == 1 then
|
||||
phase = 2
|
||||
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
|
||||
warnSoftEnrageNow:Show()
|
||||
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
|
||||
@@ -7,15 +7,26 @@ mod:RegisterCombat("combat")
|
||||
mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"SPELL_DAMAGE",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
-----DECIMATE-----
|
||||
local warnDecimateSoon = mod:NewSoonAnnounce(54426, 2)
|
||||
local warnDecimateNow = mod:NewSpellAnnounce(54426, 3)
|
||||
local timerDecimate = mod:NewNextTimer(120, 54426)
|
||||
local warnDecimateSoon = mod:NewSoonAnnounce(2122905, 2)
|
||||
local warnDecimateNow = mod:NewSpellAnnounce(2122905, 2)
|
||||
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-----
|
||||
local enrageTimer = mod:NewBerserkTimer(480)
|
||||
local enrageTimer = mod:NewBerserkTimer(480)
|
||||
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
@@ -24,12 +35,61 @@ function mod:OnCombatStart(delay)
|
||||
warnDecimateSoon:Schedule(115 - delay)
|
||||
end
|
||||
|
||||
local decimateSpam = 0
|
||||
function mod:SPELL_DAMAGE(args)
|
||||
if args:IsSpellID(28375) and (GetTime() - decimateSpam) > 20 then
|
||||
decimateSpam = GetTime()
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(2122905)then
|
||||
warnDecimateNow:Show()
|
||||
timerDecimate:Start()
|
||||
warnDecimateSoon:Schedule(115)
|
||||
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{
|
||||
|
||||
@@ -11,28 +11,26 @@ mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"UNIT_DIED",
|
||||
"PLAYER_ALIVE"
|
||||
)
|
||||
|
||||
-----MUTATING INJECTION-----
|
||||
local warnInjection = mod:NewTargetAnnounce(28169, 2)
|
||||
local specWarnInjection = mod:NewSpecialWarningYou(28169)
|
||||
local timerInjection = mod:NewTargetTimer(10, 28169)
|
||||
local warnInjection = mod:NewTargetAnnounce(28169, 2)
|
||||
local specWarnInjection = mod:NewSpecialWarningYou(2122807)
|
||||
local timerInjection = mod:NewTargetTimer(10, 2122807)
|
||||
local timerNextInjection = mod:NewNextTimer(15, 2122807)
|
||||
-----POISON CLOUD-----
|
||||
local timerCloud = mod:NewNextTimer(15, 28240)
|
||||
local warnCloud = mod:NewSpellAnnounce(28240, 2)
|
||||
local prewarnCloud = mod:NewSoonAnnounce(28240, 3)
|
||||
local specWarnPoison1 = mod:NewSpecialWarningMove(28241, true, nil, true)
|
||||
local specWarnPoison2 = mod:NewSpecialWarningMove(28158, true, nil, true)
|
||||
local timerPoisonCloud = mod:NewNextTimer(8, 2122812)
|
||||
local warnCloud = mod:NewSpellAnnounce(2122812, 2)
|
||||
local specWarnPoison1 = mod:NewSpecialWarningMove(2122812, true, nil, true)
|
||||
-----VIVIFYING TOXIN-----
|
||||
local timerToxin = mod:NewNextTimer(45, 79012)
|
||||
local warnToxin = mod:NewSpellAnnounce(79012, 2)
|
||||
local prewarnToxin = mod:NewSoonAnnounce(79012, 3)
|
||||
local timerStitchedGiant = mod:NewTimer(60, "Stitched Giant", 79012)
|
||||
-----SLIME SPRAY-----
|
||||
local timerSpray = mod:NewCDTimer(15, 28157)
|
||||
local warnSpray = mod:NewSpellAnnounce(28157, 2)
|
||||
local timerSpray = mod:NewCDTimer(20, 2122818)
|
||||
local warnSpray = mod:NewSpellAnnounce(2122818, 2)
|
||||
-----MISC-----
|
||||
local enrageTimer = mod:NewBerserkTimer(480)
|
||||
local enrageTimer = mod:NewBerserkTimer(480)
|
||||
mod:AddBoolOption("SetIconOnInjectionTarget", true)
|
||||
local mutateIcons = {}
|
||||
|
||||
@@ -41,15 +39,15 @@ function mod:OnCombatStart(delay)
|
||||
table.wipe(mutateIcons)
|
||||
enrageTimer:Start(-delay)
|
||||
-----Poison Cloud-----
|
||||
timerCloud:Start(15-delay)
|
||||
warnCloud:Schedule(15-delay)
|
||||
prewarnCloud:Schedule(10-delay)
|
||||
timerPoisonCloud:Start(10-delay)
|
||||
self:ScheduleMethod(10-delay,"PoisonCloud")
|
||||
-----Vivifying Toxin-----
|
||||
timerToxin:Start(10-delay)
|
||||
warnToxin:Schedule(10-delay)
|
||||
prewarnToxin:Schedule(5-delay)
|
||||
timerStitchedGiant:Start(20-delay)
|
||||
self:ScheduleMethod(20-delay, "StitchedGiant")
|
||||
-----Slime Spray-----
|
||||
timerSpray:Start(15-delay)
|
||||
timerSpray:Start(25-delay)
|
||||
----Injection----
|
||||
timerNextInjection:Start(10-delay)
|
||||
end
|
||||
|
||||
local function addIcon()
|
||||
@@ -70,41 +68,35 @@ local function removeIcon(target)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(28169) then
|
||||
warnInjection:Show(args.destName)
|
||||
timerInjection:Start(args.destName)
|
||||
if args:IsSpellID(2122807) then
|
||||
if args:IsPlayer() then
|
||||
specWarnInjection:Show()
|
||||
else
|
||||
warnInjection:Show(args.destName)
|
||||
end
|
||||
timerInjection:Start(args.destName)
|
||||
timerNextInjection:Start()
|
||||
if self.Options.SetIconOnInjectionTarget then
|
||||
table.insert(mutateIcons, args.destName)
|
||||
addIcon()
|
||||
end
|
||||
elseif args:IsSpellID(28241) then
|
||||
elseif args:IsSpellID(2122812,2122813,2122814) then
|
||||
if args:IsPlayer() then
|
||||
specWarnPoison1:Show()
|
||||
end
|
||||
elseif args:IsSpellID(28158) then
|
||||
if args:IsPlayer() then
|
||||
specwarnPoison2:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
if args:IsSpellID(28241) then
|
||||
if args:IsSpellID(2122812,2122813,2122814) then
|
||||
if args:IsPlayer() then
|
||||
specWarnPoison1:Show()
|
||||
end
|
||||
elseif args:IsSpellID(28158) then
|
||||
if args:IsPlayer() then
|
||||
specwarnPoison2:Show()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
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.
|
||||
if self.Options.SetIconOnInjectionTarget then
|
||||
removeIcon(args.destName)
|
||||
@@ -113,19 +105,41 @@ function mod:SPELL_AURA_REMOVED(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(28240) then
|
||||
timer = 15
|
||||
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)
|
||||
if args:IsSpellID(2122818) then
|
||||
timerSpray:Start()
|
||||
warnSpray:Show()
|
||||
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
|
||||
@@ -9,15 +9,29 @@ mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_DAMAGE",
|
||||
"SPELL_MISSED",
|
||||
"UNIT_DIED",
|
||||
"PLAYER_ALIVE"
|
||||
)
|
||||
|
||||
mod:AddBoolOption("WarningHateful", false, "announce")
|
||||
mod:AddBoolOption("SetIconOnGastricTarget", true)
|
||||
local mutateIcons = {}
|
||||
local MT
|
||||
|
||||
-----GASTRIC AFFLICTION-----
|
||||
local specWarnGastric = mod:NewSpecialWarningYou(1003086)
|
||||
local warnGastric = mod:NewTargetAnnounce(2122517, 2)
|
||||
local timerGastric = mod:NewNextTimer(20,2122517)
|
||||
local timerGastricSelf = mod:NewTargetTimer(15,2122517)
|
||||
-----MISC-----
|
||||
local enrageTimer = mod:NewBerserkTimer(360)
|
||||
local timerAchieve = mod:NewAchievementTimer(180, 1857, "TimerSpeedKill")
|
||||
local enrageTimer = mod:NewBerserkTimer(360)
|
||||
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-----
|
||||
local function announceStrike(target, damage)
|
||||
@@ -27,25 +41,67 @@ end
|
||||
function mod:OnCombatStart(delay)
|
||||
enrageTimer:Start(-delay)
|
||||
timerAchieve:Start(-delay)
|
||||
timerGastric:Start(15-delay)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(1003086) then
|
||||
if args:IsSpellID(2122517,2122518,2122519,2122520) then
|
||||
if args:IsPlayer() then
|
||||
timer = 5
|
||||
specWarnGastric:Show(timer);
|
||||
specWarnGastric:Show();
|
||||
else
|
||||
warnGastric:Show(args.destName)
|
||||
end
|
||||
end
|
||||
end
|
||||
timerGastricSelf:Start(args.destName)
|
||||
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)
|
||||
if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then
|
||||
announceStrike(args.destName, args.amount or 0)
|
||||
end
|
||||
if args:IsSpellID(2122505) and (args.destName == MT) then
|
||||
timerNotFavToy:Stop()
|
||||
timerNotFavToy:Start(MT)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_MISSED(args)
|
||||
if args:IsSpellID(28308, 59192) and self.Options.WarningHateful and DBM:GetRaidRank() >= 1 then
|
||||
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
|
||||
@@ -7,112 +7,78 @@ mod:RegisterCombat("yell", L.Yell)
|
||||
mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"UNIT_AURA",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
-----POLARITY SHIFT-----
|
||||
local timerShiftCast = mod:NewCastTimer(3, 28089)
|
||||
local timerNextShift = mod:NewNextTimer(30, 28089)
|
||||
local warnShiftCasting = mod:NewCastAnnounce(28089, 3)
|
||||
local timerShiftCast = mod:NewCastTimer(4, 2124201)
|
||||
local timerNextShift = mod:NewNextTimer(34, 2124201)
|
||||
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-----
|
||||
local warnThrow = mod:NewSpellAnnounce(28338, 2)
|
||||
local warnThrowSoon = mod:NewSoonAnnounce(28338, 1)
|
||||
local timerThrow = mod:NewNextTimer(20.6, 28338)
|
||||
local warnThrow = mod:NewSpellAnnounce(2124244, 2)
|
||||
local warnThrowSoon = mod:NewSoonAnnounce(2124244, 2)
|
||||
local timerThrow = mod:NewNextTimer(20.6, 2124244)
|
||||
-----MISC-----
|
||||
local warnChargeChanged = mod:NewSpecialWarning("WarningChargeChanged")
|
||||
local warnChargeNotChanged = mod:NewSpecialWarning("WarningChargeNotChanged", false)
|
||||
|
||||
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:SetBossHealthInfo(
|
||||
15930, L.Boss1,
|
||||
15929, L.Boss2
|
||||
15930, L.Boss1,
|
||||
15929, L.Boss2
|
||||
)
|
||||
local currentCharge
|
||||
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-----
|
||||
function mod:OnCombatStart(delay)
|
||||
phase2 = false
|
||||
self.vb.phase = 1
|
||||
currentCharge = nil
|
||||
currentCharge = 0
|
||||
i = 7
|
||||
down = 0
|
||||
self:ScheduleMethod(20.6 - delay, "TankThrow")
|
||||
timerThrow:Start(-delay)
|
||||
warnThrowSoon:Schedule(17.6 - delay)
|
||||
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()
|
||||
if not self:IsInCombat() or phase2 then
|
||||
DBM.BossHealth:Hide()
|
||||
@@ -123,64 +89,224 @@ function mod:TankThrow()
|
||||
self:ScheduleMethod(20.6, "TankThrow")
|
||||
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()
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2124201) then
|
||||
phase2 = true
|
||||
self.vb.phase = 2
|
||||
self:ScheduleMethod(0, "ShiftingPolarity")
|
||||
end
|
||||
end
|
||||
|
||||
local function arrowOnShow(self)
|
||||
self.elapsed = 0
|
||||
self:SetAlpha(1)
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(2124245) and DBM:AntiSpam(2, 6) then
|
||||
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
|
||||
|
||||
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.
|
||||
local arrowLeft = CreateFrame("Frame", nil, UIParent)
|
||||
arrowLeft:Hide()
|
||||
local arrowLeftTexture = arrowLeft:CreateTexture(nil, "BACKGROUND")
|
||||
arrowLeftTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
|
||||
arrowLeftTexture:SetPoint("CENTER", arrowLeft, "CENTER")
|
||||
arrowLeft:SetHeight(1)
|
||||
arrowLeft:SetWidth(1)
|
||||
arrowLeft:SetPoint("CENTER", UIParent, "CENTER", -150, -30)
|
||||
arrowLeft:SetScript("OnShow", arrowOnShow)
|
||||
arrowLeft:SetScript("OnUpdate", arrowOnUpdate)
|
||||
--local arrowLeft = CreateFrame("Frame", nil, UIParent)
|
||||
--arrowLeft:Hide()
|
||||
--local arrowLeftTexture = arrowLeft:CreateTexture(nil, "BACKGROUND")
|
||||
--arrowLeftTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
|
||||
--arrowLeftTexture:SetPoint("CENTER", arrowLeft, "CENTER")
|
||||
--arrowLeft:SetHeight(1)
|
||||
--arrowLeft:SetWidth(1)
|
||||
--arrowLeft:SetPoint("CENTER", UIParent, "CENTER", -150, -30)
|
||||
--arrowLeft:SetScript("OnShow", arrowOnShow)
|
||||
--arrowLeft:SetScript("OnUpdate", arrowOnUpdate)
|
||||
|
||||
local arrowRight = CreateFrame("Frame", nil, UIParent)
|
||||
arrowRight:Hide()
|
||||
local arrowRightTexture = arrowRight:CreateTexture(nil, "BACKGROUND")
|
||||
arrowRightTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
|
||||
arrowRightTexture:SetPoint("CENTER", arrowRight, "CENTER")
|
||||
arrowRightTexture:SetTexCoord(1, 0, 0, 1)
|
||||
arrowRight:SetHeight(1)
|
||||
arrowRight:SetWidth(1)
|
||||
arrowRight:SetPoint("CENTER", UIParent, "CENTER", 150, -30)
|
||||
arrowRight:SetScript("OnShow", arrowOnShow)
|
||||
arrowRight:SetScript("OnUpdate", arrowOnUpdate)
|
||||
--local arrowRight = CreateFrame("Frame", nil, UIParent)
|
||||
--arrowRight:Hide()
|
||||
--local arrowRightTexture = arrowRight:CreateTexture(nil, "BACKGROUND")
|
||||
--arrowRightTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
|
||||
--arrowRightTexture:SetPoint("CENTER", arrowRight, "CENTER")
|
||||
----arrowRightTexture:SetTexCoord(1, 0, 0, 1)
|
||||
--arrowRight:SetHeight(1)
|
||||
--arrowRight:SetWidth(1)
|
||||
--arrowRight:SetPoint("CENTER", UIParent, "CENTER", 150, -30)
|
||||
--arrowRight:SetScript("OnShow", arrowOnShow)
|
||||
--arrowRight:SetScript("OnUpdate", arrowOnUpdate)
|
||||
|
||||
local arrowUp = CreateFrame("Frame", nil, UIParent)
|
||||
arrowUp:Hide()
|
||||
local arrowUpTexture = arrowUp:CreateTexture(nil, "BACKGROUND")
|
||||
arrowUpTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
|
||||
arrowUpTexture:SetRotation(math.pi * 3 / 2)
|
||||
arrowUpTexture:SetPoint("CENTER", arrowUp, "CENTER")
|
||||
arrowUp:SetHeight(1)
|
||||
arrowUp:SetWidth(1)
|
||||
arrowUp:SetPoint("CENTER", UIParent, "CENTER", 0, 40)
|
||||
arrowUp:SetScript("OnShow", arrowOnShow)
|
||||
arrowUp:SetScript("OnUpdate", arrowOnUpdate)
|
||||
--local arrowUp = CreateFrame("Frame", nil, UIParent)
|
||||
--arrowUp:Hide()
|
||||
--local arrowUpTexture = arrowUp:CreateTexture(nil, "BACKGROUND")
|
||||
--arrowUpTexture:SetTexture("Interface\\AddOns\\DBM-Naxx\\ConstructQuarter\\Textures\\arrow")
|
||||
--arrowUpTexture:SetRotation(math.pi * 3 / 2)
|
||||
--arrowUpTexture:SetPoint("CENTER", arrowUp, "CENTER")
|
||||
--arrowUp:SetHeight(1)
|
||||
--arrowUp:SetWidth(1)
|
||||
--arrowUp:SetPoint("CENTER", UIParent, "CENTER", 0, 40)
|
||||
--arrowUp:SetScript("OnShow", arrowOnShow)
|
||||
--arrowUp:SetScript("OnUpdate", arrowOnUpdate)
|
||||
|
||||
function mod:ShowRightArrow()
|
||||
arrowRight:Show()
|
||||
end
|
||||
--function mod:ShowRightArrow()
|
||||
-- arrowRight:Show()
|
||||
--end
|
||||
|
||||
function mod:ShowLeftArrow()
|
||||
arrowLeft:Show()
|
||||
end
|
||||
|
||||
function mod:ShowUpArrow()
|
||||
arrowUp:Show()
|
||||
end
|
||||
--function mod:ShowLeftArrow()
|
||||
-- arrowLeft:Show()
|
||||
--end
|
||||
--
|
||||
--function mod:ShowUpArrow()
|
||||
-- arrowUp:Show()
|
||||
--end
|
||||
|
||||
@@ -2,7 +2,7 @@ local mod = DBM:NewMod("Kel'Thuzad", "DBM-Naxx", 5)
|
||||
local L = mod:GetLocalizedStrings()
|
||||
|
||||
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:RegisterCombat("yell", L.Yell)
|
||||
mod:EnableModel()
|
||||
@@ -11,530 +11,347 @@ mod:RegisterEvents(
|
||||
"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_SUCCESS",
|
||||
"CHAT_MSG_MONSTER_EMOTE",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_AURA",
|
||||
"UNIT_DIED",
|
||||
"PLAYER_ALIVE"
|
||||
)
|
||||
|
||||
----------PHASE 1----------
|
||||
-----MAJOR ADD WAVE-----
|
||||
local warnMajorWave = mod:NewAnnounce("Major Wave Spawned", 2, 1003064, nil, "Show warning for Major Wave spawn")
|
||||
local warnMajorWaveSoon = mod:NewAnnounce("Major Wave Spawns Soon", 3, 1003064, nil, "Show pre-warning for Major Wave spawn")
|
||||
local timerMajorWave = mod:NewTimer(30, "Next Major Wave", 1003064, nil, "Show timer for Major Wave spawn")
|
||||
local warnAbomination = mod:NewAnnounce("Abomination spawning", 1, 500335)
|
||||
local timerAbomination = mod:NewTimer(30, "Abomination spawning", 500335)
|
||||
local warnBanshee = mod:NewAnnounce("Soul Weaver spawning", 1, 58359)
|
||||
local timerBanshee = mod:NewTimer(30, "Soul Weaver spawning", 58359)
|
||||
local warnPosess = mod:NewTargetAnnounce(2124512, 2)
|
||||
local timerPosess = mod:NewTargetTimer(10, 2124512)
|
||||
-----CONSTRICTING CHAINS-----
|
||||
local warnChains = mod:NewTargetAnnounce(1003114, 2)
|
||||
local warnChains = mod:NewTargetAnnounce(1003114, 2)
|
||||
-----WAIL OF SOULS-----
|
||||
local warnWailSoul = mod:NewSpellAnnounce(1003115, 2)
|
||||
local warnWailSoul = mod:NewSpellAnnounce(1003115, 2)
|
||||
-----PHASE 1 -> 2 TRANSITION-----
|
||||
local warnPhase2 = mod:NewPhaseAnnounce(2, 3)
|
||||
local timerPhase2 = mod:NewTimer(180, "Phase Two", 29485, nil, "Show timer for Phase Two")
|
||||
-----PHASE 2 -> 3 TRANSITION-----
|
||||
local warnPhase3 = mod:NewPhaseAnnounce(3, 3)
|
||||
local timerPhase3 = mod:NewTimer(378, "Phase Three", 29485, nil, "Show timer for Phase Three")
|
||||
local warnPhase2 = mod:NewPhaseAnnounce(2, 3)
|
||||
local timerPhase2 = mod:NewTimer(178, "Phase Two", 500992, nil, "Show timer for Phase Two")
|
||||
local timerPhase2Transition = mod:NewTimer(15, "Phase Two starting", 500992)
|
||||
----------PHASE 2----------
|
||||
-----SHADE OF NAXXRAMAS-----
|
||||
local warnNaxxShade = mod:NewAnnounce("Shade of Naxx Spawned", 2, 25228, nil, "Show warning for Shade of Naxxramas spawn")
|
||||
local warnNaxxShadeSoon = mod:NewAnnounce("Shade of Naxx Spawns Soon", 3, 25228, nil, "Show pre-warning for Shade of Naxxramas spawn")
|
||||
local timerNaxxShade = mod:NewTimer(60, "Next Shade of Naxx", 25228, nil, "Show timer for Shade of Naxxramas spawn")
|
||||
-----DISRUPTING SHOUT-----
|
||||
local warnShout = mod:NewSpellAnnounce(29107, 2)
|
||||
local warnShoutSoon = mod:NewSoonAnnounce(29107, 3)
|
||||
local timerShout = mod:NewCDTimer(16, 29107)
|
||||
-----SEEING RED-----
|
||||
local warnSeeingRed = mod:NewSpellAnnounce(1003255, 2)
|
||||
-----GASTRIC AFFLICTION-----
|
||||
local warnGastric = mod:NewTargetAnnounce(1003086, 2)
|
||||
local specWarnGastric = mod:NewSpecialWarningYou(1003086)
|
||||
-----VOID ZONE-----
|
||||
local specWarnVoid = mod:NewSpecialWarningYou(28865)
|
||||
-----SAFETY DANCE-----
|
||||
local warnDanceSoon = mod:NewAnnounce("Safety Dance Soon", 2, 46573, nil, "Show pre-warning for the Safetyy Dance")
|
||||
local warnDance = mod:NewAnnounce("Dance Ends Now", 3, 46573, nil, "Show warning for the Safety Dance")
|
||||
local timerDance = mod:NewTimer(22, "Safety Dance Starts", 46573, nil, "Show timer for the Safety Dance")
|
||||
-----HARVEST SOUL-----
|
||||
local warnHarvestSoon = mod:NewSoonAnnounce(28679, 3)
|
||||
local warnHarvest = mod:NewSpellAnnounce(28679, 2)
|
||||
local timerHarvest = mod:NewNextTimer(15, 28679)
|
||||
-----MAEXXNA SPIDERLINGS-----
|
||||
local timerSpider = mod:NewNextTimer(16, 43134)
|
||||
-----NOTH'S SHADE (UNSCRIPTED)-----
|
||||
local warnNothShade = mod:NewAnnounce("Noth's Shade Spawned", 2, 1003072, nil, "Show warning for Noth's Shade spawn")
|
||||
local timerNothShade = mod:NewTimer(60, "Next Noth's Shade", 1003072, nil, "Show timer for Noth's Shade spawn")
|
||||
-----FROST BLAST-----
|
||||
local warnBlast = mod:NewSpellAnnounce(29879, 2)
|
||||
local timerBlast = mod:NewCDTimer(16, 29879)
|
||||
-----DETONATE MANA-----
|
||||
local warnMana = mod:NewSpellAnnounce(27819, 2)
|
||||
local timerMana = mod:NewCDTimer(30, 27819)
|
||||
-----DEATH AND DECAY-----
|
||||
local specWarnDnD = mod:NewSpecialWarningYou(1003113)
|
||||
-----CHAINS OF KEL'THUZAD-----
|
||||
local warnChains = mod:NewSpellAnnounce(28410, 2)
|
||||
local timerChains = mod:NewCDTimer(16, 28410)
|
||||
--Shuffle in all timers we want to kill--
|
||||
--ANUB--
|
||||
local timerLocust = mod:NewNextTimer(90, 2123004)
|
||||
local timerImpale = mod:NewCDTimer(15, 2123001)
|
||||
--Faerlina--
|
||||
local timerSadism = mod:NewNextTimer(30, 2123101)
|
||||
--NOTH--
|
||||
local timerCurse = mod:NewNextTimer(30, 2123805)
|
||||
--LOATHEB--
|
||||
local timerNextDeathbloom = mod:NewNextTimer(30, 2122627)
|
||||
local timerDeathblooming = mod:NewTimer(15, "Deathbloom expires!", 2122627)
|
||||
local timerNecrotic = mod:NewBuffActiveTimer(16, 2122601)
|
||||
--INSTRUCTOR--
|
||||
local timerenrage = mod:NewTimer(180, "Enrage", 2123914)
|
||||
local timerKnife = mod:NewNextTimer(15, 2123924)
|
||||
--HORSEMEN--
|
||||
local timerMark = mod:NewNextTimer(12, 2124103)
|
||||
local timerNextHolyWrath = mod:NewNextTimer(20, 2124141)
|
||||
local timerNextDeepChill = mod:NewNextTimer(20, 2124167)
|
||||
local timerNextMeteor = mod:NewNextTimer(20, 2124128)
|
||||
local timerNextFamine = mod:NewNextTimer(20, 2124166)
|
||||
--PATCH--
|
||||
local timerGastric = mod:NewNextTimer(20,2122517)
|
||||
local timerGastricSelf = mod:NewTargetTimer(15,2122517)
|
||||
--GROBB--
|
||||
local timerSpray = mod:NewCDTimer(20, 2122818)
|
||||
local timerNextInjection = mod:NewNextTimer(15, 2122807)
|
||||
--GLUTH--
|
||||
local timerDecimate = mod:NewNextTimer(120, 2122905)
|
||||
--THADD--
|
||||
local timerShiftCast = mod:NewCastTimer(4, 2124201)
|
||||
local timerNextShift = mod:NewNextTimer(34, 2124201)
|
||||
local warnShiftCasting = mod:NewCastAnnounce(2124201, 3)
|
||||
--SAPPH--
|
||||
local timerNextBellowing = mod:NewNextTimer(45, 2124332)
|
||||
-----PHASE 2 -> 3 TRANSITION-----
|
||||
local warnPhase3 = mod:NewPhaseAnnounce(3, 3)
|
||||
local timerPhase3 = mod:NewTimer(10, "Phase Three", 802125, nil, "Show the timer for Phase Three")
|
||||
----------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-----
|
||||
mod:AddBoolOption("ShowRange", true)
|
||||
----------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----------
|
||||
local notRealRazuv = 0
|
||||
local hasShoutCast = 0
|
||||
local phase = 0
|
||||
local shadesSpawned = 0
|
||||
local berserkTimer = mod:NewBerserkTimer(1140)
|
||||
local icy = 8
|
||||
local mana = 8
|
||||
local necroticSpam = 0
|
||||
local bloomSpam = 0
|
||||
local warnFrost = 0
|
||||
local frostPhase = 0
|
||||
local fissure = 20
|
||||
local shadeCounter = 0
|
||||
|
||||
-----CODE START-----
|
||||
function mod:OnCombatStart(delay)
|
||||
mod:phaseOne()
|
||||
berserkTimer:Start(1140)
|
||||
notRealRazuv = 1
|
||||
self.vb.phase = 1
|
||||
icy = 8
|
||||
mana = 8
|
||||
warnFrost = 0
|
||||
frostPhase = 0
|
||||
shadeCounter = 0
|
||||
fissure = 20
|
||||
self.vb.phase = 1
|
||||
mod:ScheduleMethod(0-delay,"PhaseOne")
|
||||
end
|
||||
|
||||
function mod:phaseOne()
|
||||
phase = 1
|
||||
anub = 0
|
||||
faerlina = 0
|
||||
maexx = 0
|
||||
noth = 0
|
||||
heigan = 0
|
||||
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")
|
||||
function mod:PhaseOne()
|
||||
timerPhase2:Start()
|
||||
timerAbomination:Start(10)
|
||||
timerBanshee:Start(25)
|
||||
self:ScheduleMethod(10, "Abomination")
|
||||
self:ScheduleMethod(25, "Banshee")
|
||||
self:ScheduleMethod(178, "PhaseTwoTransition")
|
||||
end
|
||||
|
||||
function mod:timerMajorWaveRepeat()
|
||||
timer = 30
|
||||
warnMajorWave:Schedule(timer)
|
||||
warnMajorWaveSoon:Schedule(timer-5)
|
||||
timerMajorWave:Start(timer)
|
||||
function mod:Abomination()
|
||||
warnAbomination:Show()
|
||||
timerAbomination:Start()
|
||||
self:ScheduleMethod(30, "Abomination")
|
||||
end
|
||||
|
||||
function mod:phase2Transition()
|
||||
timer = 180
|
||||
warnPhase2:Schedule(timer)
|
||||
warnPhase2Soon:Schedule(timer-10)
|
||||
timerPhase2:Start(timer)
|
||||
self:ScheduleMethod(timer, "phaseTwo")
|
||||
function mod:Banshee()
|
||||
warnBanshee:Show()
|
||||
timerBanshee:Start()
|
||||
self:ScheduleMethod(30, "Banshee")
|
||||
end
|
||||
|
||||
function mod:phaseTwo()
|
||||
phase = 2
|
||||
function mod:PhaseTwoTransition()
|
||||
self:UnscheduleMethod("Banshee")
|
||||
self:UnscheduleMethod("Abomination")
|
||||
timerAbomination:Stop()
|
||||
timerBanshee:Stop()
|
||||
timerPhase2Transition:Start()
|
||||
end
|
||||
|
||||
|
||||
function mod:PhaseTwo()
|
||||
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
|
||||
|
||||
function mod:phase3Transition()
|
||||
timer = 600
|
||||
warnPhase3:Schedule(timer)
|
||||
warnPhase3Soon:Schedule(timer-10)
|
||||
timerPhase3:Start(timer)
|
||||
self:ScheduleMethod(timer, "phaseThree")
|
||||
function mod:PhaseThreeTransition()
|
||||
timerDnD:Start(10)
|
||||
timerPhase3:Start()
|
||||
end
|
||||
|
||||
function mod:phaseThree()
|
||||
function mod:PhaseThree()
|
||||
phase = 3
|
||||
self.vb.phase = 3
|
||||
if self.Options.ShowRange then
|
||||
mod:RangeTogglePhaseThree()
|
||||
end
|
||||
timerBlast:Start(45)
|
||||
timerMana:Start(30)
|
||||
timerChains:Start(90)
|
||||
timerDnD:Start()
|
||||
timerNextManaBomb:Start(20)
|
||||
timerFissure:Start(10)
|
||||
timerFlashFreeze:Start()
|
||||
self:ScheduleMethod(20, "DnD")
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START()
|
||||
if args:IsSpellID(28478) and phase == 2 then
|
||||
self:Unschedule("warnPhase3")
|
||||
self:Unschedule("warnPhase3Soon")
|
||||
self:UnscheduleMethod("phaseThree")
|
||||
timerPhase3:Stop()
|
||||
mod:phaseThree()
|
||||
end
|
||||
-- self:ScheduleMethod(10, "Fissure")
|
||||
-- Flash Freeze (2124587)
|
||||
-- Death and Decay (2124575) fixed
|
||||
-- Shadow Fissure (2124579) fixed
|
||||
-- Mana Bomb (2124572) fixed
|
||||
--[[ CHECK
|
||||
function mod:ShadowFissure()
|
||||
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
|
||||
|
||||
-- function mod:timerNaxxShadeRepeat()
|
||||
-- if shadesSpawned == 0 then
|
||||
-- timer = 34
|
||||
-- warnNaxxShade:Schedule(timer)
|
||||
-- warnNaxxShadeSoon:Schedule(timer-10)
|
||||
-- timerNaxxShade:Start(timer)
|
||||
-- shadesSpawned = shadesSpawned+1
|
||||
-- warnShout:Schedule(timer+16)
|
||||
-- warnShoutSoon:Schedule(timer+11)
|
||||
-- timerShout:Start(timer+16)
|
||||
-- else
|
||||
-- timer = 60
|
||||
-- warnNaxxShade:Schedule(timer)
|
||||
-- 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:FrostPhaseFinished()
|
||||
timerDnD:Start(25)
|
||||
self:ScheduleMethod(25, "DnD")
|
||||
end
|
||||
|
||||
function mod:DnD()
|
||||
timerDnD:Start()
|
||||
warnDnD:Show()
|
||||
self:ScheduleMethod(20,"DnD")
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
-----CONSTRICTING CHAINS-----
|
||||
if args:IsSpellID(1003114) then
|
||||
if args:IsSpellID(2124516) then
|
||||
warnChains:Show(args.destName)
|
||||
-----SHADOW FISSURE-----
|
||||
elseif args:IsSpellID(2124579) and DBM:AntiSpam(5,5) then
|
||||
if args.destName == UnitName("player") then
|
||||
specWarnFissure:Show()
|
||||
else
|
||||
warnFissure:Show()
|
||||
end
|
||||
end
|
||||
-----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
|
||||
timerFissure:Start()
|
||||
-----DEATH AND DECAY-----
|
||||
if args:IsSpellID(1003113) then
|
||||
elseif args:IsSpellID(2124575, 2124576, 2124577, 2124578) then
|
||||
if args.destName == UnitName("player") then
|
||||
specWarnDnD:Show()
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
function mod:UNIT_HEALTH(uId)
|
||||
--[[
|
||||
if phase == 2 then
|
||||
-----SPIDER WING-----
|
||||
if spiderBoss == 1 then
|
||||
spiderHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
|
||||
elseif spiderBoss == 2 then
|
||||
spiderHealth = math.max(0, UnitHealth("boss2")) / math.max(1, UnitHealthMax("boss2")) * 100;
|
||||
elseif spiderBoss == 3 then
|
||||
spiderHealth = math.max(0, UnitHealth("boss3")) / math.max(1, UnitHealthMax("boss3")) * 100;
|
||||
elseif spiderBoss == 4 then
|
||||
spiderHealth = math.max(0, UnitHealth("boss4")) / math.max(1, UnitHealthMax("boss4")) * 100;
|
||||
end
|
||||
-----PLAGUE WING-----
|
||||
if plagueBoss == 1 then
|
||||
plagueHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
|
||||
elseif plagueBoss == 2 then
|
||||
plagueHealth = math.max(0, UnitHealth("boss2")) / math.max(1, UnitHealthMax("boss2")) * 100;
|
||||
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")
|
||||
if self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.80 and warnFrost == 0 then
|
||||
warnFrost = 1
|
||||
warnFrostSoon:Show()
|
||||
elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and warnFrost == 1 then
|
||||
warnFrost = 2
|
||||
warnFrostSoon:Show()
|
||||
elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.75 and frostPhase == 0 then
|
||||
frostPhase = 1
|
||||
self:ScheduleMethod(43, "FrostPhase")
|
||||
timerKTteleport:Start(43)
|
||||
elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.50 and frostPhase == 1 then
|
||||
frostPhase = 2
|
||||
self:ScheduleMethod(43, "FrostPhase")
|
||||
timerKTteleport:Start(43)
|
||||
elseif self:GetUnitCreatureId(uId) == 15990 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.40 and frostPhase == 2 then
|
||||
frostPhase = 3
|
||||
warnAddsSoon:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:RangeTogglePhaseTwo(show)
|
||||
if show then
|
||||
DBM.RangeCheck:Show(15)
|
||||
else
|
||||
DBM.RangeCheck:Hide()
|
||||
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
|
||||
if msg == L.EmotePhase3 or msg:find(L.EmotePhase3) then
|
||||
self:ScheduleMethod(0, "PhaseThree")
|
||||
end
|
||||
end
|
||||
|
||||
function mod:RangeTogglePhaseThree(show)
|
||||
if show then
|
||||
DBM.RangeCheck:Show(10)
|
||||
else
|
||||
DBM.RangeCheck:Hide()
|
||||
function mod:CHAT_MSG_MONSTER_EMOTE(msg)
|
||||
if msg == L.EmotePhase3 or msg:find(L.EmotePhase3) then
|
||||
self:ScheduleMethod(0, "PhaseThree")
|
||||
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
|
||||
@@ -7,102 +7,148 @@ mod:RegisterCombat("combat")
|
||||
mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"CHAT_MSG_MONSTER_EMOTE",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE",
|
||||
"CHAT_MSG_MONSTER_EMOTE",
|
||||
"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-----
|
||||
local warnAirPhaseSoon = mod:NewAnnounce("WarningAirPhaseSoon", 3, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp")
|
||||
local warnAirPhaseNow = mod:NewAnnounce("WarningAirPhaseNow", 4, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp")
|
||||
local warnLanded = mod:NewAnnounce("WarningLanded", 4, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp")
|
||||
local warnDeepBreath = mod:NewSpecialWarning("WarningDeepBreath")
|
||||
local timerLanding = mod:NewTimer(28.5, "TimerLanding", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp")
|
||||
local timerAirPhase = mod:NewTimer(66, "TimerAir", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp")
|
||||
local timerIceBlast = mod:NewTimer(9.3, "TimerIceBlast", 15876)
|
||||
local warnDeepBreath = mod:NewSpecialWarning("WarningDeepBreath")
|
||||
local timerDeepBreath = mod:NewTimer(16.5, "Deep Breath", 2106817)
|
||||
-----AIR PHASE------
|
||||
local warnAirPhaseSoon = mod:NewAnnounce("WarningAirPhaseSoon", 3, 2124314)
|
||||
local warnAirPhaseNow = mod:NewAnnounce("WarningAirPhaseNow", 4, 2124314)
|
||||
local timerAirPhase = mod:NewTimer(120, "TimerAir", 2124314)
|
||||
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")
|
||||
-----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-----
|
||||
function mod:OnCombatStart(delay)
|
||||
noTargetTime = 0
|
||||
isFlying = false
|
||||
warnAirPhaseSoon:Schedule(38.5 - delay)
|
||||
timerAirPhase:Start(48.5 - delay)
|
||||
warnAirPhaseSoon:Schedule(80-delay)
|
||||
timerAirPhase:Start(90-delay)
|
||||
timerNextBreath:Start(-delay)
|
||||
timerNextCurse:Start(15-delay)
|
||||
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)
|
||||
if args:IsSpellID(28522) and args:IsPlayer() and self.Options.WarningIceblock then
|
||||
SendChatMessage(L.WarningYellIceblock, "YELL")
|
||||
if args:IsSpellID(2124344) then
|
||||
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
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(28542, 55665) then -- Life Drain
|
||||
warnDrainLifeNow:Show()
|
||||
warnDrainLifeSoon:Schedule(18.5)
|
||||
timerDrainLife:Start()
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(2124332) then
|
||||
specWarnBellowing:Show()
|
||||
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
|
||||
|
||||
function mod:CHAT_MSG_MONSTER_EMOTE(msg)
|
||||
if msg == L.EmoteBreath or msg:find(L.EmoteBreath) then
|
||||
self:SendSync("DeepBreath")
|
||||
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
|
||||
|
||||
mod.CHAT_MSG_RAID_BOSS_EMOTE = mod.CHAT_MSG_MONSTER_EMOTE -- used to be a normal emote
|
||||
|
||||
function mod:OnSync(event)
|
||||
if event == "DeepBreath" then
|
||||
timerIceBlast:Show()
|
||||
timerLanding:Update(14)
|
||||
self:ScheduleMethod(14.5, "Landing")
|
||||
warnDeepBreath:Show()
|
||||
function mod:UNIT_DIED(args)
|
||||
local cid = self:GetCIDFromGUID(args.destGUID)
|
||||
if cid == 15989 or cid == 26630 then
|
||||
timerAirPhase:Stop()
|
||||
timerLanding:Stop()
|
||||
timerNextBellowing:Stop()
|
||||
timerNextBreath:Stop()
|
||||
timerNextCurse:Stop()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:Landing()
|
||||
warnAirPhaseSoon:Schedule(56)
|
||||
warnLanded:Show()
|
||||
timerAirPhase:Start()
|
||||
function mod:OnCombatEnd()
|
||||
timerAirPhase:Stop()
|
||||
timerLanding:Stop()
|
||||
timerNextBellowing:Stop()
|
||||
timerNextBreath:Stop()
|
||||
timerNextCurse:Stop()
|
||||
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)
|
||||
|
||||
@@ -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_DOSE", --This should allow the addon to process this Event using the scripting from Kel'Thuzad for Harvest Soul.
|
||||
"UNIT_DIED",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_DIED",
|
||||
"CHAT_MSG_MONSTER_YELL"
|
||||
)
|
||||
|
||||
-----ADD DEATHS-----
|
||||
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")
|
||||
-----HARVEST SOUL-----
|
||||
local warnHarvestSoon = mod:NewSoonAnnounce(28679, 3)
|
||||
local warnHarvestSoon = mod:NewSoonAnnounce(28679, 2)
|
||||
local warnHarvest = mod:NewSpellAnnounce(28679, 2)
|
||||
local timerHarvest = mod:NewNextTimer(15, 28679)
|
||||
-----COMBAT START----
|
||||
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 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----
|
||||
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 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-----
|
||||
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
|
||||
|
||||
function mod:HarvestSoul()
|
||||
timer = 15
|
||||
timerHarvest:Start(timer)
|
||||
warnHarvestSoon:Schedule(timer-3, 15)
|
||||
warnHarvest:Schedule(timer)
|
||||
self:ScheduleMethod(timer, "HarvestSoul")
|
||||
timerHarvest:Start(20)
|
||||
warnHarvestSoon:Schedule(17)
|
||||
warnHarvest:Schedule(20)
|
||||
self:ScheduleMethod(20, "HarvestSoul")
|
||||
end
|
||||
|
||||
function mod:UNIT_DIED(args)
|
||||
@@ -65,4 +53,35 @@ function mod:UNIT_DIED(args)
|
||||
warnKnightDown:Show()
|
||||
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
|
||||
@@ -7,16 +7,39 @@ mod:RegisterCombat("combat", 16063, 16064, 16065, 30549)
|
||||
mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
-----MARKS-----
|
||||
local warnMarkSoon = mod:NewAnnounce("WarningMarkSoon", 1, 28835, false)
|
||||
local warnMarkNow = mod:NewAnnounce("WarningMarkNow", 2, 28835)
|
||||
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-----
|
||||
local berserkTimer = mod:NewBerserkTimer(600)
|
||||
local berserkTimer = mod:NewBerserkTimer(606)
|
||||
local meteorTarget = nil
|
||||
mod:AddBoolOption("HealthFrame", true)
|
||||
mod:SetBossHealthInfo(
|
||||
16064, L.Korthazz,
|
||||
@@ -29,21 +52,120 @@ local markCounter = 0
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
berserkTimer:Start()
|
||||
timerMark:Start(18-delay)
|
||||
timerNextMeteor:Start(21-delay)
|
||||
timerNextDeepChill:Start(11-delay)
|
||||
timerNextHolyWrath:Start(25-delay)
|
||||
timerNextFamine:Start(16-delay)
|
||||
markCounter = 0
|
||||
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
|
||||
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()
|
||||
markCounter = markCounter + 1
|
||||
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)
|
||||
if args:IsSpellID(28832, 28833, 28834, 28835) and args:IsPlayer() then
|
||||
if args.amount >= 4 then
|
||||
if args:IsSpellID(2124103,2124107,2124111,2124115) and args:IsPlayer() then
|
||||
if args.amount >= 3 then
|
||||
specWarnMarkOnPlayer:Show(args.spellName, args.amount)
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
@@ -10,122 +10,156 @@ mod:SetBossHealthInfo(
|
||||
)
|
||||
mod:RegisterEvents(
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_CAST_START",
|
||||
"UNIT_HEALTH",
|
||||
"PLAYER_ALIVE"
|
||||
"UNIT_DIED",
|
||||
"PLAYER_ALIVE",
|
||||
"SPELL_MISSED"
|
||||
)
|
||||
|
||||
-----DISRUPTING SHOUT-----
|
||||
local warnShoutNow = mod:NewSpellAnnounce(29107, 2)
|
||||
local warnShoutSoon = mod:NewSoonAnnounce(29107, 3)
|
||||
local timerShout = mod:NewCDTimer(10, 29107)
|
||||
local warnShoutNowBackup = mod:NewSpellAnnounce(29107, 2)
|
||||
local warnShoutSoonBackup = mod:NewSoonAnnounce(29107, 3)
|
||||
local timerShoutBackup = mod:NewCDTimer(10, 29107)
|
||||
-----SHADOW BURST-----
|
||||
local warnShadowBurstNow = mod:NewSpellAnnounce(1003108, 2)
|
||||
local warnShadowBurstSoon = mod:NewSoonAnnounce(1003108, 3)
|
||||
local timerShadowBurst = mod:NewNextTimer(25, 1003108)
|
||||
local timerShout = mod:NewCDTimer(8, 2123920)
|
||||
-----Break Unholy Blade-----
|
||||
local warnUnholyBladeNow = mod:NewSpellAnnounce(2123928, 2)
|
||||
local warnUnholyBladeSoon = mod:NewSoonAnnounce(2123928, 2)
|
||||
local timerUnholyBlade = mod:NewNextTimer(30, 2123928)
|
||||
local timerCastUnholyBlade = mod:NewCastTimer(3, 2123928)
|
||||
-----JAGGED KNIFE-----
|
||||
local warnKnifeNow = mod:NewTargetAnnounce(55550, 2)
|
||||
local specWarnKnife = mod:NewSpecialWarningSpell(55550, nil, nil, nil, 10)
|
||||
-----BRUISING BLOW-----
|
||||
local warnBlowNow = mod:NewSpellAnnounce(26613, 2)
|
||||
local warnBlowSoon = mod:NewSoonAnnounce(26613, 3)
|
||||
local timerBlow = mod:NewNextTimer(15, 26613)
|
||||
-----CURSE OF FEEBLENESS-----
|
||||
local warnCurseNow = mod:NewSpellAnnounce(1003253, 2)
|
||||
local warnCurseEndSoon = mod:NewSoonAnnounce(1003253, 3)
|
||||
local timerCurse = mod:NewBuffActiveTimer(120, 1003253)
|
||||
local warnKnifeNow = mod:NewTargetAnnounce(2123924, 2)
|
||||
local timerKnife = mod:NewNextTimer(15, 2123924)
|
||||
-----Death Strike-----
|
||||
local timerDeathStrike = mod:NewNextTimer(15,2123919)
|
||||
local warnDeathStrike = mod:NewCastAnnounce(2123919)
|
||||
local specwarnDeathStrike = mod:NewSpecialWarningStack(2123919, 2)
|
||||
--------Strikes--------------
|
||||
local timerPlagueStrike = mod:NewTimer(12, "Plague Strike active", 2123905)
|
||||
local timerFrostStrike = mod:NewTimer(12, "Frost Strike active", 2123904)
|
||||
-----MISC-----
|
||||
local razHealth
|
||||
local prewarn
|
||||
local phase
|
||||
local notKT = 0
|
||||
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-----
|
||||
function mod:OnCombatStart(delay)
|
||||
phase = 1
|
||||
prewarn = 1
|
||||
self.vb.phase = 1
|
||||
RealRazuv = 1
|
||||
-----Shout-----
|
||||
warnShoutNow:Schedule(16 - delay)
|
||||
warnShoutSoon:Schedule(11 - delay)
|
||||
timerShout:Start(16 - delay)
|
||||
-----Shadow Burst-----
|
||||
warnShadowBurstNow:Schedule(25-delay)
|
||||
warnShadowBurstSoon:Schedule(20-delay)
|
||||
timerShadowBurst:Start(25-delay)
|
||||
-----Bruising Blow-----
|
||||
warnBlowNow:Schedule(15-delay)
|
||||
warnBlowSoon:Schedule(10-delay)
|
||||
timerBlow:Start(15-delay)
|
||||
-----Break Unholy Blade-----
|
||||
timerUnholyBlade:Start(-delay)
|
||||
if mod:GetBossTarget(16061) ~= nil then
|
||||
timerKnife:Start(-delay)
|
||||
timerDeathStrike:Start(20-delay)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:BreakUnholyBlade()
|
||||
warnUnholyBladeNow:Show()
|
||||
timerUnholyBlade:Start()
|
||||
timerCastUnholyBlade:Start()
|
||||
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
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(55550) then
|
||||
if args:IsSpellID(2123924,2123925,2123926,2123927) then
|
||||
warnKnifeNow:Show(args.destName)
|
||||
if args:IsPlayer() then
|
||||
specWarnKnife:Show(10);
|
||||
SendChatMessage(L.YellKnife, "YELL")
|
||||
notKT = 1
|
||||
SendChatMessage("Jagged Cold Steel Knife on "..UnitName("PLAYER").."!", "Say")
|
||||
end
|
||||
elseif args:IsSpellID(1003253) then
|
||||
timer = 120
|
||||
warnCurseNow:Schedule(timer)
|
||||
warnCurseEndSoon:Schedule(timer-10)
|
||||
timerCurse:Start(timer)
|
||||
notKT = 1
|
||||
end
|
||||
timerKnife:Start()
|
||||
end
|
||||
if args:IsSpellID(2123914) then
|
||||
self:ScheduleMethod(0,"PhaseTwo")
|
||||
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
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if RealRazuv then
|
||||
if args:IsSpellID(26613) then
|
||||
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
|
||||
if args:IsSpellID(2123905) then
|
||||
timerPlagueStrike:Start()
|
||||
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
|
||||
|
||||
function mod:SPELL_CAST_START(args)
|
||||
if args:IsSpellID(1003108) then
|
||||
timer = 25
|
||||
warnShadowBurstNow:Schedule(timer)
|
||||
warnShadowBurstSoon:Schedule(timer-5)
|
||||
timerShadowBurst:Start(timer)
|
||||
if args:IsSpellID(2123928,2123929,2123930,2123931) then
|
||||
self:ScheduleMethod(0,"BreakUnholyBlade")
|
||||
end
|
||||
if args:IsSpellID(2123919) then
|
||||
self:ScheduleMethod(0, "DeathStrike")
|
||||
end
|
||||
end
|
||||
|
||||
function mod:UNIT_HEALTH(args)
|
||||
razHealth = math.max(0, UnitHealth("boss1")) / math.max(1, UnitHealthMax("boss1")) * 100;
|
||||
if razHealth < 40 and phase == 1 then
|
||||
phase = 2
|
||||
self.vb.phase = 2
|
||||
warnPhase2:Show();
|
||||
-----Shadow Burst-----
|
||||
warnShadowBurstNow:Cancel();
|
||||
warnShadowBurstSoon:Cancel();
|
||||
timerShadowBurst:Cancel();
|
||||
function mod:UNIT_HEALTH(uId)
|
||||
if self:GetUnitCreatureId(uId) == 16061 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.55 and phase == 1 and prewarn == 1 then
|
||||
warnPhase2Soon:Show()
|
||||
prewarn = 2
|
||||
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
|
||||
@@ -6,79 +6,179 @@ mod:SetCreatureID(15936)
|
||||
mod:RegisterCombat("combat")
|
||||
mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"UNIT_DIED"
|
||||
)
|
||||
|
||||
-----TELEPORT-----
|
||||
local warnTeleportSoon = mod:NewAnnounce("Teleport to Platform 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 timerTeleport = mod:NewTimer(90, "Teleport to Platform", 46573, nil, "Show timer 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", 2, 46573, nil, "Show warning 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----
|
||||
local timerDanceEnds = mod:NewTimer(47, "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")
|
||||
local timerDanceEnds = mod:NewTimer(50, "Dance Ends", 46573, nil, "Show timer for the end of the Safety Dance")
|
||||
-----SPELL DISRUPTION------
|
||||
local specWarnSpellDisruption = mod:NewSpecialWarningYou(29310, false)
|
||||
local specWarnBurningFever = mod:NewSpecialWarningYou(1003068)
|
||||
local specWarnSpellDisruption = mod:NewSpecialWarningYou(2122708)
|
||||
local specWarnDecrepitFever = mod:NewSpecialWarningYou(1003068)
|
||||
-----Touch of the Unclean-----
|
||||
local warnTouch = mod:NewAnnounce(L.HeiganTouch, 2, 196780)-- 196791 heroic
|
||||
local warnTouchHC = mod:NewAnnounce(L.HeiganTouchHC, 2, 196791)
|
||||
local specWarnTouch = mod:NewSpecialWarningStack(2122722, nil, 2)
|
||||
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-----
|
||||
local berserkTimer = mod:NewBerserkTimer(540)
|
||||
local dance = 0
|
||||
local forward = 1
|
||||
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
berserkTimer:Start(540-delay)
|
||||
|
||||
mod:SlowDancePhase()
|
||||
end
|
||||
|
||||
function mod:DancePhase()
|
||||
timer = 45
|
||||
timerDanceEnds:Show(timer)
|
||||
warnDanceEndsSoon:Schedule(timer-10, 10)
|
||||
warnDanceEnds:Schedule(timer)
|
||||
self:ScheduleMethod(timer, "SlowDancePhase")
|
||||
dance = 0
|
||||
self:ScheduleMethod(0-delay,"SlowDancePhase")
|
||||
end
|
||||
|
||||
function mod:SlowDancePhase()
|
||||
timer = 90
|
||||
timerTeleport:Show(timer)
|
||||
warnTeleportSoon:Schedule(timer-15, 15)
|
||||
warnTeleportNow:Schedule(timer)
|
||||
self:ScheduleMethod(timer, "DancePhase")
|
||||
dance = 0
|
||||
forward = 1
|
||||
timerPositionTwo:Stop()
|
||||
timerPositionThree:Stop()
|
||||
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
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(29310) then
|
||||
if args:IsSpellID(2122708) then
|
||||
if args:IsPlayer() then
|
||||
specWarnSpellDisruption:Show();
|
||||
specWarnSpellDisruption:Show()
|
||||
end
|
||||
elseif args:IsSpellID(1003068) then
|
||||
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)
|
||||
specWarnDecrepitFever:Show();
|
||||
SendChatMessage("Decrepit Fever on "..UnitName("PLAYER").."!", "Say")
|
||||
end
|
||||
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
|
||||
|
||||
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
if args:IsSpellID(29310) then
|
||||
if args:IsSpellID(2122722) then
|
||||
if args:IsPlayer() then
|
||||
specWarnSpellDisruption:Show();
|
||||
specWarnTouch:Show(args.amount)
|
||||
else
|
||||
warnTouch:Show(args.spellName, args.destName, args.amount or 1)
|
||||
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
|
||||
|
||||
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
|
||||
@@ -6,51 +6,78 @@ mod:SetCreatureID(16011)
|
||||
mod:RegisterCombat("combat")
|
||||
mod:EnableModel()
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"SPELL_AURA_REMOVED",
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_DIED",
|
||||
"PLAYER_ALIVE"
|
||||
)
|
||||
|
||||
-----SPORES-----
|
||||
local warnSporeNow = mod:NewSpellAnnounce(29234, 3)
|
||||
local warnSporeNow = mod:NewSpellAnnounce(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)
|
||||
-----IMPENDING DOOM-----
|
||||
local warnDoomNow = mod:NewSpellAnnounce(29204, 3)
|
||||
local timerDoom = mod:NewNextTimer(180, 29204)
|
||||
local warnDoomNow = mod:NewSpellAnnounce(29204, 2)
|
||||
local timerNextDoom = mod:NewNextTimer(180, 29204)
|
||||
local timerDoomDamage = mod:NewTimer(8, "Inevitable Doom expires!", 2122623)
|
||||
-----HEALING AURA-----
|
||||
local warnHealSoon = mod:NewAnnounce("WarningHealSoon", 4, 48071)
|
||||
local warnHealNow = mod:NewAnnounce("WarningHealNow", 1, 48071, false)
|
||||
local timerAura = mod:NewBuffActiveTimer(17, 55593)
|
||||
local warnHealNow = mod:NewAnnounce("Healing available!", 1, 48071)
|
||||
local timerNecrotic = mod:NewBuffActiveTimer(16, 2122601)
|
||||
local timerCastHeal = mod:NewTimer(4, "Heal now!", nil)
|
||||
-----SOFT ENRAGE-----
|
||||
local warnSoftEnrageSoon = mod:NewSpellAnnounce(79009, 3)
|
||||
local warnSoftEnrageSoon = mod:NewSpellAnnounce(79009, 2)
|
||||
local warnSoftEnrageNow = mod:NewSoonAnnounce(79009, 2)
|
||||
local loathebHealth
|
||||
local phase
|
||||
local softEnrage
|
||||
-----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-----
|
||||
mod:AddBoolOption("SporeDamageAlert", false)
|
||||
local doomCounter = 0
|
||||
local doomSpam = 0
|
||||
local bloomSpam = 0
|
||||
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
phase = 1
|
||||
doomSpam = 0
|
||||
bloomSpam = 0
|
||||
softEnrage = 0
|
||||
doomCounter = 0
|
||||
if mod:IsDifficulty("heroic25") then
|
||||
sporeTimer = 15
|
||||
else
|
||||
sporeTimer = 15
|
||||
end
|
||||
timerSpore:Start(sporeTimer - delay)
|
||||
warnSporeSoon:Schedule(sporeTimer - delay)
|
||||
timerDoom:Start(120 - delay, doomCounter + 1)
|
||||
self:ScheduleMethod(sporeTimer, "SporeSpawn")
|
||||
timerSpore:Start(15-delay)
|
||||
timerNecrotic:Start(10-delay)
|
||||
timerNextDoom:Start(30-delay)
|
||||
timerNextDeathbloom:Start(10-delay)
|
||||
self:ScheduleMethod(15-delay, "SporeSpawn")
|
||||
end
|
||||
|
||||
function mod:SPELL_CAST_SUCCESS(args)
|
||||
if args:IsSpellID(29204, 55052) then -- Inevitable Doom
|
||||
-- Deathbloom (2122631)
|
||||
-- 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
|
||||
local timer = 30
|
||||
if doomCounter >= 7 then
|
||||
@@ -58,46 +85,64 @@ function mod:SPELL_CAST_SUCCESS(args)
|
||||
else timer = 12 end
|
||||
end
|
||||
warnDoomNow:Show(doomCounter)
|
||||
timerDoom:Start(timer, doomCounter + 1)
|
||||
elseif args:IsSpellID(55593) then
|
||||
timerAura:Start()
|
||||
warnHealSoon:Schedule(14)
|
||||
warnHealNow:Schedule(17)
|
||||
timerNextDoom:Start(timer, doomCounter + 1)
|
||||
timerDoomDamage:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED(args)
|
||||
if args:IsSpellID(79008) then
|
||||
if args:IsPlayer() then
|
||||
specWarnCloudOfBlight:Show();
|
||||
end
|
||||
if args:IsSpellID(2122601) and DBM:AntiSpam(5,2) then
|
||||
timerNecrotic:Start()
|
||||
warnHealNow:Schedule(16)
|
||||
timerCastHeal:Schedule(16)
|
||||
end
|
||||
if args:IsSpellID(2122627) and DBM:AntiSpam(5,4) then
|
||||
specWarnDeathblooming:Show()
|
||||
timerDeathblooming:Start()
|
||||
timerNextDeathbloom:Start()
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
||||
if args:IsSpellID(79008) then
|
||||
if args:IsSpellID(2122646) then
|
||||
if args:IsPlayer() then
|
||||
specWarnCloudOfBlight:Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SporeSpawn(args)
|
||||
timer = 14
|
||||
warnSporeNow:Show()
|
||||
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()
|
||||
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
|
||||
bloomSpam = GetTime()
|
||||
warnDeathbloomStack:Show(args.spellName, args.destName, args.amount or 1)
|
||||
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
|
||||
+101
-46
@@ -6,82 +6,137 @@ mod:SetCreatureID(15954)
|
||||
mod:RegisterCombat("combat")
|
||||
mod:RegisterEvents(
|
||||
"SPELL_CAST_SUCCESS",
|
||||
"SPELL_CAST_START",
|
||||
"SPELL_AURA_APPLIED",
|
||||
"SPELL_AURA_APPLIED_DOSE",
|
||||
"PLAYER_ALIVE"
|
||||
"PLAYER_ALIVE",
|
||||
"UNIT_HEALTH",
|
||||
"UNIT_DIED",
|
||||
"CHAT_MSG_RAID_BOSS_EMOTE"
|
||||
)
|
||||
|
||||
-----TELEPORT-----
|
||||
local warnTeleportNow = mod:NewAnnounce("Teleport Now", 3, 46573, nil, "Show warning for Noth teleporting to and from 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 timerTeleport = mod:NewTimer(600, "Teleport to Balcony", 46573, nil, "Show timer for Noth teleporting to the balcony")
|
||||
local timerTeleportBack = mod:NewTimer(600, "Teleport to Raid", 46573, nil, "Show timer for Noth teleporting from the balcony")
|
||||
local warnIntermissionNow = mod:NewAnnounce("Intermission now", 2, 46573, nil, "Show warning for Noth teleporting to the balcony")
|
||||
local warnIntermissionSoon = mod:NewAnnounce("Intermission soon", 2, 46573, nil, "Show pre-warning 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 warnNothReturn = mod:NewAnnounce("Noth has returned to the battlefield", 46573, nil, "Show warning for Noth returning from the balcony")
|
||||
-----CURSE-----
|
||||
local warnCurse = mod:NewSpellAnnounce(29213, 2)
|
||||
local specWarnCurse = mod:NewSpecialWarningYou(29213)
|
||||
local timerCurse = mod:NewNextTimer(30, 2123805)
|
||||
local warnCurse = mod:NewSpellAnnounce(2123805, 2)
|
||||
local specWarnCurse = mod:NewSpecialWarningYou(2123805)
|
||||
-----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!
|
||||
-----MISC-----
|
||||
-- local berserkTimer = mod:NewBerserkTimer(375)
|
||||
local phase = 0
|
||||
local prePhase = 0
|
||||
local curseSpam = 0
|
||||
|
||||
-----BOSS FUNCTIONS-----
|
||||
function mod:OnCombatStart(delay)
|
||||
-- berserkTimer:Start(375-delay)
|
||||
timerSkeletons:Start(15-delay)
|
||||
timerSkeletons:Schedule(15)
|
||||
phase = 0
|
||||
self:BackInRoom()
|
||||
prePhase = 0
|
||||
curseSpam = 0
|
||||
self:ScheduleMethod(0-delay,"NothFight")
|
||||
end
|
||||
|
||||
function mod:Balcony()
|
||||
local timer
|
||||
if phase == 1 then timer = 60
|
||||
elseif phase == 2 then timer = 60
|
||||
elseif phase == 3 then timer = 60
|
||||
else return end
|
||||
timerTeleportBack:Show(timer)
|
||||
warnTeleportSoon:Schedule(timer - 10)
|
||||
warnTeleportNow:Schedule(timer)
|
||||
self:ScheduleMethod(timer, "BackInRoom")
|
||||
timerSkeletons:Start(5)
|
||||
timerSkeletons:Schedule(5)
|
||||
function mod:Intermission()
|
||||
warnIntermissionNow:Show()
|
||||
timerCurse:Stop()
|
||||
timerWarriorSkeletons:Stop()
|
||||
timerArcaneExplo:Start(15)
|
||||
timerSkeletonWave:Start(10)
|
||||
self:UnscheduleMethod("WarriorSkeletons")
|
||||
self:ScheduleMethod(15,"SkeletonWaves")
|
||||
timerTeleportBack:Start()
|
||||
self:ScheduleMethod(60, "NothFight")
|
||||
end
|
||||
|
||||
function mod:BackInRoom()
|
||||
phase = phase + 1
|
||||
local timer
|
||||
if phase == 1 then timer = 75
|
||||
elseif phase == 2 then timer = 75
|
||||
elseif phase == 3 then timer = 75
|
||||
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()
|
||||
function mod:NothFight()
|
||||
timerWarriorSkeletons:Start(22)
|
||||
timerCurse:Start()
|
||||
self:ScheduleMethod(22,"WarriorSkeletons")
|
||||
if phase >= 1 then
|
||||
warnNothReturn:Show()
|
||||
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)
|
||||
if args:IsSpellID(29213, 54835, 350288) then
|
||||
if args:IsSpellID(2123805) and DBM:AntiSpam(5,1) then
|
||||
if args:IsPlayer() then
|
||||
specWarnCurse:Show();
|
||||
specWarnCurse:Show()
|
||||
end
|
||||
timerCurse:Start()
|
||||
end
|
||||
end
|
||||
|
||||
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
|
||||
specWarnCurse:Show();
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -105,6 +105,10 @@ L:SetOptionLocalization({
|
||||
TimerTeleportBack = "Show timer for Teleport back"
|
||||
})
|
||||
|
||||
L:SetMiscLocalization({
|
||||
Teleport = "%s teleports to the balcony above!"
|
||||
})
|
||||
|
||||
--------------------------
|
||||
-- Heigan the Unclean --
|
||||
--------------------------
|
||||
@@ -167,7 +171,8 @@ L:SetGeneralLocalization({
|
||||
})
|
||||
|
||||
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({
|
||||
@@ -191,7 +196,7 @@ L:SetOptionLocalization({
|
||||
})
|
||||
|
||||
L:SetWarningLocalization({
|
||||
SpecialWarningInjection = "Mutating Injection on you"
|
||||
SpecialWarningInjection = "Mutating Injection on you"
|
||||
})
|
||||
|
||||
L:SetTimerLocalization({
|
||||
@@ -205,6 +210,9 @@ L = DBM:GetModLocalization("Gluth")
|
||||
L:SetGeneralLocalization({
|
||||
name = "Gluth"
|
||||
})
|
||||
L:SetWarningLocalization{
|
||||
DBM_GLUTH_VICIOUS_BITE = "%s on >%s< (%d)" --(args.spellName, args.destName, args.amount or 1)
|
||||
}
|
||||
|
||||
----------------
|
||||
-- Thaddius --
|
||||
@@ -217,8 +225,8 @@ L:SetGeneralLocalization({
|
||||
|
||||
L:SetMiscLocalization({
|
||||
Yell = "Stalagg crush you!",
|
||||
Emote = "%s overloads!",
|
||||
Emote2 = "Tesla Coil overloads!",
|
||||
Emote = "%s overload!",
|
||||
Emote2 = "The Tesla Coils overload!",
|
||||
Boss1 = "Feugen",
|
||||
Boss2 = "Stalagg",
|
||||
Charge1 = "negative",
|
||||
@@ -334,7 +342,7 @@ L:SetWarningLocalization({
|
||||
|
||||
L:SetMiscLocalization({
|
||||
Korthazz = "Thane Korth'azz",
|
||||
Rivendare = "Highlord Mograine",
|
||||
Mograine = "Highlord Mograine",
|
||||
Blaumeux = "Lady Blaumeux",
|
||||
Zeliek = "Sir Zeliek"
|
||||
})
|
||||
@@ -360,7 +368,9 @@ L:SetOptionLocalization({
|
||||
})
|
||||
|
||||
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!"
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user