Skip to content

Commit

Permalink
Migrated all mods to new countdown feature
Browse files Browse the repository at this point in the history
Bumped TOC files
Disabled Model viewer playsoundfile in mods to avoid lua errors (since these aren't converted to soundkit yet)
Updated some textures to use file data id instead of texture path, in some legacy mods that still use direct textures instead of GetSpellTexture
  • Loading branch information
MysticalOS committed Jun 25, 2019
1 parent 57118d0 commit 7c1b620
Show file tree
Hide file tree
Showing 35 changed files with 128 additions and 654 deletions.
39 changes: 3 additions & 36 deletions DBM-BlackrockFoundry/Blackhand.lua
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ local specWarnFallingDebris = mod:NewSpecialWarningCount(162585, nil, nil, nil
mod:AddTimerLine(SCENARIO_STAGE:format(1))
local timerDemolitionCD = mod:NewNextCountTimer(45, 156425, nil, nil, nil, 2, nil, DBM_CORE_HEALER_ICON)
local timerMassiveDemolitionCD = mod:NewNextCountTimer(6, 156479, nil, nil, nil, 2, nil, DBM_CORE_DEADLY_ICON)
local timerMarkedforDeathCD = mod:NewNextCountTimer(15.5, 156096, nil, nil, nil, 3)--Deadly icon? DJ doesn't give it an icon so i won't either for now
local timerThrowSlagBombsCD = mod:NewCDCountTimer(24.5, 156030, nil, "Melee", nil, 3)--It's a next timer, but sometimes delayed by Shattering Smash
local timerShatteringSmashCD = mod:NewCDCountTimer(44.5, 155992, nil, nil, nil, 5, nil, DBM_CORE_TANK_ICON)--power based, can variate a little do to blizzard buggy power code.
local timerMarkedforDeathCD = mod:NewNextCountTimer(15.5, 156096, nil, nil, nil, 3, nil, nil, nil, 3, 4)--Deadly icon? DJ doesn't give it an icon so i won't either for now
local timerThrowSlagBombsCD = mod:NewCDCountTimer(24.5, 156030, nil, "Melee", nil, 3, nil, nil, nil, 2, 4)--It's a next timer, but sometimes delayed by Shattering Smash
local timerShatteringSmashCD = mod:NewCDCountTimer(44.5, 155992, nil, nil, nil, 5, nil, DBM_CORE_TANK_ICON, nil, 1, 5)--power based, can variate a little do to blizzard buggy power code.
local timerImpalingThrow = mod:NewCastTimer(5, 156111, nil, nil, nil, nil, nil, DBM_CORE_DEADLY_ICON)--How long marked target has to aim throw at Debris Pile or Siegemaker
--Stage Two: Storage Warehouse
mod:AddTimerLine(SCENARIO_STAGE:format(2))
Expand All @@ -79,11 +79,6 @@ local timerSlagBomb = mod:NewCastTimer(5, 157015)
local timerFallingDebris = mod:NewCastTimer(6, 162585)--Mythic
local timerFallingDebrisCD = mod:NewNextCountTimer(40, 162585, nil, nil, nil, 5, nil, DBM_CORE_HEROIC_ICON)--Mythic

local countdownShatteringSmash = mod:NewCountdown(45.5, 155992)
local countdownSlagBombs = mod:NewCountdown("Alt25", 156030, "Melee")
local countdownMarkedforDeath = mod:NewCountdown("AltTwo25", 156096, "-Tank")
local countdownMarkedforDeathFades = mod:NewCountdownFades("AltTwo5", 156096)--Same voice should be fine, never will overlap, and both for same spell, so people will understand

mod:AddSetIconOption("SetIconOnMarked", 156096, true)
mod:AddRangeFrameOption("6/10")
mod:AddBoolOption("PositionsAllPhases", false)
Expand Down Expand Up @@ -269,17 +264,14 @@ function mod:OnCombatStart(delay)
self.vb.markCount = 0
self.vb.slagCastCount = 0
timerThrowSlagBombsCD:Start(5.2-delay, 1)
countdownSlagBombs:Start(5.2-delay)
timerDemolitionCD:Start(15-delay, 1)
timerShatteringSmashCD:Start(21-delay, 1)
if self:IsTank() then--Ability only concerns tank in phase 1
countdownShatteringSmash:Start(21-delay)
if self.Options.InfoFrame then--Only tanks in phase 1
DBM.InfoFrame:Show(5, "enemypower", 1)
end
end
timerMarkedforDeathCD:Start(36-delay, 1)
countdownMarkedforDeath:Start(36-delay)
end

function mod:OnCombatEnd()
Expand All @@ -303,16 +295,13 @@ function mod:SPELL_CAST_START(args)
timerShatteringSmashCD:Start(30, self.vb.smashCount+1)
if self:IsTank() then--only warnk tank in phase 1
specWarnShatteringSmash:Show(self.vb.smashCount)
countdownShatteringSmash:Start(30)
specWarnShatteringSmash:Play("carefly")
end
else
if self:IsMythic() then
timerShatteringSmashCD:Start(30.5, self.vb.smashCount+1)
countdownShatteringSmash:Start(30.5)
else
timerShatteringSmashCD:Start(nil, self.vb.smashCount+1)
countdownShatteringSmash:Start()--Not phase 1, concerns everyone not just tank
end
specWarnShatteringSmash:Show(self.vb.smashCount)--Warn all melee in phase 2
specWarnShatteringSmash:Play("carefly")
Expand All @@ -326,7 +315,6 @@ function mod:SPELL_CAST_START(args)
self.vb.smashCount = self.vb.smashCount + 1
specWarnMassiveShatteringSmash:Show(self.vb.smashCount)
timerShatteringSmashCD:Start(24.5, self.vb.smashCount+1)--Use this cd bar in phase 3 as well, because text for "Massive Shattering Smash" too long.
countdownShatteringSmash:Start(24.5)
specWarnMassiveShatteringSmash:Play("carefly")
if self.Options.RangeFrame and smashTank then
--Open regular range frame if you are the smash tank, even if you are a bomb, because now you don't have a choice.
Expand Down Expand Up @@ -374,16 +362,13 @@ function mod:SPELL_AURA_APPLIED(args)
end
timerImpalingThrow:Start()
timerMarkedforDeathCD:Start(timer, self.vb.markCount+1)
countdownMarkedforDeath:Start(timer)
local elapsed, total = timerShatteringSmashCD:GetTime(self.vb.smashCount+1)
local remaining = total - elapsed
DBM:Debug("Smash Elapsed: "..elapsed.." Smash Total: "..total.." Smash Remaining: "..remaining.." MFD Timer: "..timer, 2)
if (remaining > timer) and (remaining < timer+6) then--Marked for death will come off cd before timerShatteringSmashCD comes off cd and delay the cast
local extend = (timer+6)-remaining
DBM:Debug("Delay detected, updating smash timer now. Extend: "..extend)
timerShatteringSmashCD:Update(elapsed, total+extend, self.vb.smashCount+1)
countdownShatteringSmash:Cancel()
countdownShatteringSmash:Start(remaining+extend)
end
end
markTargets[#markTargets + 1] = args.destName
Expand All @@ -396,7 +381,6 @@ function mod:SPELL_AURA_APPLIED(args)
end
if args:IsPlayer() then
specWarnMarkedforDeath:Show()
countdownMarkedforDeathFades:Start()
if self:IsLFR() or (not self.Options.PositionsAllPhases and self.vb.phase < 3) then
yellMarkedforDeath:Yell()
specWarnMarkedforDeath:Play("findshelter")
Expand All @@ -413,7 +397,6 @@ function mod:SPELL_AURA_APPLIED(args)
slagPlayerCount = 0--Reset to 0, once
self.vb.slagCastCount = self.vb.slagCastCount + 1
timerAttachSlagBombsCD:Start(nil, self.vb.slagCastCount+1)
countdownSlagBombs:Start(26)
end
slagPlayerCount = slagPlayerCount + 1--Add counter (not in antispam on purpose)
slagTargets[#slagTargets + 1] = args.destName
Expand Down Expand Up @@ -504,8 +487,6 @@ function mod:SPELL_ENERGIZE(_, _, _, _, destGUID, _, _, _, spellId, _, _, amount
local bossPower = UnitPower("boss1")
bossPower = bossPower / 4--4 energy per second, smash every 25 seconds there abouts.
local remaining = 25-bossPower
countdownShatteringSmash:Cancel()
countdownShatteringSmash:Start(remaining)
timerShatteringSmashCD:Stop()--Prevent timer debug when updating timer
timerShatteringSmashCD:Start(remaining, self.vb.smashCount+1)
end
Expand All @@ -523,7 +504,6 @@ function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
self.vb.slagCastCount = self.vb.slagCastCount + 1
specWarnThrowSlagBombs:Show(self.vb.slagCastCount)
timerThrowSlagBombsCD:Start(nil, self.vb.slagCastCount+1)
countdownSlagBombs:Start()
specWarnThrowSlagBombs:Play("bombsoon")
elseif spellId == 156425 then
self.vb.demolitionCount = self.vb.demolitionCount + 1
Expand Down Expand Up @@ -578,24 +558,17 @@ function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
timerMassiveDemolitionCD:Unschedule()--Redundant?
specWarnMassiveDemolition:Cancel()
warnMassiveDemolition:Cancel()
countdownSlagBombs:Cancel()
countdownSlagBombs:Start(11)
timerThrowSlagBombsCD:Stop()
timerThrowSlagBombsCD:Start(11, 1)--11-12.5
timerSiegemakerCD:Start(15, 1)
countdownShatteringSmash:Cancel()
timerShatteringSmashCD:Stop()
if self:IsMythic() then--Boss gain power faster on mythic phase 2
countdownShatteringSmash:Start(18)
timerShatteringSmashCD:Start(18, 1)--18 seen in 10 pulls worth of data.
else
countdownShatteringSmash:Start(21)
timerShatteringSmashCD:Start(21, 1)--21-23 variation. Boss power is set to 66/100 automatically by transitions
end
timerMarkedforDeathCD:Stop()
timerMarkedforDeathCD:Start(25.5, 1)
countdownMarkedforDeath:Cancel()
countdownMarkedforDeath:Start(25)
warnPhase:Show(DBM_CORE_AUTO_ANNOUNCE_TEXTS.stage:format(2))
warnPhase:Play("ptwo")
--Maybe not needed whole phase, only when balcony adds are up? A way to detect and improve?
Expand All @@ -616,14 +589,10 @@ function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
self.vb.slagCastCount = 0
timerSiegemakerCD:Stop()
timerThrowSlagBombsCD:Stop()
countdownSlagBombs:Cancel()
if self:IsMythic() then
timerFallingDebrisCD:Start(11, 1)
end
timerAttachSlagBombsCD:Start(11, 1)
countdownSlagBombs:Start(11)
countdownShatteringSmash:Cancel()
countdownShatteringSmash:Start(26)
timerShatteringSmashCD:Stop()
timerShatteringSmashCD:Start(26, 1)--26-28 variation. Boss power is set to 33/100 automatically by transition (after short delay)
timerMarkedforDeathCD:Stop()
Expand All @@ -632,8 +601,6 @@ function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
else
timerMarkedforDeathCD:Start(17, 1)
end
countdownMarkedforDeath:Cancel()
countdownMarkedforDeath:Start(17)
timerSlagEruptionCD:Start(31.5, 1)
warnPhase:Show(DBM_CORE_AUTO_ANNOUNCE_TEXTS.stage:format(3))
warnPhase:Play("pthree")
Expand Down
30 changes: 4 additions & 26 deletions DBM-BlackrockFoundry/BlastFurnace.lua
Original file line number Diff line number Diff line change
Expand Up @@ -75,25 +75,18 @@ mod:AddTimerLine(SCENARIO_STAGE:format(1))
local timerBomb = mod:NewBuffFadesTimer(15, 155192)
local timerBlastCD = mod:NewCDTimer(25, 155209, nil, nil, nil, 2)--25 seconds base. shorter when loading is being channeled by operators.
local timerRuptureCD = mod:NewCDTimer(20, 156934, nil, "-Tank", 2, 3)
local timerEngineer = mod:NewNextCountTimer(41, "ej9649", nil, nil, nil, 1, 155179)
local timerEngineer = mod:NewNextCountTimer(41, "ej9649", nil, nil, nil, 1, 155179, nil, nil, 1, 5)
local timerBellowsOperator = mod:NewCDCountTimer(59, "ej9650", nil, nil, nil, 1, 155181)--60-65second variation for sure
mod:AddTimerLine(SCENARIO_STAGE:format(2))
local timerVolatileFireCD = mod:NewCDTimer(20, 176121, nil, false, nil, 3)--Very useful, but off by default since it can be spammy if > 2 adds up at once.
local timerVolatileFire = mod:NewBuffFadesTimer(8, 176121)
local timerVolatileFire = mod:NewBuffFadesTimer(8, 176121, nil, nil, nil, 5, nil, nil, nil, 1, 4)
local timerShieldsDown = mod:NewBuffActiveTimer(30, 158345, nil, "Dps", nil, 6, nil, DBM_CORE_DAMAGE_ICON)
local timerSlagElemental = mod:NewNextCountTimer(55, "ej9657", nil, "-Tank", nil, 1, 155196)--Definitely 55 seconds, although current detection method may make it appear 1-2 seconds if slag has to run across room before casting first fixate
local timerFireCaller = mod:NewNextCountTimer(45, "ej9659", nil, "Tank", nil, 1, 156937)
local timerSecurityGuard = mod:NewNextCountTimer(40, "ej9648", nil, "Tank", nil, 1, 160379, DBM_CORE_TANK_ICON)
local timerFireCaller = mod:NewNextCountTimer(45, "ej9659", nil, "Tank", nil, 1, 156937, nil, nil, 3, 4)
local timerSecurityGuard = mod:NewNextCountTimer(40, "ej9648", nil, "Tank", nil, 1, 160379, DBM_CORE_TANK_ICON, nil, 2, 4)

local berserkTimer = mod:NewBerserkTimer(780)

local countdownBlast = mod:NewCountdown(30, 155209, false, 2)
local countdownEngineer = mod:NewCountdown("AltTwo41", "ej9649", "Tank", 2)
--Phase 2 countdowns, no conflict with phase 1 countdowns
local countdownFireCaller = mod:NewCountdown("AltTwo64", "ej9659", "Tank")
local countdownSecurityGuard = mod:NewCountdown("Alt41", "ej9648", "Tank")
local countdownVolatileFire = mod:NewCountdownFades(8, 176121)

local voiceSlagElemental = mod:NewVoice("ej9657", "-Tank")

mod:AddRangeFrameOption(8)
Expand Down Expand Up @@ -195,11 +188,9 @@ local function Engineers(self)
if self:IsDifficulty("mythic", "normal") then
timerEngineer:Start(35, count+1)
self:Schedule(35, Engineers, self)
countdownEngineer:Start(35)
elseif self:IsHeroic() then
timerEngineer:Start(40.5, count+1)
self:Schedule(40.5, Engineers, self)
countdownEngineer:Start(40.5)
end
end

Expand All @@ -213,11 +204,9 @@ local function SecurityGuard(self)
end
if self.vb.phase == 1 then
timerSecurityGuard:Start(30.5, count+1)
countdownSecurityGuard:Start(30.5)
self:Schedule(30.5, SecurityGuard, self)
else
timerSecurityGuard:Start(40, count+1)
countdownSecurityGuard:Start(40)
self:Schedule(40, SecurityGuard, self)
end
end
Expand Down Expand Up @@ -337,14 +326,11 @@ function mod:OnCombatStart(delay)
local blastTimer = self:IsMythic() and 24 or 29
self.vb.lastTotal = blastTimer
timerBlastCD:Start(blastTimer)
countdownBlast:Start(blastTimer)
if not self:IsLFR() then
self:Schedule(firstTimer, SecurityGuard, self)
self:Schedule(firstTimer, Engineers, self)
timerSecurityGuard:Start(firstTimer, 2)
countdownSecurityGuard:Start(firstTimer)
timerEngineer:Start(firstTimer, 2)
countdownEngineer:Start(firstTimer)
berserkTimer:Start(-delay)
end
if self.Options.InfoFrame then
Expand Down Expand Up @@ -503,7 +489,6 @@ function mod:SPELL_AURA_APPLIED(args)
if self:AntiSpam(3, 9) then
specVolatileFire:Show()
--Only one countdown/yell/runout alert though to avoid spam, user needs to get out of group for first expire, they just need to STAY out for second
countdownVolatileFire:Start(debuffTime)
specVolatileFire:ScheduleVoice(debuffTime - 4, "runout")
if not self:IsLFR() and self.Options.Yell176121 then
if self:IsMythic() and self.Options.VFYellType2 == "Countdown" then
Expand Down Expand Up @@ -600,7 +585,6 @@ function mod:UNIT_DIED(args)
else
timerFireCaller:Stop()
timerSecurityGuard:Stop()
countdownSecurityGuard:Cancel()
timerSlagElemental:Stop()
self:Unschedule(SecurityGuard)
self:Unschedule(FireCaller)
Expand All @@ -626,10 +610,8 @@ function mod:UNIT_DIED(args)
warnPhase2:Show()
self:Unschedule(Engineers)
timerEngineer:Stop()
countdownEngineer:Cancel()
timerBellowsOperator:Stop()
timerSecurityGuard:Stop()
countdownSecurityGuard:Cancel()
self:Unschedule(SecurityGuard)
warnPhase2:Play("ptwo")
--Start adds timers. Seem same in all modes.
Expand All @@ -638,7 +620,6 @@ function mod:UNIT_DIED(args)
timerSlagElemental:Start(13, 1)
self:Schedule(72, SecurityGuard, self)
timerSecurityGuard:Start(71.5, 1)
countdownSecurityGuard:Start(71.5)
self:Schedule(76, FireCaller, self)
timerFireCaller:Start(76, 1)
end
Expand Down Expand Up @@ -695,8 +676,6 @@ do
local bossPower = UnitPower("boss1") --Get Boss Power
local elapsed = bossPower / powerRate
timerBlastCD:Update(elapsed, totalTime)
countdownBlast:Cancel()
countdownBlast:Start(totalTime-elapsed)
end
else
local bossPower = UnitPower("boss1") --Get Boss Power
Expand All @@ -709,7 +688,6 @@ do
elseif bossPower < 5 and self.vb.blastWarned then--Should catch 0, if not, at least 1-4 will fire it but then timer may be a second or so off
self.vb.blastWarned = false
timerBlastCD:Start(totalTime)
countdownBlast:Start(totalTime)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion DBM-BlackrockFoundry/DBM-BlackrockFoundry.toc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Interface: 80100
## Interface: 80200
## X-Min-Interface: 80000
## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Blackrock Foundry|r
## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0검은바위 용광로|r
Expand Down
Loading

0 comments on commit 7c1b620

Please sign in to comment.