5.17 + Hyjal from Szyler's Discord

This commit is contained in:
andrew6180
2023-11-25 17:31:26 -07:00
parent 5b3b160e21
commit 00255736e5
33 changed files with 4031 additions and 1185 deletions
+235 -108
View File
@@ -13,7 +13,9 @@ mod:RegisterEvents(
"SPELL_PERIODIC_HEAL",
"SPELL_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