Skip to content

Commit

Permalink
Naxxramas: add Vanilla version
Browse files Browse the repository at this point in the history
For Onyxia and PTR realm. Will need logs to validate timers
  • Loading branch information
Zidras committed Jul 5, 2024
1 parent 4446f8b commit 0ccb47a
Show file tree
Hide file tree
Showing 28 changed files with 5,330 additions and 9 deletions.
1 change: 1 addition & 0 deletions DBM-Naxx/DBM-Naxx.toc
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
## X-DBM-Mod-Name-esMX: Naxxramas
## X-DBM-Mod-Sort: 6
## X-DBM-Mod-MapID: 536
## X-DBM-Mod-BlockRealm: Onyxia, Vanilla Naxxamas PTR
## X-DBM-Mod-LoadZone: Naxxramas
## X-DBM-Mod-LoadZone-zhCN: 纳克萨玛斯
## X-DBM-Mod-LoadZone-ruRU: Наксрамас
Expand Down
58 changes: 58 additions & 0 deletions DBM-VanillaNaxx/ArachnidQuarter/Anub'Rekhan.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
local mod = DBM:NewMod("Anub'Rekhan-Vanilla", "DBM-VanillaNaxx", 1)
local L = mod:GetLocalizedStrings()

mod:SetRevision("20240701222429")
mod:SetCreatureID(15956)

mod:RegisterCombat("combat_yell", L.Pull1, L.Pull2)

mod:RegisterEventsInCombat(
"SPELL_CAST_START 28785 54021",
"SPELL_CAST_SUCCESS 28783 56090",
"SPELL_AURA_REMOVED 28785 54021"
)

local warningLocustSoon = mod:NewSoonAnnounce(28785, 2)
local warningLocustFaded = mod:NewFadesAnnounce(28785, 1)
local warnImpale = mod:NewTargetNoFilterAnnounce(28783, 3, nil, false)

local specialWarningLocust = mod:NewSpecialWarningSpell(28785, nil, nil, nil, 2, 2)
local yellImpale = mod:NewYell(28783, nil, false)

local timerLocustIn = mod:NewCDTimer(80, 28785, nil, nil, nil, 6)
local timerLocustFade = mod:NewBuffActiveTimer(23, 28785, nil, nil, nil, 6)
local timerImpale = mod:NewCDTimer(13, 56090, nil, nil, nil, 3) -- REVIEW! ~7s variance [13.0-19.8]? (25m Lordaeron 2022/10/16) -- 13.7, 13.6, 19.8, 13.0

function mod:OnCombatStart(delay)
timerLocustIn:Start(100 - delay)
warningLocustSoon:Schedule(90 - delay)
timerImpale:Start(12.7-delay) -- REVIEW! variance? (25m Lordaeron 2022/10/16) - pull:12.7
end

function mod:SPELL_CAST_START(args)
if args:IsSpellID(28785, 54021) then -- Locust Swarm
specialWarningLocust:Show()
specialWarningLocust:Play("aesoon")
timerLocustIn:Stop()
timerLocustFade:Start(23)
end
end

function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(28783, 56090) then -- Impale. REVIEW! 28783 needed?
timerImpale:Start()
warnImpale:Show(args.destName)
if args:IsPlayer() then
yellImpale:Yell()
end
end
end

function mod:SPELL_AURA_REMOVED(args)
if args:IsSpellID(28785, 54021)
and args.auraType == "BUFF" then
warningLocustFaded:Show()
timerLocustIn:Start()
warningLocustSoon:Schedule(62)
end
end
79 changes: 79 additions & 0 deletions DBM-VanillaNaxx/ArachnidQuarter/Faerlina.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
local mod = DBM:NewMod("Faerlina-Vanilla", "DBM-VanillaNaxx", 1)
local L = mod:GetLocalizedStrings()

mod:SetRevision("20240701222429")
mod:SetCreatureID(15953)

mod:RegisterCombat("combat_yell", L.Pull)

mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 28798 54100 28732 54097 28794 54099",
"SPELL_CAST_SUCCESS 28796 54098",
"UNIT_DIED"
)

local warnEmbraceActive = mod:NewSpellAnnounce(28732, 1)
local warnEmbraceExpire = mod:NewAnnounce("WarningEmbraceExpire", 2, 28732, nil, nil, nil, 28732)
local warnEmbraceExpired = mod:NewFadesAnnounce(28732, 3)
local warnEnrageSoon = mod:NewSoonAnnounce(28131, 3)
local warnEnrageNow = mod:NewSpellAnnounce(28131, 4)

local specWarnEnrage = mod:NewSpecialWarningDefensive(28131, nil, nil, nil, 3, 2)
local specWarnGTFO = mod:NewSpecialWarningGTFO(28794, nil, nil, nil, 1, 8)

local timerEmbrace = mod:NewBuffActiveTimer(30, 28732, nil, nil, nil, 6)
local timerEnrage = mod:NewCDTimer(60, 28131, nil, nil, nil, 6)
local timerPoisonVolleyCD = mod:NewCDTimer(8.2, 54098, nil, nil, nil, 5) -- REVIEW! ~1s variance? (25man Lordaeron 2022/10/16) - 9.1, 9.3, 9.1, 8.5, 8.4, 8.5, 8.2, 8.8

mod.vb.enraged = false

function mod:OnCombatStart(delay)
timerEnrage:Start(-delay)
warnEnrageSoon:Schedule(55 - delay)
timerPoisonVolleyCD:Start(12.6-delay) -- REVIEW! variance? (25man Lordaeron 2022/10/16) - 12.6
self.vb.enraged = false
end

function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(28798, 54100) then -- Frenzy
self.vb.enraged = true
if self:IsTanking("player", "boss1", nil, true) then
specWarnEnrage:Show()
specWarnEnrage:Play("defensive")
else
warnEnrageNow:Show()
end
elseif args:IsSpellID(28732, 54097) and args:GetDestCreatureID() == 15953 and self:AntiSpam(5, 2) then -- Widow's Embrace
warnEmbraceExpire:Cancel()
warnEmbraceExpired:Cancel()
warnEnrageSoon:Cancel()
timerEnrage:Stop()
if self.vb.enraged then
timerEnrage:Start()
warnEnrageSoon:Schedule(45)
end
timerEmbrace:Start()
warnEmbraceActive:Show()
warnEmbraceExpire:Schedule(25)
warnEmbraceExpired:Schedule(30)
self.vb.enraged = false
elseif args:IsSpellID(28794, 54099) and args:IsPlayer() then
specWarnGTFO:Show(args.spellName)
specWarnGTFO:Play("watchfeet")
end
end

function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(28796, 54098) then -- Poison Bolt Volley
timerPoisonVolleyCD:Start(10)
end
end

function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 15953 then
warnEnrageSoon:Cancel()
warnEmbraceExpire:Cancel()
warnEmbraceExpired:Cancel()
end
end
72 changes: 72 additions & 0 deletions DBM-VanillaNaxx/ArachnidQuarter/Maexxna.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
local mod = DBM:NewMod("Maexxna-Vanilla", "DBM-VanillaNaxx", 1)
local L = mod:GetLocalizedStrings()

mod:SetRevision("20240701222429")
mod:SetCreatureID(15952)
mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 28622",
"SPELL_CAST_SUCCESS 29484 54125"
)

--TODO, verify nax40 web wrap timer
local warnWebWrap = mod:NewTargetNoFilterAnnounce(28622, 2)
local warnWebSpraySoon = mod:NewSoonAnnounce(29484, 1)
local warnWebSprayNow = mod:NewSpellAnnounce(29484, 3)
local warnSpidersSoon = mod:NewAnnounce("WarningSpidersSoon", 2, 17332)
local warnSpidersNow = mod:NewAnnounce("WarningSpidersNow", 4, 17332)

local specWarnWebWrap = mod:NewSpecialWarningSwitch(28622, "RangedDps", nil, nil, 1, 2)
local yellWebWrap = mod:NewYellMe(28622)

local timerWebSpray = mod:NewNextTimer(40, 29484, nil, nil, nil, 2)
local timerWebWrap = mod:NewNextTimer(39.6, 28622, nil, "RangedDps|Healer", nil, 3)-- 39.593-40.885
local timerSpider = mod:NewTimer(30, "TimerSpider", 17332, nil, nil, 1)

local function Spiderlings(self)
warnSpidersSoon:Schedule(35)
warnSpidersNow:Schedule(40)
timerSpider:Start(40)
self:Unschedule(Spiderlings)
self:Schedule(40, Spiderlings, self)
end

function mod:OnCombatStart(delay)
warnWebSpraySoon:Schedule(35 - delay)
timerWebSpray:Start(40 - delay)
timerWebWrap:Start(20.1 - delay)--20.095-21.096
warnSpidersSoon:Schedule(25 - delay)
warnSpidersNow:Schedule(30 - delay)
timerSpider:Start(30 - delay)
self:Schedule(30 - delay, Spiderlings, self)
end

function mod:OnCombatEnd(wipe)
if not wipe then
if DBT:GetBar(L.ArachnophobiaTimer) then
DBT:CancelBar(L.ArachnophobiaTimer)
end
end
end

function mod:SPELL_AURA_APPLIED(args)
if args.spellId == 28622 then -- Web Wrap
warnWebWrap:CombinedShow(0.5, args.destName)
if args.destName == UnitName("player") then
yellWebWrap:Yell()
elseif not DBM:UnitDebuff("player", args.spellName) and self:AntiSpam(3, 1) then
specWarnWebWrap:Show()
specWarnWebWrap:Play("targetchange")
timerWebWrap:Start()
end
end
end

function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(29484, 54125) then -- Web Spray
warnWebSprayNow:Show()
warnWebSpraySoon:Schedule(35)
timerWebSpray:Start()
end
end
57 changes: 57 additions & 0 deletions DBM-VanillaNaxx/ConstructQuarter/Gluth.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
local mod = DBM:NewMod("Gluth-Vanilla", "DBM-VanillaNaxx", 2)
local L = mod:GetLocalizedStrings()

mod:SetRevision("20240701222429")
mod:SetCreatureID(15932)

mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 28371",
"SPELL_AURA_REMOVED 28371",
"SPELL_DAMAGE 28375 54426"
)

--TODO, is it really necessary to use SPELL_DAMAGE here?
--TODO, verify decimate timer is actually accurate for wrath (it certainly wasn't for naxx 40)
local warnEnrage = mod:NewTargetNoFilterAnnounce(19451, 3, nil , "Healer|Tank|RemoveEnrage", 2)
local warnDecimateSoon = mod:NewSoonAnnounce(28374, 2)
local warnDecimateNow = mod:NewSpellAnnounce(28374, 3)

local specWarnEnrage = mod:NewSpecialWarningDispel(19451, "RemoveEnrage", nil, nil, 1, 6)

local timerEnrage = mod:NewBuffActiveTimer(8, 19451, nil, nil, nil, 5, nil, DBM_COMMON_L.ENRAGE_ICON)
local timerDecimate = mod:NewCDTimer(104, 28374, nil, nil, nil, 2)
local enrageTimer = mod:NewBerserkTimer(420)

function mod:OnCombatStart(delay)
enrageTimer:Start(420 - delay)
timerDecimate:Start(110 - delay) -- 25m Log review from 2022-05-05 - 1 minutes 50 seconds
warnDecimateSoon:Schedule(100 - delay)
end

function mod:SPELL_AURA_APPLIED(args)
if args.spellId == 28371 then
if self.Options.SpecWarn19451dispel then
specWarnEnrage:Show(args.destName)
specWarnEnrage:Play("enrage")
else
warnEnrage:Show(args.destName)
end
timerEnrage:Start()
end
end

function mod:SPELL_AURA_REMOVED(args)
if args.spellId == 28371 then
timerEnrage:Stop()
end
end

function mod:SPELL_DAMAGE(_, _, _, _, _, _, spellId)
if (spellId == 28375 or spellId == 54426) and self:AntiSpam(20) then
warnDecimateNow:Show()
timerDecimate:Start()
warnDecimateSoon:Schedule(96)
end
end
106 changes: 106 additions & 0 deletions DBM-VanillaNaxx/ConstructQuarter/Grobbulus.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
local mod = DBM:NewMod("Grobbulus-Vanilla", "DBM-VanillaNaxx", 2)
local L = mod:GetLocalizedStrings()

mod:SetRevision("20240701222429")
mod:SetCreatureID(15931)
mod:SetUsedIcons(1, 2, 3, 4)

mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 28169",
"SPELL_AURA_REMOVED 28169",
"SPELL_CAST_SUCCESS 28240 28157 54364"
)

local warnInjection = mod:NewTargetNoFilterAnnounce(28169, 2)
local warnCloud = mod:NewSpellAnnounce(28240, 2)
local warnSlimeSprayNow = mod:NewSpellAnnounce(54364, 2)
local warnSlimeSpraySoon = mod:NewSoonAnnounce(54364, 1)

local specWarnInjection = mod:NewSpecialWarningYou(28169, nil, nil, nil, 1, 2)
local yellInjection = mod:NewYellMe(28169, nil, false)

local timerInjection = mod:NewTargetTimer(10, 28169, nil, nil, nil, 3)
local timerCloud = mod:NewNextTimer(15, 28240, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerSlimeSprayCD = mod:NewCDTimer(32, 54364, nil, nil, nil, 2) -- Transcriptor snippet below
local enrageTimer = mod:NewBerserkTimer(720)

mod:AddSetIconOption("SetIconOnInjectionTarget", 28169, false, false, {1, 2, 3, 4})

mod.vb.slimeSprays = 1
local mutateIcons = {}

local function addIcon(self)
for i,j in ipairs(mutateIcons) do
local icon = 0 + i
self:SetIcon(j, icon)
end
end

local function removeIcon(self, target)
for i,j in ipairs(mutateIcons) do
if j == target then
table.remove(mutateIcons, i)
self:SetIcon(target, 0)
end
end
addIcon(self)
end

function mod:OnCombatStart(delay)
self.vb.slimeSprays = 1
table.wipe(mutateIcons)
enrageTimer:Start(-delay)
warnSlimeSpraySoon:Schedule(27)
timerSlimeSprayCD:Start(31) -- REVIEW! variance? (25man Lordaeron 2022/10/16) - 31.0
end

function mod:OnCombatEnd()
for _, j in ipairs(mutateIcons) do
self:SetIcon(j, 0)
end
end

function mod:SPELL_AURA_APPLIED(args)
if args.spellId == 28169 then
warnInjection:Show(args.destName)
timerInjection:Start(args.destName)
if args:IsPlayer() then
specWarnInjection:Show()
specWarnInjection:Play("runout")
yellInjection:Yell()
end
if self.Options.SetIconOnInjectionTarget then
table.insert(mutateIcons, args.destName)
addIcon(self)
end
end
end

function mod:SPELL_AURA_REMOVED(args)
if args.spellId == 28169 then
timerInjection:Cancel(args.destName)--Cancel timer if someone is dumb and dispels it.
if self.Options.SetIconOnInjectionTarget then
removeIcon(self, args.destName)
end
end
end

function mod:SPELL_CAST_SUCCESS(args)
if args.spellId == 28240 then
warnCloud:Show()
timerCloud:Start()
elseif args:IsSpellID(28157, 54364) then
warnSlimeSprayNow:Show()
self.vb.slimeSprays = self.vb.slimeSprays + 1
-- REVIEW! variance? (25man Lordaeron 2022/10/16) - pull:31.0, 27.7, 61.1, 25.5
if self.vb.slimeSprays % 2 == 0 then -- every 2/4/6... spray short cd
warnSlimeSpraySoon:Schedule(20.5)
timerSlimeSprayCD:Start(25.5)
else -- every 3/5/7... spray long cd
warnSlimeSpraySoon:Schedule(54)
timerSlimeSprayCD:Start(59)
end
end
end
Loading

0 comments on commit 0ccb47a

Please sign in to comment.