diff --git a/NerubarPalace/Ansurek.lua b/NerubarPalace/Ansurek.lua index a1ebe3ff4..e8ada05de 100644 --- a/NerubarPalace/Ansurek.lua +++ b/NerubarPalace/Ansurek.lua @@ -23,8 +23,11 @@ local webBladesCount = 1 local paralyzingVenomCount = 1 local wrestCount = 1 +local firstShadowGate = false local gloomTouchCount = 1 -local worshipperKilled = 0 +local platformAddsKilled = 0 +local worshippersKilled = 0 +local acolytesKilled = 0 local abyssalInfusionCount = 1 local frothingGluttonyCount = 1 @@ -35,41 +38,61 @@ local gorgeCount = 1 local iconOrder = {6, 3, 7, 1, 2} -- blue, diamond, red, circle, star, skipping green due to the encounter being green tinted local addMarks = {8, 5, 4} -local queenSummonsCollector, queenSummonsMarks = {}, {} +local mobCollector, mobMarks = {}, {} -local timersNormal = { -- 11:29 +local timersNormal = { -- 11:32 [1] = { + [437592] = { 19.3, 56.0, 56.0, 0 }, -- Reactive Toxin [439814] = { 57.5, 54.0, 0 }, -- Silken Tomb [440899] = { 8.5, 40.0, 55.0, 0 }, -- Liquefy [437093] = { 12.5, 40.0, 55.0, 0 }, -- Feast [439299] = { 76.4, 48.0, 0 }, -- Web Blades }, [3] = { - [444829] = { 113.7, 82.0 }, -- Queen's Summons - [438976] = { 43.2, 141.6 }, -- Royal Condemnation - [443325] = { 29.2, 66.0, 80.0 }, -- Infest - [443336] = { 35.2, 66.0, 80.0 }, -- Gorge - [439299] = { 201.2 }, -- Web Blades + [444829] = { 113.7, 82.0, 0 }, -- Queen's Summons + [438976] = { 43.2, 141.6, 0 }, -- Royal Condemnation + [443325] = { 29.2, 66.0, 80.0, 0 }, -- Infest + [443336] = { 35.2, 66.0, 80.0, 0 }, -- Gorge + [439299] = { 201.2, 0 }, -- Web Blades }, } -local timersHeroic = { -- 9:54 +local timersHeroic = { -- 10:09 (enrage) [1] = { + [437592] = { 19.3, 56.0, 56.0, 0 }, -- Reactive Toxin [439814] = { 57.5, 48.0, 16.0, 0 }, -- Silken Tomb [440899] = { 8.5, 40.0, 51.0, 0 }, -- Liquefy [437093] = { 11.4, 40.0, 51.0, 0 }, -- Feast [439299] = { 20.4, 47.0, 47.0, 25.0, 0 }, -- Web Blades }, [3] = { - [444829] = { 119.0, 75.0 }, -- Queen's Summons - [438976] = { 43.2, 58.5, 99.5 }, -- Royal Condemnation - [443325] = { 29.7, 66.0, 82.0 }, -- Infest - [443336] = { 32.7, 66.0, 82.0 }, -- Gorge - [439299] = { 85.0, 39.0, 41.0, 18.5, 49.5 }, -- Web Blades + [444829] = { 119.0, 75.0, 0 }, -- Queen's Summons + [438976] = { 43.2, 58.5, 99.5, 0 }, -- Royal Condemnation + [443325] = { 29.7, 66.0, 82.0, 0 }, -- Infest + [443336] = { 32.7, 66.0, 82.0, 0 }, -- Gorge + [439299] = { 85.0, 39.0, 41.0, 18.5, 49.5, 0 }, -- Web Blades }, } -local timers = mod:Easy() and timersNormal or timersHeroic +local timersMythic = { -- 10:10 (enrage) + [1] = { + [437592] = { 21.1, 56.0, 53.0, 0 }, -- Reactive Toxin + [439814] = { 12.3, 40.0, 54.0, 26.0, 0 }, -- Silken Tomb + [440899] = { 6.4, 40.0, 54.0, 0 }, -- Liquefy + [437093] = { 8.4, 40.0, 54.0, 0 }, -- Feast + [439299] = { 20.3, 40.0, 13.0, 25.0, 16.0, 26.0, 0 }, -- Web Blades + }, + [3] = { + [444829] = { 43.3, 64.0, 83.0, 0 }, -- Queen's Summons + [438976] = { 111.4, 51.9, 34.0, 0 }, -- Royal Condemnation + [443325] = { 30.0, 66.0, 82.0, 0 }, -- Infest + [443336] = { 32.0, 66.0, 82.0, 0 }, -- Gorge + [439299] = { 48.3, 11.0, 26.0, 21.0, 17.0, 16.0, 47.0, 19.0, 14.0, 22.0, 0 }, -- Web Blades + [445422] = { 45.0, 80.0, 88.0, 35.5 }, -- Frothing Gluttony + }, +} + +local timers = mod:Mythic() and timersMythic or mod:Easy() and timersNormal or timersHeroic -------------------------------------------------------------------------------- -- Localization @@ -85,7 +108,6 @@ if L then L.web_blades = "Blades" L.silken_tomb = "Roots" -- Raid being rooted in place L.wrest = "Pull In" - L.slow = "Slow" L.royal_condemnation = "Shackles" L.frothing_gluttony = "Ring" @@ -97,21 +119,22 @@ end -- local reactiveToxinMarker = mod:AddMarkerOption(true, "player", 6, 437592, 6, 3, 7, 1, 2) -- Reactive Toxin -local abyssalInfusionMarker = mod:AddMarkerOption(true, "player", 6, 443888, 1, 2) -- Abyssal Infusion +local chamberAcolyteMarker = mod:AddMarkerOption(true, "npc", 1, -29945, 1, 2) -- Chamber Acolyte +local abyssalInfusionMarker = mod:AddMarkerOption(true, "player", 1, 443888, 1, 2) -- Abyssal Infusion local royalCondemnationMarker = mod:AddMarkerOption(true, "player", 6, 438976, 6, 3, 7) -- Royal Condemnation -local queensSummonsMarker = mod:AddMarkerOption(true, "npc", 8, 444829, 8, 5, 4) -- Queen's Summons +local queensSummonsMarker = mod:AddMarkerOption(true, "npc", 8, 444829, 8, 5, 4) -- Queen's Summons (Summoned Acolyte) function mod:GetOptions() return { - "stages", + {"stages", "CASTBAR"}, -- Stage One: A Queen's Venom {437592, "SAY", "SAY_COUNTDOWN", "ME_ONLY_EMPHASIZE"}, -- Reactive Toxin reactiveToxinMarker, {451278, "SAY", "SAY_COUNTDOWN"}, -- Concentrated Toxin - 464638, -- Frothy Toxin + 464638, -- Frothy Toxin (Fail) 438481, -- Toxic Waves (Damage) 437078, -- Acid (Damage) {437417, "CASTBAR"}, -- Venom Nova - 441556, -- Reactive Vapor + 441556, -- Reactive Vapor (Fail) 439814, -- Silken Tomb 441958, -- Grasping Silk (Damage) 440899, -- Liquefy @@ -125,29 +148,31 @@ function mod:GetOptions() -- Stage Two: Royal Ascension 443403, -- Gloom (Damage) + {460369, "CASTBAR"}, -- Shadowgate -- Queen Ansurek - {449940, "CASTBAR"}, -- Acidic Apocalypse + {449940, "CASTBAR"}, -- Acidic Apocalypse (Fail) -- Ascended Voidspeaker 447950, -- Shadowblast {448046, "COUNTDOWN"}, -- Gloom Eruption -- Devoted Worshipper {447967, "SAY", "ME_ONLY_EMPHASIZE"}, -- Gloom Touch - 462558, -- Cosmic Rupture - {448458, "CASTBAR"}, -- Cosmic Apocalypse + {448458, "CASTBAR"}, -- Cosmic Apocalypse (Fail) -- Chamber Guardian - {448147, "NAMEPLATE"}, -- Oust + {448147, "TANK"}, -- Oust -- Chamber Expeller - {451600, "NAMEPLATE"}, -- Expulsion Beam + 451600, -- Expulsion Beam + -- Chamber Acolyte + {455374, "NAMEPLATE"}, -- Dark Detonation + chamberAcolyteMarker, -- Caustic Skitterer 449236, -- Caustic Fangs -- Stage Three: Paranoia's Feast - -- {449986, "CASTBAR"}, -- Aphotic Communion {443888, "SAY", "SAY_COUNTDOWN", "ME_ONLY_EMPHASIZE"}, -- Abyssal Infusion abyssalInfusionMarker, 455387, -- Abyssal Reverberation 445422, -- Frothing Gluttony - 445880, -- Froth Vapor + 445880, -- Froth Vapor (Fail) 444829, -- Queen's Summons queensSummonsMarker, 445152, -- Acolyte's Essence @@ -171,7 +196,7 @@ function mod:GetOptions() [439814] = L.silken_tomb, -- Silken Tomb (Roots) [440899] = CL.pools, -- Liquefy (Pools) [439299] = L.web_blades, -- Web Blades (Blades) - [447456] = L.slow, -- Paralyzing Venom (Slow) + [447456] = CL.waves, -- Paralyzing Venom (Waves) [447411] = L.wrest, -- Wrest (Pull In) [448046] = CL.knockback, -- Gloom Eruption (Knockback) [443888] = CL.portals, -- Abyssal Infusion (Portals) @@ -186,7 +211,7 @@ end function mod:OnRegister() self:SetSpellRename(439814, L.silken_tomb) -- Silken Tomb (Roots) - self:SetSpellRename(447456, L.slow) -- Paralyzing Venom (Slow) + self:SetSpellRename(447456, CL.waves) -- Paralyzing Venom (Waves) self:SetSpellRename(447411, L.wrest) -- Wrest (Pull In) self:SetSpellRename(443888, CL.portals) -- Abyssal Infusion (Portals) self:SetSpellRename(445422, L.frothing_gluttony) -- Frothing Gluttony (Ring) @@ -195,10 +220,13 @@ function mod:OnRegister() end function mod:OnBossEnable() - self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1") -- Story Mode Royal Condemnation + + self:RegisterUnitEvent("UNIT_SPELLCAST_INTERRUPTED", nil, "boss1") + self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1") -- Stage One: A Queen's Venom self:Log("SPELL_CAST_START", "ReactiveToxin", 437592) + self:Log("SPELL_CAST_SUCCESS", "ReactiveToxinSuccess", 437592) -- LFR self:Log("SPELL_AURA_APPLIED", "ReactiveToxinApplied", 437586) self:Log("SPELL_AURA_APPLIED", "ConcentratedToxinApplied", 451278) self:Log("SPELL_AURA_APPLIED", "FrothyToxinApplied", 464638) @@ -208,7 +236,6 @@ function mod:OnBossEnable() self:Log("SPELL_AURA_APPLIED", "ReactiveVaporApplied", 441556) self:Log("SPELL_AURA_APPLIED_DOSE", "ReactiveVaporApplied", 441556) self:Log("SPELL_CAST_START", "SilkenTomb", 439814) - self:Log("SPELL_AURA_APPLIED", "GraspingSilkDamage", 441958) self:Log("SPELL_DAMAGE", "GraspingSilkDamage", 441958) self:Log("SPELL_CAST_START", "Liquefy", 440899) self:Log("SPELL_AURA_APPLIED", "LiquefyApplied", 436800) @@ -220,16 +247,16 @@ function mod:OnBossEnable() self:Log("SPELL_CAST_START", "Predation", 447076) self:Log("SPELL_AURA_APPLIED", "PredationApplied", 447207) self:Log("SPELL_AURA_REMOVED", "PredationRemoved", 447207) - self:Log("SPELL_CAST_START", "ParalyzingVenom", 447456) - self:Log("SPELL_AURA_APPLIED", "ParalyzingVenomApplied", 447532) - self:Log("SPELL_AURA_APPLIED_DOSE", "ParalyzingVenomApplied", 447532) + self:Log("SPELL_CAST_SUCCESS", "ParalyzingVenom", 447456) self:Log("SPELL_CAST_START", "Wrest", 447411) -- Stage Two: Royal Ascension + self:Log("SPELL_CAST_START", "Shadowgate", 460369) + self:Log("SPELL_AURA_APPLIED", "ShadowyDistortionApplied", 460218) + self:Log("SPELL_AURA_APPLIED", "ShadowgateGloomTouchApplied", 464056) -- Queen Ansurek self:Log("SPELL_AURA_APPLIED", "CosmicProtection", 458247) -- Story Mode Stage 2 self:Log("SPELL_AURA_APPLIED", "PredationThreadsApplied", 447170) - self:Log("SPELL_CAST_START", "AcidicApocalypse", 449940) self:Log("SPELL_CAST_SUCCESS", "AcidicApocalypseSuccess", 449940) -- Ascended Voidspeaker @@ -240,30 +267,32 @@ function mod:OnBossEnable() self:Log("SPELL_CAST_START", "CosmicApocalypse", 448458) self:Log("SPELL_CAST_SUCCESS", "CosmicApocalypseSuccess", 448458) self:Death("WorshipperDeath", 223318) - self:Log("SPELL_AURA_APPLIED", "CosmicRuptureApplied", 462558) -- Chamber Guardian self:Log("SPELL_CAST_START", "Oust", 448147) self:Death("GuardianDeath", 223204) -- Chamber Expeller self:Log("SPELL_CAST_START", "ExpulsionBeam", 451600) self:Death("ExpellerDeath", 224368) + -- Chamber Acolyte + self:Log("SPELL_CAST_START", "DarkDetonation", 455374) + self:Death("ChamberAcolyteDeath", 226200) -- Caustic Skitterer - self:Log("SPELL_AURA_APPLIED", "CausticFangsApplied", 449236) + -- self:Log("SPELL_AURA_APPLIED", "CausticFangsApplied", 449236) self:Log("SPELL_AURA_APPLIED_DOSE", "CausticFangsApplied", 449236) -- Stage Three: Paranoia's Feast self:Log("SPELL_CAST_START", "AphoticCommunion", 449986) + self:Log("SPELL_CAST_SUCCESS", "AphoticCommunionSuccess", 449986) self:Log("SPELL_CAST_START", "AbyssalInfusion", 443888) + self:Log("SPELL_CAST_SUCCESS", "AbyssalInfusionSuccess", 443888) -- LFR self:Log("SPELL_AURA_APPLIED", "AbyssalInfusionApplied", 443903) self:Log("SPELL_AURA_APPLIED", "AbyssalReverberationApplied", 455387) self:Log("SPELL_CAST_START", "FrothingGluttony", 445422) self:Log("SPELL_AURA_APPLIED", "FrothVaporAppliedOnBoss", 445880) self:Log("SPELL_AURA_APPLIED_DOSE", "FrothVaporAppliedOnBoss", 445880) self:Log("SPELL_CAST_START", "QueensSummons", 444829) - self:Log("SPELL_AURA_APPLIED", "DarkBarrierApplied", 445013) self:Log("SPELL_AURA_APPLIED", "AcolytesEssenceApplied", 445152) self:Log("SPELL_CAST_START", "NullDetonation", 445021) - self:Log("SPELL_CAST_START", "RoyalCondemnation", 438976) self:Log("SPELL_AURA_APPLIED", "RoyalCondemnationApplied", 438974) self:Log("SPELL_AURA_APPLIED", "RoyalShacklesApplied", 441865) self:Log("SPELL_CAST_START", "Infest", 443325) @@ -282,7 +311,7 @@ function mod:OnBossEnable() end function mod:OnEngage() - timers = self:Easy() and timersNormal or timersHeroic + timers = self:Mythic() and timersMythic or self:Easy() and timersNormal or timersHeroic self:SetStage(1) reactiveToxinCount = 1 @@ -292,26 +321,55 @@ function mod:OnEngage() feastCount = 1 webBladesCount = 1 + mobCollector = {} + mobMarks = {} + if not self:Story() then + self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1") self:Bar(440899, timers[1][440899][1], CL.count:format(CL.pools, liquefyCount)) -- Liquefy self:Bar(437093, timers[1][437093][1], CL.count:format(self:SpellName(437093), feastCount)) -- Feast - self:Bar(437592, 20.2, CL.count:format(L.reactive_toxin, reactiveToxinCount)) -- Reactive Toxin + self:Bar(437592, timers[1][437592][1], CL.count:format(L.reactive_toxin, reactiveToxinCount)) -- Reactive Toxin + self:Bar("stages", 153.9, CL.intermission, 447207) -- Predation + else + self:Bar("stages", 100, CL.stage:format(2), 458247) -- Cosmic Protection end - self:Bar(439299, self:Story() and 7.5 or timers[1][439299][1], CL.count:format(L.web_blades, webBladesCount)) -- Web Blades self:Bar(437417, self:Story() and 34.5 or 29.5, CL.count:format(L.venom_nova, venomNovaCount)) -- Venom Nova self:Bar(439814, self:Story() and 20.5 or timers[1][439814][1], CL.count:format(L.silken_tomb, silkenTombCount)) -- Silken Tomb - - self:Bar("stages", self:Story() and 100 or 153.9, self:Story() and CL.stage:format(2) or CL.intermission, 447207) -- Predation - if not self:Story() then - self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1") - end end -------------------------------------------------------------------------------- -- Event Handlers -- +function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT() + for i = 1, 8 do + local unit = ("boss%d"):format(i) + local guid = self:UnitGUID(unit) + if guid then + local mobId = self:MobId(guid) + if mobId == 221863 and not mobCollector[guid] then -- Summoned Acolyte + mobCollector[guid] = true + local index = mobMarks[mobId] or 1 + local icon = addMarks[index] -- marks first 3 with 8, 5, 4 + if icon then + self:CustomIcon(queensSummonsMarker, unit, icon) + end + mobMarks[mobId] = index + 1 + end + end + end +end + +function mod:AddMarking(_, unit, guid) + if self:MobId(guid) == 226200 and not mobCollector[guid] then -- Chamber Acolyte + mobCollector[guid] = true + local uid = select(7, strsplit("-", guid)) + local index = bit.rshift(bit.band(tonumber(string.sub(uid, 1, 5), 16), 0xffff8), 3) + 1 + self:CustomIcon(chamberAcolyteMarker, unit, index) + end +end + local function addPlayerToIconList(list, playerName) list[#list+1] = { name = playerName, @@ -334,6 +392,29 @@ local function sortPriority(first, second) end end +function mod:UNIT_SPELLCAST_INTERRUPTED(_, _, _, spellId) + if spellId == 450191 then -- Wrest + self:WrestInterrupted() + end +end + +function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId) + if spellId == 450040 then -- Land + self:Land() + elseif spellId == 449962 then -- Acidic Apocalypse + self:AcidicApocalypsePrecast() + elseif self:Story() and spellId == 438667 then -- Royal Condemnation + -- No RoyalCondemnationApplied in story mode + self:StopBar(CL.count:format(L.royal_condemnation, royalCondemnationCount)) + self:Message(438976, "yellow", CL.count:format(L.royal_condemnation, royalCondemnationCount)) + self:Bar(441865, 6.2, CL.explosion) + royalCondemnationCount = royalCondemnationCount + 1 + self:Bar(438976, 53.0, CL.count:format(L.royal_condemnation, royalCondemnationCount)) + end +end + +-- Stage One: A Queen's Venom + function mod:UNIT_HEALTH(event, unit) if self:GetHealth(unit) < 37 then -- Intermission forced at 35% self:UnregisterUnitEvent(event, unit) @@ -342,7 +423,6 @@ function mod:UNIT_HEALTH(event, unit) end end --- Stage One: A Queen's Venom do local playerList, iconList = {}, {} local scheduled = nil @@ -373,17 +453,24 @@ do playerList, iconList = {}, {} end + function mod:ReactiveToxinSuccess(args) + if self:LFR() then -- No ReactiveToxinApplied in LFR + self:StopBar(CL.count:format(L.reactive_toxin, reactiveToxinCount)) + self:Message(437592, "orange", CL.count:format(L.reactive_toxin, reactiveToxinCount)) + reactiveToxinCount = reactiveToxinCount + 1 + self:Bar(437592, timers[1][437592][reactiveToxinCount], CL.count:format(L.reactive_toxin, reactiveToxinCount)) + end + end + function mod:ReactiveToxinApplied(args) if not scheduled then self:StopBar(CL.count:format(L.reactive_toxin, reactiveToxinCount)) reactiveToxinCount = reactiveToxinCount + 1 - if reactiveToxinCount < 4 then - self:Bar(437592, 56.0, CL.count:format(L.reactive_toxin, reactiveToxinCount)) - end + self:Bar(437592, timers[1][437592][reactiveToxinCount], CL.count:format(L.reactive_toxin, reactiveToxinCount)) scheduled = self:ScheduleTimer("MarkToxinPlayers", 0.5) end iconList = addPlayerToIconList(iconList, args.destName) - local requiredPlayers = self:Mythic() and 5 or self:Heroic() and 2 or 1 + local requiredPlayers = self:Mythic() and reactiveToxinCount or self:Easy() and 1 or 2 if #iconList == requiredPlayers then self:MarkToxinPlayers() end @@ -401,9 +488,8 @@ end function mod:FrothyToxinApplied(args) if self:Me(args.destGUID) then - local amount = args.amount or 1 self:StackMessage(args.spellId, "blue", args.destName, args.amount, 3) - if amount > 3 then + if args.amount and args.amount > 3 then self:PlaySound(args.spellId, "alarm") end end @@ -420,11 +506,10 @@ function mod:VenomNova(args) local msg = CL.count:format(L.venom_nova, venomNovaCount) self:StopBar(msg) self:Message(args.spellId, "red", CL.casting:format(msg)) - self:CastBar(args.spellId, 6, msg) + self:CastBar(args.spellId, self:Mythic() and 5 or self:Story() and 4 or 6, msg) self:PlaySound(args.spellId, "alert") venomNovaCount = venomNovaCount + 1 - local maxCasts = self:Story() and 3 or 4 - if venomNovaCount < maxCasts then + if venomNovaCount < (self:Story() and 3 or 4) then self:Bar(args.spellId, self:Story() and 38 or 56.0, CL.count:format(L.venom_nova, venomNovaCount)) end end @@ -448,7 +533,7 @@ end do local prev = 0 function mod:GraspingSilkDamage(args) - if self:Me(args.destGUID) and args.time - prev > 2 then + if self:Me(args.destGUID) and args.time - prev > 5 then prev = args.time self:PersonalMessage(args.spellId, "underyou") self:PlaySound(args.spellId, "underyou") @@ -492,10 +577,6 @@ end function mod:FeastApplied(args) self:TargetMessage(437093, "purple", args.destName) - local unit = self:UnitTokenFromGUID(args.sourceGUID) - if unit and not self:Tanking(unit) then - self:PlaySound(437093, "warning") -- tauntswap - end end do @@ -533,7 +614,7 @@ do wrestCount = 1 self:Bar(447411, 6.0, CL.count:format(L.wrest, wrestCount)) -- Wrest - self:Bar(447456, 13.0, CL.count:format(L.slow, paralyzingVenomCount)) -- Paralyzing Venom + self:Bar(447456, 15.5, CL.count:format(CL.waves, paralyzingVenomCount)) -- Paralyzing Venom end function mod:PredationApplied(args) @@ -541,8 +622,9 @@ do end function mod:PredationRemoved(args) - self:StopBar(CL.count:format(L.slow, paralyzingVenomCount)) -- Paralyzing Venom + self:StopBar(CL.count:format(CL.waves, paralyzingVenomCount)) -- Paralyzing Venom self:StopBar(CL.count:format(L.wrest, wrestCount)) -- Wrest + self:StopCastBar(CL.count:format(L.wrest, wrestCount-1)) self:Message(447076, "green", CL.removed_after:format(args.spellName, args.time - predationApplied)) @@ -552,36 +634,38 @@ do wrestCount = 1 gloomTouchCount = 1 - worshipperKilled = 0 + platformAddsKilled = 0 + worshippersKilled = 0 + acolytesKilled = 0 + firstShadowGate = true + + if self:Mythic() then + if self:GetOption(chamberAcolyteMarker) then + self:RegisterTargetEvents("AddMarking") + end + self:RegisterEvent("UNIT_SPELLCAST_START") + self:RegisterEvent("UNIT_SPELLCAST_STOP") + end end end function mod:ParalyzingVenom(args) - self:Message(args.spellId, "yellow", CL.count:format(L.slow, paralyzingVenomCount)) - -- self:PlaySound(args.spellId, "alert") + self:Message(args.spellId, "yellow", CL.count:format(CL.waves, paralyzingVenomCount)) paralyzingVenomCount = paralyzingVenomCount + 1 - self:Bar(args.spellId, paralyzingVenomCount % 3 == 1 and 11.0 or 4.0, CL.count:format(L.slow, paralyzingVenomCount)) -end - -function mod:ParalyzingVenomApplied(args) - -- if self:Me(args.destGUID) then - -- self:StackMessage(447456, "blue", args.destName, args.amount, 2) - -- self:PlaySound(447456, "warning") - -- end + self:Bar(args.spellId, paralyzingVenomCount % 3 == 1 and 11.0 or 4.0, CL.count:format(CL.waves, paralyzingVenomCount)) end function mod:Wrest(args) self:Message(args.spellId, "red", CL.count:format(L.wrest, wrestCount)) + self:CastBar(args.spellId, 6, CL.count:format(L.wrest, wrestCount)) self:PlaySound(args.spellId, "alert") wrestCount = wrestCount + 1 self:Bar(args.spellId, 19.0, CL.count:format(L.wrest, wrestCount)) - self:CastBar(args.spellId, 6, CL.count:format(L.wrest, wrestCount)) end -- Stage Two: Royal Ascension function mod:CosmicProtection(args) -- Story Mode - self:UnregisterUnitEvent("UNIT_HEALTH", "boss1") - self:StopBar(CL.intermission) + self:StopBar(CL.stage:format(2)) self:StopBar(CL.count:format(L.venom_nova, venomNovaCount)) -- Venom Nova self:StopBar(CL.count:format(L.silken_tomb, silkenTombCount)) -- Silken Tomb self:StopBar(CL.count:format(L.web_blades, webBladesCount)) -- Web Blades @@ -592,19 +676,118 @@ function mod:CosmicProtection(args) -- Story Mode end do - local prev, onMe, scheduled = 0, false, nil - function mod:WrestTimers() - if scheduled then - self:CancelTimer(scheduled) - scheduled = nil + -- Shadowgate + local prev = nil + local casterGUID = nil + -- cast events from nameplates, requires looking at the gate D; + function mod:UNIT_SPELLCAST_START(_, unit, castGUID, spellId) + if spellId == 460369 and prev ~= castGUID then -- Shadowgate + firstShadowGate = false + prev = castGUID + casterGUID = self:UnitGUID(unit) + self:CastBar(460369, 10) + end + end + function mod:UNIT_SPELLCAST_STOP(_, unit, _, spellId) + if spellId == 460369 then -- Shadowgate + casterGUID = self:UnitGUID(unit) + self:StopCastBar(460369) + end + end + + function mod:Shadowgate(args) + if firstShadowGate then -- get the next cast + firstShadowGate = false + self:CastBar(args.spellId, 10) + elseif casterGUID == args.sourceGUID then + -- show the cast for the last gate you saw a nameplate for + self:CastBar(args.spellId, 10) + end + end + + function mod:ShadowyDistortionApplied(args) + if self:Me(args.destGUID) then + casterGUID = nil + self:StopCastBar(460369) -- Shadowgate + -- Wrest swap + local currentCount = wrestCount - 1 + local nextCount = wrestCount + 1 + self:StopCastBar(CL.count:format(self:SpellName(447411), currentCount)) -- Wrest + local remaining = self:BarTimeLeft(CL.count:format(self:SpellName(447411), nextCount)) - 8 + self:StopBar(CL.count:format(self:SpellName(447411), nextCount)) + if remaining > 1 then + self:CDBar(447411, remaining, CL.count:format(self:SpellName(447411), wrestCount)) + end + elseif args.sourceGUID ~= casterGUID then -- dest portal isn't mine + self:StopCastBar(460369) -- Shadowgate + end + end +end + +function mod:ShadowgateGloomTouchApplied(args) + local touchOnMe = false + if self:Me(args.destGUID) then + touchOnMe = true -- make sure there's a message + self:PlaySound(447967, "alarm") -- spread + -- self:Say(args.spellId) + end + local unit = self:UnitTokenFromGUID(args.sourceGUID) + if touchOnMe or (unit and self:UnitWithinRange(unit, 45)) then + self:TargetMessage(447967, "yellow", args.destName) + end +end + +-- Queen Ansurek + +do + local prev = 0 + local scheduled = nil + local threadsOnMe = false + local currentCount, nextCount = nil, nil + + function mod:WrestReset() + if platformAddsKilled == 2 then -- platform 2->3 + self:StopCastBar(460369) -- Shadowgate + + -- resets when you spawn the bridge? so may vary a bit + local text = CL.count:format(L.wrest, wrestCount) + local remaining = self:BarTimeLeft(text) + if remaining > 1 then + self:CDBar(447411, 12.0, text) + end + text = CL.count:format(L.wrest, wrestCount + 1) + remaining = self:BarTimeLeft(text) + if remaining > 1 then + self:CDBar(447411, 12.0, text) + end end + end + + function mod:WrestInterrupted() + if threadsOnMe then -- last cast was on me + self:StopCastBar(CL.count:format(L.wrest, currentCount)) + self:StopBar(CL.count:format(L.wrest, nextCount)) + -- recasts next one here, messing with the numbering + self:CDBar(447411, 10.7, CL.count:format(L.wrest, currentCount + 1)) + else + -- other side, swap order + self:StopBar(CL.count:format(L.wrest, wrestCount)) + self:CDBar(447411, 18.7, CL.count:format(L.wrest, nextCount)) + end + end + + function mod:WrestCast() + self:StopBar(CL.count:format(L.wrest, wrestCount)) wrestCount = wrestCount + 1 - if not onMe then - if wrestCount > 8 then return end - self:CDBar(447411, {8.0, 16.0}, CL.count:format(L.wrest, wrestCount)) + if threadsOnMe then + currentCount = wrestCount - 1 + self:Message(447411, "red", CL.count:format(L.wrest, currentCount)) + self:CastBar(447411, 5, CL.count:format(L.wrest, currentCount)) + self:PlaySound(447411, "alert") + nextCount = wrestCount + 1 + self:CDBar(447411, 16.0, CL.count:format(L.wrest, nextCount)) else - if wrestCount > 7 then return end - self:CDBar(447411, 16.0, CL.count:format(L.wrest, wrestCount + 1)) + self:CDBar(447411, {8.0, 16.0}, CL.count:format(L.wrest, wrestCount)) end end @@ -612,27 +795,28 @@ do if self:GetStage() == 2 then if args.time - prev > 2 then prev = args.time - self:StopBar(CL.count:format(L.wrest, wrestCount)) -- Wrest - onMe = false - if not scheduled then - scheduled = self:ScheduleTimer("WrestTimers", 0.1) - end + threadsOnMe = false + scheduled = self:ScheduleTimer("WrestCast", 0.1) end if self:Me(args.destGUID) then - self:Message(447411, "red", CL.count:format(L.wrest, wrestCount)) - self:PlaySound(447411, "alert") - onMe = true - self:CastBar(447411, 5, CL.count:format(L.wrest, wrestCount)) + threadsOnMe = true end end end - function mod:AcidicApocalypse(args) + function mod:AcidicApocalypsePrecast() + -- platform 3->4 self:CancelTimer(scheduled) - self:StopBar(CL.count:format(L.wrest, wrestCount)) - self:StopBar(CL.count:format(L.wrest, wrestCount + 1)) + for i = 1, wrestCount + 1 do + self:StopBar(CL.count:format(L.wrest, i)) -- nuclear cleanup + end + self:StopCastBar(460369) -- Shadowgate + -- firstShadowGate = true -- XXX can still catch desync'd casts here z.z + end + + function mod:AcidicApocalypse(args) self:Message(args.spellId, "yellow", CL.casting:format(args.spellName)) - self:CastBar(args.spellId, 35) + self:CastBar(args.spellId, self:Easy() and 50 or 35) end end @@ -661,10 +845,16 @@ do if self:Story() then self:Message("stages", "cyan", L.stage_two_end_message_storymode, false, nil, 5) -- Stay onscreen for 5s else + self:StopCastBar(460369) -- Shadowgate + self:Message("stages", "cyan", CL.killed:format(args.destName), false) - self:Bar(448046, self:Easy() and 7.1 or 5.9, CL.knockback) -- Gloom Eruption - if wrestCount == 1 then + self:Bar(448046, self:Mythic() and 5.2 or self:Easy() and 7.1 or 5.9, CL.knockback) -- Gloom Eruption + + if wrestCount == 1 then -- first Voidspeaker set + firstShadowGate = true self:CDBar(447411, self:Easy() and 13.5 or 11.8, CL.count:format(L.wrest, wrestCount)) -- Wrest + self:Bar(451600, 12.5) -- Expulsion Beam + self:Bar(448147, 14.2) -- Oust end end end @@ -674,41 +864,36 @@ end -- Devoted Worshipper do local prev, prevSource = 0, nil + local touchOnMe = false local playerList = {} function mod:GloomTouchApplied(args) if args.sourceGUID ~= prevSource or args.time - prev > 5 then prev = args.time prevSource = args.sourceGUID playerList = {} + touchOnMe = false gloomTouchCount = gloomTouchCount + 1 end if self:Me(args.destGUID) then - self:PersonalMessage(args.spellId) + touchOnMe = true -- make sure there's a message self:PlaySound(args.spellId, "alarm") -- spread self:Say(args.spellId, nil, nil, "Gloom Touch") end local unit = self:UnitTokenFromGUID(args.sourceGUID) - if unit and self:UnitWithinRange(unit, 40) then + if touchOnMe or (unit and self:UnitWithinRange(unit, 60)) then playerList[#playerList + 1] = args.destName - self:TargetsMessage(args.spellId, "yellow", playerList, 2, CL.count:format(args.spellName, gloomTouchCount - 1)) + self:TargetsMessage(args.spellId, "yellow", playerList, self:Mythic() and 1 or 2, CL.count:format(args.spellName, gloomTouchCount-1)) end end end -function mod:CosmicRuptureApplied(args) - if self:Me(args.destGUID) then - self:PersonalMessage(args.spellId) - self:PlaySound(args.spellId, "warning") -- gate - end -end - do local prev = 0 function mod:CosmicApocalypse(args) if args.time - prev > 2 then prev = args.time - self:CastBar(args.spellId, 85) + self:CastBar(args.spellId, self:Mythic() and 80 or self:Easy() and 95 or 85) end end end @@ -725,21 +910,21 @@ do end function mod:WorshipperDeath(args) - worshipperKilled = worshipperKilled + 1 - self:Message("stages", "cyan", CL.mob_remaining:format(args.destName, 2 - worshipperKilled), false) - if worshipperKilled == 2 then - self:StopBar(CL.cast:format(self:SpellName(448458))) -- Cosmic Apocalypse + worshippersKilled = worshippersKilled + 1 + self:Message("stages", "cyan", CL.mob_killed:format(args.destName, worshippersKilled, 2), false) + if worshippersKilled == 2 then + self:StopCastBar(448458) -- Cosmic Apocalypse end end -- Chamber Guardian function mod:Oust(args) local unit = self:UnitTokenFromGUID(args.sourceGUID) - if unit and self:Tanking(unit) then + if unit and self:UnitWithinRange(unit, 60) then self:Message(args.spellId, "red") self:PlaySound(args.spellId, "warning") + self:Bar(args.spellId, 10) end - self:Nameplate(args.spellId, 10, args.sourceGUID) end do @@ -747,20 +932,22 @@ do function mod:GuardianDeath(args) if args.time - prev > 2 then prev = args.time + self:StopBar(448147) -- Oust self:Message("stages", "cyan", CL.killed:format(args.destName), false) + platformAddsKilled = platformAddsKilled + 1 + self:WrestReset() end - self:ClearNameplate(args.destGUID) end end -- Chamber Expeller function mod:ExpulsionBeam(args) local unit = self:UnitTokenFromGUID(args.sourceGUID) - if not unit or self:UnitWithinRange(unit, 30) then + if unit and self:UnitWithinRange(unit, 60) then self:Message(args.spellId, "orange") self:PlaySound(args.spellId, "alert") + self:Bar(args.spellId, 10) end - self:Nameplate(args.spellId, 10, args.sourceGUID) end do @@ -768,36 +955,56 @@ do function mod:ExpellerDeath(args) if args.time - prev > 2 then prev = args.time + self:StopBar(451600) -- Expulsion Beam self:Message("stages", "cyan", CL.killed:format(args.destName), false) + platformAddsKilled = platformAddsKilled + 1 + self:WrestReset() end - self:ClearNameplate(args.destGUID) end end +-- Chamber Acolyte +function mod:DarkDetonation(args) + local canDo, ready = self:Interrupter(args.sourceGUID) + if canDo then + self:Message(args.spellId, "yellow") + if ready then + self:PlaySound(args.spellId, "alarm") + end + end + self:Nameplate(args.spellId, 13, args.sourceGUID) +end + +function mod:ChamberAcolyteDeath(args) + acolytesKilled = acolytesKilled + 1 + self:Message("stages", "cyan", CL.mob_killed:format(args.destName, acolytesKilled, 2), false) + self:ClearNameplate(args.destGUID) +end -- Caustic Skitterer function mod:CausticFangsApplied(args) if self:Me(args.destGUID) then local amount = args.amount or 1 - if amount % 4 == 0 or amount > 20 then -- XXX Check amounts - self:StackMessage(args.spellId, "blue", args.destName, amount, 10) - if amount > 20 then - self:PlaySound(args.spellId, "alarm") - end + if amount % 10 == 0 then + self:StackMessage(args.spellId, "blue", args.destName, amount, 20) + self:PlaySound(args.spellId, "alarm") end end end -- Stage Three: Paranoia's Feast function mod:AphoticCommunion(args) - self:StopBar(CL.count:format(L.wrest, wrestCount)) -- Wrest - self:StopBar(CL.count:format(L.wrest, wrestCount + 1)) -- Wrest - self:StopBar(CL.cast:format(self:SpellName(449940))) -- Acidic Apocalypse + self:StopCastBar(449940) -- Acidic Apocalypse + if self:Mythic() then + self:UnregisterTargetEvents() + self:UnregisterEvent("UNIT_SPELLCAST_START") + self:UnregisterEvent("UNIT_SPELLCAST_STOP") + end self:SetStage(3) self:Message("stages", "cyan", CL.stage:format(3), false) self:PlaySound("stages", "long") - --self:CastBar(args.spellId, 20) + self:CastBar("stages", 20, CL.stage:format(3), args.spellId) abyssalInfusionCount = 1 frothingGluttonyCount = 1 @@ -807,17 +1014,54 @@ function mod:AphoticCommunion(args) gorgeCount = 1 webBladesCount = 1 - -- XXX variance on these? + if self:GetOption(queensSummonsMarker) then + self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT") + end + + -- if not self:Story() then + -- self:Bar(443325, timers[3][443325][1], CL.count:format(CL.small_adds, infestCount)) -- Infest + -- self:Bar(443336, timers[3][443336][1], CL.count:format(CL.pools, gorgeCount)) -- Gorge + -- self:Bar(443888, 59.1, CL.count:format(CL.portals, abyssalInfusionCount)) -- Abyssal Infusion + -- self:Bar(439299, timers[3][439299][1], CL.count:format(L.web_blades, webBladesCount)) -- Web Blades + -- end + -- self:Bar(438976, self:Story() and 31.0 or timers[3][438976][1], CL.count:format(L.royal_condemnation, royalCondemnationCount)) -- Royal Condemnation + -- self:Bar(445422, self:Story() and 62.0 or 68.8, CL.count:format(L.frothing_gluttony, frothingGluttonyCount)) -- Frothing Gluttony + -- self:Bar(444829, self:Story() and 42.0 or timers[3][444829][1], CL.count:format(CL.big_adds, queensSummonsCount)) -- Queen's Summons +end + +function mod:AphoticCommunionSuccess() + -- timers from Land UNIT event, roughly 24s shorter than CLEU if not self:Story() then - self:Bar(443325, timers[3][443325][1], CL.count:format(CL.small_adds, infestCount)) -- Infest - self:Bar(443336, timers[3][443336][1], CL.count:format(CL.pools, gorgeCount)) -- Gorge - self:Bar(443888, 59.1, CL.count:format(CL.portals, abyssalInfusionCount)) -- Abyssal Infusion - self:Bar(439299, timers[3][439299][1], CL.count:format(L.web_blades, webBladesCount)) -- Web Blades + self:Bar(443325, 5.9, CL.count:format(self:SpellName(443325), infestCount)) -- Infest + self:Bar(443336, self:Mythic() and 7.9 or self:Easy() and 11.9 or 8.9, CL.count:format(self:SpellName(443336), gorgeCount)) -- Gorge + self:Bar(443888, 35.7, CL.count:format(self:SpellName(443888), abyssalInfusionCount)) -- Abyssal Infusion + self:Bar(439299, self:Mythic() and 24.9 or self:Easy() and 177 or 62.0, CL.count:format(self:SpellName(439299), webBladesCount)) -- Web Blades + + self:PauseBar(443325, CL.count:format(self:SpellName(443325), infestCount)) -- Infest + self:PauseBar(443336, CL.count:format(self:SpellName(443336), gorgeCount)) -- Gorge + self:PauseBar(443888, CL.count:format(self:SpellName(443888), abyssalInfusionCount)) -- Abyssal Infusion + self:PauseBar(439299, CL.count:format(self:SpellName(439299), webBladesCount)) -- Web Blades end - self:CDBar(438976, self:Story() and 31.0 or timers[3][438976][1], CL.count:format(L.royal_condemnation, royalCondemnationCount)) -- Royal Condemnation - self:Bar(445422, self:Story() and 62.0 or 68.8, CL.count:format(L.frothing_gluttony, frothingGluttonyCount)) -- Frothing Gluttony - self:Bar(444829, self:Story() and 42.0 or timers[3][444829][1], CL.count:format(CL.big_adds, queensSummonsCount)) -- Queen's Summons + self:Bar(444829, self:Mythic() and 19.9 or self:Easy() and 90 or self:Story() and 19.0 or 96.0, CL.count:format(self:SpellName(444829), queensSummonsCount)) -- Queen's Summons + self:Bar(445422, self:Story() and 39.0 or 45.0, CL.count:format(self:SpellName(445422), frothingGluttonyCount)) -- Frothing Gluttony + self:Bar(438976, self:Mythic() and 88.0 or self:Story() and 8.0 or 20.0, CL.count:format(self:SpellName(438976), royalCondemnationCount)) -- Royal Condemnation + + self:PauseBar(444829, CL.count:format(self:SpellName(444829), queensSummonsCount)) -- Queen's Summons + self:PauseBar(445422, CL.count:format(self:SpellName(445422), frothingGluttonyCount)) -- Frothing Gluttony + self:PauseBar(438976, CL.count:format(self:SpellName(438976), royalCondemnationCount)) -- Royal Condemnation +end + +function mod:Land() + if not self:Story() then + self:ResumeBar(443325, CL.count:format(self:SpellName(443325), infestCount)) -- Infest + self:ResumeBar(443336, CL.count:format(self:SpellName(443336), gorgeCount)) -- Gorge + self:ResumeBar(443888, CL.count:format(self:SpellName(443888), abyssalInfusionCount)) -- Abyssal Infusion + self:ResumeBar(439299, CL.count:format(self:SpellName(439299), webBladesCount)) -- Web Blades + end + self:ResumeBar(444829, CL.count:format(self:SpellName(444829), queensSummonsCount)) -- Queen's Summons + self:ResumeBar(445422, CL.count:format(self:SpellName(445422), frothingGluttonyCount)) -- Frothing Gluttony + self:ResumeBar(438976, CL.count:format(self:SpellName(438976), royalCondemnationCount)) -- Royal Condemnation end do @@ -841,7 +1085,7 @@ do end playerList[#playerList+1] = player playerList[player] = icon - self:TargetsMessage(438976, "yellow", playerList, nil, CL.count:format(CL.portals, abyssalInfusionCount - 1), 2) + self:TargetsMessage(438976, "orange", playerList, nil, CL.count:format(CL.portals, abyssalInfusionCount - 1), 2) self:CustomIcon(abyssalInfusionMarker, player, icon) end end @@ -850,11 +1094,22 @@ do playerList, iconList = {}, {} end + function mod:AbyssalInfusionSuccess(args) + if self:LFR() then -- No AbyssalInfusionApplied in LFR + self:StopBar(CL.count:format(CL.portals, abyssalInfusionCount)) + self:Message(443888, "orange", CL.count:format(CL.portals, abyssalInfusionCount)) + abyssalInfusionCount = abyssalInfusionCount + 1 + if abyssalInfusionCount < 5 then + self:Bar(443888, 80, CL.count:format(CL.portals, abyssalInfusionCount)) + end + end + end + function mod:AbyssalInfusionApplied(args) if not scheduled then self:StopBar(CL.count:format(CL.portals, abyssalInfusionCount)) abyssalInfusionCount = abyssalInfusionCount + 1 - if abyssalInfusionCount < (self:LFR() and 5 or 4) then + if abyssalInfusionCount < 4 then self:Bar(443888, 80, CL.count:format(CL.portals, abyssalInfusionCount)) end scheduled = self:ScheduleTimer("MarkAbyssalInfusionPlayers", 0.5) @@ -868,7 +1123,7 @@ end function mod:AbyssalReverberationApplied(args) if self:Me(args.destGUID) then - self:PersonalMessage(args.spellId) -- XXX Rename shorter / more clear? + self:PersonalMessage(args.spellId, nil, CL.bomb) -- XXX Rename shorter / more clear? self:PlaySound(args.spellId, "alarm") end end @@ -878,11 +1133,14 @@ function mod:FrothingGluttony(args) self:Message(args.spellId, "red", CL.casting:format(CL.count:format(L.frothing_gluttony, frothingGluttonyCount))) self:PlaySound(args.spellId, "alert") frothingGluttonyCount = frothingGluttonyCount + 1 - -- 4th (5th in LFR) cast triggers Cataclysmic Evolution - local cataclysmicRequired = self:LFR() and 5 or 4 - local cd = frothingGluttonyCount < cataclysmicRequired and 80 or 25.5 - if self:Story() then + local cd + if self:Mythic() then + cd = timers[3][args.spellId][frothingGluttonyCount] + elseif self:Story() then cd = 53 + else + -- 4th (5th in LFR) cast triggers Cataclysmic Evolution + cd = frothingGluttonyCount < (self:LFR() and 5 or 4) and 80 or 25.5 end self:Bar(args.spellId, cd, CL.count:format(L.frothing_gluttony, frothingGluttonyCount)) end @@ -899,7 +1157,7 @@ do function mod:FrothVaporAppliedOnBoss(args) stacks = args.amount or 1 if not scheduled then - scheduled = self:ScheduleTimer("FrothVaporStacksMessage", 0.4) + scheduled = self:ScheduleTimer("FrothVaporStacksMessage", 1) end end end @@ -910,30 +1168,7 @@ function mod:QueensSummons(args) self:PlaySound(args.spellId, "info") queensSummonsCount = queensSummonsCount + 1 self:Bar(args.spellId, self:Story() and 53 or timers[3][args.spellId][queensSummonsCount], CL.count:format(CL.big_adds, queensSummonsCount)) - - queenSummonsCollector, queenSummonsMarks = {}, {} - if self:GetOption(queensSummonsMarker) then - self:RegisterTargetEvents("QueensSummonsMarking") - end -end - -function mod:QueensSummonsMarking(_, unit, guid) - if queenSummonsCollector[guid] then - self:CustomIcon(queensSummonsMarker, unit, queenSummonsCollector[guid]) -- icon order from Dark Barrioer _APPLIED - queenSummonsCollector[guid] = nil - end -end - -function mod:DarkBarrierApplied(args) - if self:GetOption(queensSummonsMarker) then - for i = 1, #addMarks do - if not queenSummonsCollector[args.destGUID] and not queenSummonsMarks[i] then - queenSummonsMarks[i] = args.destGUID - queenSummonsCollector[args.destGUID] = addMarks[i] - return - end - end - end + mobMarks[221863] = nil end function mod:AcolytesEssenceApplied(args) @@ -948,7 +1183,7 @@ function mod:NullDetonation(args) if unit and not self:UnitBuff(unit, 445013) then -- Dark Barrier local canDo, ready = self:Interrupter(args.sourceGUID) if canDo then - self:Message(args.spellId, "orange") + self:Message(args.spellId, "yellow") if ready then self:PlaySound(args.spellId, "alert") end @@ -956,11 +1191,6 @@ function mod:NullDetonation(args) end end -function mod:RoyalCondemnation(args) - self:Message(args.spellId, "yellow", CL.incoming:format(CL.count:format(L.royal_condemnation, royalCondemnationCount))) - self:PlaySound(args.spellId, "alert") -end - do local playerList, iconList = {}, {} local scheduled = nil @@ -999,12 +1229,12 @@ do prev = args.time self:StopBar(CL.count:format(L.royal_condemnation, royalCondemnationCount)) if self:Easy() then - self:Bar(438976, 6.2, CL.explosion) -- 6~6.5 + self:Bar(441865, 6.2, CL.explosion) -- 6~6.5 else - self:Bar(438976, 8.3, CL.on_group:format(L.royal_condemnation)) + self:Bar(441865, 8.3, CL.on_group:format(L.royal_condemnation)) end royalCondemnationCount = royalCondemnationCount + 1 - self:CDBar(438976, timers[3][438976][royalCondemnationCount], CL.count:format(L.royal_condemnation, royalCondemnationCount)) + self:Bar(438976, timers[3][438976][royalCondemnationCount], CL.count:format(L.royal_condemnation, royalCondemnationCount)) playerList, iconList = {}, {} if not scheduled then scheduled = self:ScheduleTimer("MarkRoyalCondemnationPlayers", 0.5) @@ -1018,15 +1248,6 @@ do end end -function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId) - if self:Story() and spellId == 438667 then -- Royal Condemnation - self:StopBar(CL.count:format(L.royal_condemnation, royalCondemnationCount)) - royalCondemnationCount = royalCondemnationCount + 1 - self:Bar(438976, 6, CL.explosion) - self:CDBar(438976, 53.0, CL.count:format(L.royal_condemnation, royalCondemnationCount)) - end -end - function mod:RoyalShacklesApplied(args) if self:Me(args.destGUID) then self:PersonalMessage(args.spellId, "link_with", L.royal_condemnation) -- Linked with Shackles @@ -1051,10 +1272,10 @@ function mod:InfestApplied(args) if unit and not self:Tanking(unit) then self:PlaySound(443325, "warning") -- tauntswap end - self:TargetBar(443325, 5, args.destName) + self:TargetBar(443325, self:Mythic() and 4 or 5, args.destName) if self:Me(args.destGUID) then self:Say(443325, CL.small_adds, nil, "Small Adds") - self:SayCountdown(443325, 5) + self:SayCountdown(443325, self:Mythic() and 4 or 5) end end @@ -1077,7 +1298,7 @@ do function mod:GloomHatchlingAppliedOnBoss(args) stacks = args.amount or 1 if not scheduled then - scheduled = self:ScheduleTimer("GloomHatchlingStacksMessage", 1) + scheduled = self:ScheduleTimer("GloomHatchlingStacksMessage", 2) end end end diff --git a/NerubarPalace/Locales/deDE.lua b/NerubarPalace/Locales/deDE.lua index 4b989f890..510b5583e 100644 --- a/NerubarPalace/Locales/deDE.lua +++ b/NerubarPalace/Locales/deDE.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "Klingen" L.silken_tomb = "Wurzeln" -- Raid being rooted in place L.wrest = "Heranziehen" - L.slow = "Verlangsamen" L.royal_condemnation = "Fesseln" L.frothing_gluttony = "Ring" diff --git a/NerubarPalace/Locales/esES.lua b/NerubarPalace/Locales/esES.lua index 17d2daeea..52bb6afa4 100644 --- a/NerubarPalace/Locales/esES.lua +++ b/NerubarPalace/Locales/esES.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "Hojas" L.silken_tomb = "Enraizar" -- Raid being rooted in place L.wrest = "Atraer" - L.slow = "Ralentización" L.royal_condemnation = "Cadenas" L.frothing_gluttony = "Anillo" diff --git a/NerubarPalace/Locales/esMX.lua b/NerubarPalace/Locales/esMX.lua index 578202890..57c6be90b 100644 --- a/NerubarPalace/Locales/esMX.lua +++ b/NerubarPalace/Locales/esMX.lua @@ -76,7 +76,6 @@ if L then --L.web_blades = "Blades" --L.silken_tomb = "Roots" -- Raid being rooted in place --L.wrest = "Pull In" - --L.slow = "Slow" --L.royal_condemnation = "Shackles" --L.frothing_gluttony = "Ring" diff --git a/NerubarPalace/Locales/frFR.lua b/NerubarPalace/Locales/frFR.lua index c6a0931dd..a7832970f 100644 --- a/NerubarPalace/Locales/frFR.lua +++ b/NerubarPalace/Locales/frFR.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "Lames" L.silken_tomb = "Immobilisation" -- Raid being rooted in place L.wrest = "Attraction" - L.slow = "Ralentissement" L.royal_condemnation = "Entraves" L.frothing_gluttony = "Anneau" diff --git a/NerubarPalace/Locales/itIT.lua b/NerubarPalace/Locales/itIT.lua index 48f8c7103..4df654b42 100644 --- a/NerubarPalace/Locales/itIT.lua +++ b/NerubarPalace/Locales/itIT.lua @@ -76,7 +76,6 @@ if L then --L.web_blades = "Blades" --L.silken_tomb = "Roots" -- Raid being rooted in place --L.wrest = "Pull In" - --L.slow = "Slow" --L.royal_condemnation = "Shackles" --L.frothing_gluttony = "Ring" diff --git a/NerubarPalace/Locales/koKR.lua b/NerubarPalace/Locales/koKR.lua index 1a801617b..58d682d5d 100644 --- a/NerubarPalace/Locales/koKR.lua +++ b/NerubarPalace/Locales/koKR.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "칼날" L.silken_tomb = "이동 불가" -- Raid being rooted in place L.wrest = "끌어당김" - L.slow = "이감" L.royal_condemnation = "족쇄" L.frothing_gluttony = "고리" diff --git a/NerubarPalace/Locales/ptBR.lua b/NerubarPalace/Locales/ptBR.lua index c8d6b86ab..eb49d0d4a 100644 --- a/NerubarPalace/Locales/ptBR.lua +++ b/NerubarPalace/Locales/ptBR.lua @@ -76,7 +76,6 @@ if L then --L.web_blades = "Blades" --L.silken_tomb = "Roots" -- Raid being rooted in place --L.wrest = "Pull In" - --L.slow = "Slow" --L.royal_condemnation = "Shackles" --L.frothing_gluttony = "Ring" diff --git a/NerubarPalace/Locales/ruRU.lua b/NerubarPalace/Locales/ruRU.lua index fc13f2a78..d99f4afa9 100644 --- a/NerubarPalace/Locales/ruRU.lua +++ b/NerubarPalace/Locales/ruRU.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "Клинки" L.silken_tomb = "Корни" -- Raid being rooted in place L.wrest = "Притяжка" - L.slow = "Замедление" L.royal_condemnation = "Связывание" L.frothing_gluttony = "Кольцо" diff --git a/NerubarPalace/Locales/zhCN.lua b/NerubarPalace/Locales/zhCN.lua index b899bdd98..9c123cd84 100644 --- a/NerubarPalace/Locales/zhCN.lua +++ b/NerubarPalace/Locales/zhCN.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "网刃" -- 中文技能名称短直接使用技能名称 L.silken_tomb = "缠绕" -- Raid being rooted in place L.wrest = "拉扯" - L.slow = "减速" L.royal_condemnation = "镣铐" L.frothing_gluttony = "能量环" diff --git a/NerubarPalace/Locales/zhTW.lua b/NerubarPalace/Locales/zhTW.lua index 96fc2cb5e..9229c6856 100644 --- a/NerubarPalace/Locales/zhTW.lua +++ b/NerubarPalace/Locales/zhTW.lua @@ -76,7 +76,6 @@ if L then L.web_blades = "刀刃" -- 技能描述「刀刃絲網」 L.silken_tomb = "絲網" -- Raid being rooted in place L.wrest = "拉扯" -- 好像也不用轉?搶奪只有兩個字 - L.slow = "緩速" L.royal_condemnation = "鐐銬" L.frothing_gluttony = "暴食" -- 起沫暴食/黑環 diff --git a/NerubarPalace/Options/Colors.lua b/NerubarPalace/Options/Colors.lua index ba6600d83..2e14a7d99 100644 --- a/NerubarPalace/Options/Colors.lua +++ b/NerubarPalace/Options/Colors.lua @@ -134,9 +134,9 @@ BigWigs:AddColors("Queen Ansurek", { [437078] = "blue", [437093] = {"blue","purple"}, [437417] = "red", - [437592] = {"blue","yellow"}, + [437592] = {"blue","orange","yellow"}, [438481] = "blue", - [438976] = {"blue","yellow"}, + [438976] = {"blue","orange","yellow"}, [439299] = "cyan", [439814] = "yellow", [440899] = {"blue","purple"}, @@ -147,8 +147,9 @@ BigWigs:AddColors("Queen Ansurek", { [443336] = {"blue","purple"}, [443403] = "blue", [443726] = "red", + [443888] = "orange", [444829] = "cyan", - [445021] = "orange", + [445021] = "yellow", [445152] = "blue", [445422] = "red", [445880] = "red", @@ -164,8 +165,8 @@ BigWigs:AddColors("Queen Ansurek", { [451278] = "blue", [451600] = "orange", [451832] = "red", + [455374] = "yellow", [455387] = "blue", - [462558] = "blue", [464638] = "blue", ["stages"] = "cyan", }) diff --git a/NerubarPalace/Options/Sounds.lua b/NerubarPalace/Options/Sounds.lua index 880234681..a2f9149a0 100644 --- a/NerubarPalace/Options/Sounds.lua +++ b/NerubarPalace/Options/Sounds.lua @@ -119,7 +119,7 @@ BigWigs:AddSounds("The Silken Court", { BigWigs:AddSounds("Queen Ansurek", { [437078] = "underyou", - [437093] = {"alarm","warning"}, + [437093] = "alarm", [437417] = "alert", [437592] = "warning", [438481] = "underyou", @@ -150,8 +150,8 @@ BigWigs:AddSounds("Queen Ansurek", { [451278] = "alarm", [451600] = "alert", [451832] = "alarm", + [455374] = "alarm", [455387] = "alarm", - [462558] = "warning", [464638] = "alarm", ["stages"] = {"info","long"}, })