diff --git a/BlackwingLair/Broodlord.lua b/BlackwingLair/Broodlord.lua index c896c2c..18dd662 100644 --- a/BlackwingLair/Broodlord.lua +++ b/BlackwingLair/Broodlord.lua @@ -15,6 +15,7 @@ function mod:GetOptions() return { {24573, "ICON"}, -- Mortal Strike 23331, -- Blast Wave + 18670, -- Knock Away } end @@ -23,17 +24,24 @@ if mod:GetSeason() == 2 then return { {24573, "ICON"}, -- Mortal Strike 23331, -- Blast Wave + 18670, -- Knock Away "stages", + {367369, "ICON", "SAY", "SAY_COUNTDOWN", "ME_ONLY_EMPHASIZE"}, -- Tactical Charge + },nil,{ + [367369] = CL.charge, -- Tactical Charge (Charge) } end end function mod:OnBossEnable() - self:Log("SPELL_AURA_APPLIED", "MortalStrike", 24573) - self:Log("SPELL_AURA_REMOVED", "MortalStrikeOver", 24573) + self:Log("SPELL_AURA_APPLIED", "MortalStrikeApplied", 24573) + self:Log("SPELL_AURA_REMOVED", "MortalStrikeRemoved", 24573) self:Log("SPELL_CAST_SUCCESS", "BlastWave", 23331) + self:Log("SPELL_CAST_SUCCESS", "KnockAway", 18670) if self:GetSeason() == 2 then self:Log("SPELL_CAST_SUCCESS", "Teleport", 468495) + self:Log("SPELL_AURA_APPLIED", "TacticalChargeApplied", 367369) + self:Log("SPELL_AURA_REMOVED", "TacticalChargeRemoved", 367369) end end @@ -47,14 +55,14 @@ end -- Event Handlers -- -function mod:MortalStrike(args) +function mod:MortalStrikeApplied(args) self:TargetMessage(args.spellId, "yellow", args.destName) self:PrimaryIcon(args.spellId, args.destName) self:TargetBar(args.spellId, 5, args.destName) self:PlaySound(args.spellId, "alarm") end -function mod:MortalStrikeOver(args) +function mod:MortalStrikeRemoved(args) self:StopBar(args.spellName, args.destName) self:PrimaryIcon(args.spellId) end @@ -64,6 +72,11 @@ function mod:BlastWave(args) self:PlaySound(args.spellId, "info") end +function mod:KnockAway(args) + self:TargetMessage(args.spellId, "yellow", args.destName) + self:PlaySound(args.spellId, "alert") +end + function mod:UNIT_HEALTH(event, unit) if self:MobId(self:UnitGUID(unit)) == 12017 then -- Broodlord Lashlayer local hp = self:GetHealth(unit) @@ -80,3 +93,22 @@ function mod:Teleport() self:Message("stages", "cyan", CL.percent:format(50, CL.teleport), false) self:PlaySound("stages", "long") end + +function mod:TacticalChargeApplied(args) + self:TargetMessage(args.spellId, "red", args.destName, CL.charge) + self:SecondaryIcon(args.spellId, args.destName) + self:TargetBar(args.spellId, 5, args.destName, CL.charge) + if self:Me(args.destGUID) then + self:Say(args.spellId, CL.charge, nil, "Charge") + self:SayCountdown(args.spellId, 5) + end + self:PlaySound(args.spellId, "warning", nil, args.destName) +end + +function mod:TacticalChargeRemoved(args) + self:StopBar(CL.charge, args.destName) + self:SecondaryIcon(args.spellId) + if self:Me(args.destGUID) then + self:CancelSayCountdown(args.spellId) + end +end diff --git a/BlackwingLair/Chromaggus.lua b/BlackwingLair/Chromaggus.lua index 7c6672f..b458eb0 100644 --- a/BlackwingLair/Chromaggus.lua +++ b/BlackwingLair/Chromaggus.lua @@ -245,6 +245,6 @@ function mod:ElementalShield(args) -- Weaknesses end function mod:RollOver(args) - self:Message(args.spellId, "yellow") + self:Message(args.spellId, "cyan") self:PlaySound(args.spellId, "long") end diff --git a/BlackwingLair/Flamegor.lua b/BlackwingLair/Flamegor.lua index cdc014d..4f30428 100644 --- a/BlackwingLair/Flamegor.lua +++ b/BlackwingLair/Flamegor.lua @@ -7,6 +7,17 @@ if not mod then return end mod:RegisterEnableMob(11981) mod:SetEncounterID(615) +-------------------------------------------------------------------------------- +-- Locals +-- + +local killedBosses = {} +local UpdateInfoBoxList +local bossList = { + [11981] = 1, -- Flamegor + [14601] = 3, -- Ebonroc +} + -------------------------------------------------------------------------------- -- Initialization -- @@ -28,6 +39,7 @@ if mod:GetSeason() == 2 then 368521, -- Brand of Flame {467764, "CASTBAR", "CASTBAR_COUNTDOWN", "ME_ONLY_EMPHASIZE"}, -- Go! {467732, "CASTBAR", "CASTBAR_COUNTDOWN", "ME_ONLY_EMPHASIZE"}, -- Stop! + {"health", "INFOBOX"}, } end end @@ -45,14 +57,26 @@ function mod:OnBossEnable() self:Log("SPELL_AURA_REMOVED", "GoOrStopRemoved", 467764, 467732) self:Log("SPELL_CAST_SUCCESS", "GoSuccess", 467764) self:Log("SPELL_CAST_SUCCESS", "StopSuccess", 467732) + self:Death("Deaths", 11981, 14601) -- Flamegor, Ebonroc end end function mod:OnEngage() - self:CDBar(23339, self:GetSeason() == 2 and 66 or 29) -- Wing Buffet if self:GetPlayerAura(467047) then -- Black Essence self:CDBar(467732, 20) -- Stop end + if self:GetSeason() == 2 then + self:CDBar(23339, 66) -- Wing Buffet + self:OpenInfo("health", CL.other:format("BigWigs", CL.health)) + for npcId, line in next, bossList do + self:SetInfo("health", line, self:BossName(npcId == 11981 and 1534 or 1533)) -- Flamegor, Ebonroc + self:SetInfoBar("health", line, 1) + self:SetInfo("health", line + 1, "100%") + end + self:SimpleTimer(UpdateInfoBoxList, 1) + else + self:CDBar(23339, 29) -- Wing Buffet + end end -------------------------------------------------------------------------------- @@ -129,3 +153,36 @@ function mod:StopSuccess(args) self:StopBar(args.spellName) -- Stop! self:CDBar(467764, 20) -- Go! end + +do + local unitTracker = {} + function mod:Deaths(args) + unitTracker[args.mobId] = nil + killedBosses[args.mobId] = true + + local line = bossList[args.mobId] + self:SetInfoBar("health", line, 0) + self:SetInfo("health", line + 1, CL.dead) + end + + function UpdateInfoBoxList() + if not mod:IsEngaged() then return end + mod:SimpleTimer(UpdateInfoBoxList, 0.5) + + -- Flamegor + if not killedBosses[11981] and (not unitTracker[11981] or mod:MobId(mod:UnitGUID(unitTracker[11981])) ~= 11981) then + unitTracker[11981] = mod:GetUnitIdByGUID(11981) + end + -- Ebonroc + if not killedBosses[14601] and (not unitTracker[14601] or mod:MobId(mod:UnitGUID(unitTracker[14601])) ~= 14601) then + unitTracker[14601] = mod:GetUnitIdByGUID(14601) + end + + for npcId, unitToken in next, unitTracker do + local line = bossList[npcId] + local currentHealthPercent = math.floor(mod:GetHealth(unitToken)) + mod:SetInfoBar("health", line, currentHealthPercent/100) + mod:SetInfo("health", line + 1, ("%d%%"):format(currentHealthPercent)) + end + end +end diff --git a/BlackwingLair/Nefarian.lua b/BlackwingLair/Nefarian.lua index f70336b..0e7dcca 100644 --- a/BlackwingLair/Nefarian.lua +++ b/BlackwingLair/Nefarian.lua @@ -6,7 +6,9 @@ local mod, CL = BigWigs:NewBoss("Nefarian Classic", 469, 1536) if not mod then return end mod:RegisterEnableMob(11583, 10162, 14261, 14262, 14263, 14264, 14265, 14302) -- Nefarian, Lord Victor Nefarius, Blue, Green, Bronze, Red, Black, Chromatic mod:SetEncounterID(617) -mod:SetRespawnTime(900) +if mod:GetSeason() ~= 2 then + mod:SetRespawnTime(900) +end mod:SetStage(1) -------------------------------------------------------------------------------- @@ -192,6 +194,9 @@ end function mod:CHAT_MSG_MONSTER_YELL(_, msg) if msg:find(L.engage_yell_trigger, nil, true) then + if self:IsEngaged() then + self:Wipe() + end self:Engage() elseif msg:find(L.stage3_yell_trigger, nil, true) then self:SetStage(3) diff --git a/BlackwingLair/Razorgore.lua b/BlackwingLair/Razorgore.lua index 00a17aa..5358a2d 100644 --- a/BlackwingLair/Razorgore.lua +++ b/BlackwingLair/Razorgore.lua @@ -37,10 +37,15 @@ function mod:GetOptions() return { 14515, -- Dominate Mind {23023, "ICON"}, -- Conflagration + 367873, -- Blinding Ash + 366909, -- Ruby Flames + 367740, -- Creeping Chill "eggs", "stages", },nil,{ [14515] = CL.mind_control, -- Dominate Mind (Mind Control) + [367873] = CL.underyou:format(CL.fire), -- Blinding Ash (Fire under YOU) + [366909] = CL.underyou:format(CL.fire), -- Ruby Flames (Fire under YOU) } end @@ -51,6 +56,13 @@ function mod:OnBossEnable() self:Log("SPELL_CAST_SUCCESS", "DestroyEgg", 19873) self:Log("SPELL_AURA_APPLIED", "Conflagration", 23023) self:Log("SPELL_AURA_REMOVED", "ConflagrationOver", 23023) + if self:GetSeason() == 2 then + self:Log("SPELL_AURA_APPLIED", "GroundDamage", 367873, 366909) -- Blinding Ash, Ruby Flames + self:Log("SPELL_PERIODIC_DAMAGE", "GroundDamage", 367873, 366909) + self:Log("SPELL_PERIODIC_MISSED", "GroundDamage", 367873, 366909) + self:Log("SPELL_AURA_APPLIED", "CreepingChillApplied", 367740) + self:Log("SPELL_AURA_APPLIED_DOSE", "CreepingChillApplied", 367740) + end end function mod:OnEngage() @@ -116,3 +128,23 @@ function mod:ConflagrationOver(args) self:StopBar(args.spellName, args.destName) self:PrimaryIcon(args.spellId) end + +do + local prev = 0 + function mod:GroundDamage(args) + if self:Me(args.destGUID) and args.time - prev > 2 then + prev = args.time + self:PersonalMessage(args.spellId, "underyou", CL.fire) + self:PlaySound(args.spellId, "underyou") + end + end +end + +function mod:CreepingChillApplied(args) + if self:Me(args.destGUID) then + self:StackMessage(args.spellId, "blue", args.destName, args.amount, 3) + if args.amount and args.amount >= 3 then + self:PlaySound(args.spellId, "alarm", nil, args.destName) + end + end +end diff --git a/BlackwingLair/Trash.lua b/BlackwingLair/Trash.lua index 30a7f71..bc0fc8b 100644 --- a/BlackwingLair/Trash.lua +++ b/BlackwingLair/Trash.lua @@ -162,7 +162,7 @@ function mod:ArcaneBombApplied(args) self:TargetBar(args.spellId, 8, args.destName) if self:Me(args.destGUID) then self:Yell(args.spellId, nil, nil, "Arcane Bomb") - self:YellCountdown(args.spellId, 8, nil, 5) + self:YellCountdown(args.spellId, 8, nil, 6) end self:PlaySound(args.spellId, "warning", nil, args.destName) end