Skip to content

Commit

Permalink
Preliminary pass and fixups for floodgate bosses
Browse files Browse the repository at this point in the history
  • Loading branch information
MysticalOS committed Jan 9, 2025
1 parent 56f219d commit 86529d3
Show file tree
Hide file tree
Showing 6 changed files with 128 additions and 100 deletions.
52 changes: 36 additions & 16 deletions DBM-Party-WarWithin/OperationFloodgate/BigMomma.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ local L = mod:GetLocalizedStrings()
mod:SetRevision("@file-date-integer@")
mod:SetCreatureID(226398)
mod:SetEncounterID(3020)
mod:SetUsedIcons(8, 7, 6, 5)
--mod:SetHotfixNoticeRev(20240817000000)
--mod:SetMinSyncRevision(20240817000000)
mod:SetZone(2773)
Expand All @@ -16,6 +17,7 @@ mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 460156 471585 472452 460075 1214780 473351 473220 469981",
-- "SPELL_CAST_SUCCESS",
"SPELL_SUMMON 471595",
"SPELL_AURA_APPLIED 473354 469981",
"SPELL_AURA_REMOVED 460156 469981",
-- "SPELL_AURA_REMOVED"
Expand All @@ -25,8 +27,6 @@ mod:RegisterEventsInCombat(
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
)

--TODO, add auto marking of mobs with https://www.wowhead.com/ptr-2/spell=471595/mobilize-mechadrones if it's logged (and if auto marking is even possible in 11.1)
--TODO, verify target scanning for Doom Storm
--TODO, finetune scoping of interrupt on whether or not cooldown should be checked
--TODO, add interrupt nameplate timer if it actually has a cooldown (and not spam cast)
--TODO, add custom audio for sonic boom that says "get behind objectname"
Expand All @@ -46,14 +46,17 @@ local yellSonicBoom = mod:NewShortYell(473220)
local specWarnbarrier = mod:NewSpecialWarningCount(469981, nil, nil, nil, 1, 2)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8)

local timerJumpStartCD = mod:NewAITimer(33.9, 460156, nil, nil, nil, 6)
local timerMobilizeMechadronesCD = mod:NewAITimer(33.9, 471585, nil, nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON)
--local timerDoomStormCD = mod:NewCDNPTimer(33.9, 472452, nil, nil, nil, 3)
local timerElectrocrushCD = mod:NewAITimer(33.9, 473351, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerSonicBoomCD = mod:NewAITimer(33.9, 473220, nil, nil, nil, 3)
local timerBarrierCD = mod:NewAITimer(33.9, 469981, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON)

mod:AddInfoFrameOption(469981, true)
mod:AddSetIconOption("SetIconOnMechs", 471585, true, 5, {8, 7, 6, 5})

mod.vb.addIcon = 8
mod.vb.jumpStartCount = 0
mod.vb.mechCount = 0
mod.vb.electroCount = 0
Expand All @@ -71,16 +74,28 @@ function mod:DoomStormTarget(targetname)
end
end

function mod:SonicBoomTarget(targetname)
if not targetname then return end
if targetname == UnitName("player") then
specWarnSonicBoom:Show()
specWarnSonicBoom:Play("runout")
yellSonicBoom:Yell()
else
warnSonicBoom:Show(targetname)
end
end

function mod:OnCombatStart(delay)
table.wipe(castsPerGUID)
self.vb.jumpStartCount = 0
self.vb.mechCount = 0
self.vb.electroCount = 0
self.vb.sonicCount = 0
self.vb.barrierCount = 0
timerMobilizeMechadronesCD:Start(1-delay)
timerElectrocrushCD:Start(1-delay)
timerSonicBoomCD:Start(1-delay)
timerElectrocrushCD:Start(1-delay)--6.1, 43.7
timerSonicBoomCD:Start(1-delay)--15.8
timerJumpStartCD:Start(1-delay)--26.5
timerMobilizeMechadronesCD:Start(1-delay)--40.5
timerBarrierCD:Start(1-delay)
end

Expand All @@ -102,11 +117,12 @@ function mod:SPELL_CAST_START(args)
timerBarrierCD:Stop()
elseif spellId == 471585 then
self.vb.mechCount = self.vb.mechCount + 1
self.vb.addIcon = 8
specWarnMobilizeMechadrones:Show(self.vb.mechCount)
specWarnMobilizeMechadrones:Play("killbigmob")
timerMobilizeMechadronesCD:Start()
elseif spellId == 472452 or spellId == 460075 then
self:ScheduleMethod(0.2, "BossTargetScanner", args.sourceGUID, "DoomStormTarget", 0.1, 8, true)
elseif spellId == 472452 or spellId == 460075 then--472452 confirmed on follower, 460075 unknown
self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "DoomStormTarget", 0.1, 8, true)
elseif spellId == 1214780 then
if not castsPerGUID[args.sourceGUID] then
castsPerGUID[args.sourceGUID] = 0
Expand Down Expand Up @@ -139,6 +155,7 @@ function mod:SPELL_CAST_START(args)
elseif spellId == 473220 then
self.vb.sonicCount = self.vb.sonicCount + 1
timerSonicBoomCD:Start()
self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "SonicBoomTarget", 0.1, 8, true)
elseif spellId == 469981 then
self.vb.barrierCount = self.vb.barrierCount + 1
specWarnbarrier:Show(self.vb.barrierCount)
Expand All @@ -157,17 +174,19 @@ function mod:SPELL_CAST_SUCCESS(args)
end
--]]

function mod:SPELL_AURA_APPLIED(args)
function mod:SPELL_SUMMON(args)
local spellId = args.spellId
if spellId == 473354 then
if args:IsPlayer() then
specWarnSonicBoom:Show()
specWarnSonicBoom:Play("runout")
yellSonicBoom:Yell()
else
warnSonicBoom:Show(args.destName)
if spellId == 471595 then
if self.Options.SetIconOnMechs then
self:ScanForMobs(args.destGUID, 2, self.vb.addIcon, 1, nil, 12, "SetIconOnMechs")
end
elseif spellId == 469981 then
self.vb.addIcon = self.vb.addIcon - 1
end
end

function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 469981 then
if self.Options.InfoFrame then
DBM.InfoFrame:SetHeader(args.spellName)
DBM.InfoFrame:Show(2, "enemyabsorb", nil, UnitGetTotalAbsorbs("boss1"))
Expand All @@ -182,6 +201,7 @@ function mod:SPELL_AURA_REMOVED(args)
if spellId == 460156 then
warnJumpStartOver:Show()
--restart Timers
timerJumpStartCD:Start(2)
timerMobilizeMechadronesCD:Start(2)
timerElectrocrushCD:Start(2)
timerSonicBoomCD:Start(2)
Expand Down
60 changes: 31 additions & 29 deletions DBM-Party-WarWithin/OperationFloodgate/DemolitionDuo.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ mod.sendMainBossGUID = true
mod:RegisterCombat("combat")

mod:RegisterEventsInCombat(
"SPELL_CAST_START 460867 1217653 473690 459799",
"SPELL_CAST_SUCCESS 470022",
"SPELL_SUMMON 473524 460781",
"SPELL_CAST_START 460867 1217653 473690 459799 459779",
-- "SPELL_CAST_SUCCESS",
-- "SPELL_SUMMON 473524 460781",
"SPELL_AURA_APPLIED 473713 470022",
"SPELL_AURA_REMOVED 470022",
-- "SPELL_PERIODIC_DAMAGE",
Expand All @@ -25,28 +25,24 @@ mod:RegisterEventsInCombat(
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
)

--TODO, auto mark bombs if auto marking is still even possible in 11.1
--TODO, verify and fix explosion tracker with correct bomb spawn/removal events (possibly https://www.wowhead.com/ptr-2/spell=472755/shrapnel that instead)
--TODO, see if you can get BBBFG target. based on datamining it seems no
--TODO, DO NOT FORGET to add the count to common local for BBBFG
--TODO, add https://www.wowhead.com/ptr-2/spell=460602/quick-shot
--TODO, optimize charge as needed
--TODO, get creatureIds for bosseds so second half of mod can be coded
--TODO, support nameplate timers when creatureIds known
--General
--local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8)
--Keeza Quickfuse
mod:AddTimerLine(DBM:EJ_GetSectionInfo(30321))
--TODO, evertthing
local warnBombs = mod:NewCountAnnounce(460867, 3, nil, nil, 167180)
local warnBigBadaBoom = mod:NewCountAnnounce(460867, 3, nil, nil, 167180)
local warnExplosiveGel = mod:NewTargetNoFilterAnnounce(473690, 2, nil, "RemoveMagic", DBM_COMMON_L.KNOCKUP)

local specWarnBBBFG = mod:NewSpecialWarningDodgeCount(1217653, nil, nil, DBM_COMMON_L.FRONTAL, 2, 15)
local specWarnExplosiveGel = mod:NewSpecialWarningYou(473690, nil, nil, DBM_COMMON_L.KNOCKUP, 1, 2)
local yellExplosiveGel = mod:NewShortYell(473690, DBM_COMMON_L.KNOCKUP)

local timerBombsCD = mod:NewAITimer(33.9, 460867, 167180, nil, nil, 5)--Short text "Bombs"
local timerBombsExplode = mod:NewCastTimer(30, 460787, 167180, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
local timerBigBadaBoomCD = mod:NewAITimer(33.9, 460867, 167180, nil, nil, 5)--Short text "Bombs"
--local timerBombsExplode = mod:NewCastTimer(30, 460787, 167180, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
local timerBBBFG = mod:NewAITimer(5, 1217653, DBM_COMMON_L.FRONTAL, nil, nil, 3)--.." (%s)"
local timerExplosiveGelCD = mod:NewAITimer(33.9, 473690, DBM_COMMON_L.KNOCKUP, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON..DBM_COMMON_L.MYTHIC_ICON)
--Bront
Expand All @@ -62,7 +58,7 @@ local yellWallop = mod:NewShortYell(459799)
local timerChargeCD = mod:NewAITimer(33.9, 470022, nil, nil, nil, 3)
local timerWallopCD = mod:NewAITimer(33.9, 459799, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)

mod.vb.bombCount = 0
--mod.vb.bombCount = 0
mod.vb.bombCastCount = 0
mod.vb.bbbfgCount = 0
mod.vb.knockCount = 0
Expand All @@ -71,18 +67,18 @@ mod.vb.wallopCount = 0
mod.vb.keezaDead = false

function mod:OnCombatStart(delay)
self.vb.bombCount = 0
--self.vb.bombCount = 0
self.vb.bombCastCount = 0
self.vb.bbbfgCount = 0
self.vb.knockCount = 0
self.vb.chargeCount = 0
self.vb.wallopCount = 0
self.vb.keezaDead = false
timerBombsCD:Start(1-delay)
timerBBBFG:Start(1-delay)
timerBigBadaBoomCD:Start(1-delay)--13.9
timerBBBFG:Start(1-delay)--6.5, 17.1
timerExplosiveGelCD:Start(1-delay)
timerChargeCD:Start(1-delay)
timerWallopCD:Start(1-delay)
timerChargeCD:Start(1-delay)--22.7, 4.8, 5.8
timerWallopCD:Start(1-delay)--5.7, 35.2, 17.0, 17.0
end

--function mod:OnCombatEnd()
Expand All @@ -93,8 +89,8 @@ function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 460867 then
self.vb.bombCastCount = self.vb.bombCastCount + 1
warnBombs:Show(self.vb.bombCastCount)
timerBombsCD:Start()--nil, self.vb.bombCastCount+1
warnBigBadaBoom:Show(self.vb.bombCastCount)
timerBigBadaBoomCD:Start()--nil, self.vb.bombCastCount+1
elseif spellId == 1217653 then
self.vb.bbbfgCount = self.vb.bbbfgCount + 1
specWarnBBBFG:Show(self.vb.bbbfgCount)
Expand All @@ -105,23 +101,28 @@ function mod:SPELL_CAST_START(args)
timerExplosiveGelCD:Start()--nil, self.vb.knockCount+1
elseif spellId == 459799 then
self.vb.wallopCount = self.vb.wallopCount + 1
timerWallopCD:Start()--nil, self.vb.wallopCount+1
timerWallopCD:Start(self.vb.keezaDead and 17 or 35)--nil, self.vb.wallopCount+1
if self:IsTanking("player", "boss1", nil, true) then
specWarnWallop:Show()
specWarnWallop:Play("defensive")
yellWallop:Yell()
end
elseif spellId == 459779 then
self.vb.chargeCount = self.vb.chargeCount + 1
timerChargeCD:Start()--nil, self.vb.chargeCount+1
end
end

--[[
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 470022 then
self.vb.chargeCount = self.vb.chargeCount + 1
timerChargeCD:Start()--nil, self.vb.chargeCount+1
if spellId == 459779 then
end
end
--]]

--[[
function mod:SPELL_SUMMON(args)
local spellId = args.spellId
if spellId == 473524 or spellId == 460781 then
Expand All @@ -131,6 +132,7 @@ function mod:SPELL_SUMMON(args)
end
end
end
--]]

function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
Expand Down Expand Up @@ -176,19 +178,19 @@ mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE

function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 234528 or cid == 237446 then
self.vb.bombCount = self.vb.bombCount - 1
if self.vb.bombCount == 0 then
timerBombsExplode:Start()
end
elseif cid == 226403 then--Keeza
if cid == 226403 then--Keeza
self.vb.keezaDead = true
timerBombsCD:Stop()
timerBigBadaBoomCD:Stop()
timerBBBFG:Stop()
timerExplosiveGelCD:Stop()
elseif cid == 226402 then--Bront
timerChargeCD:Stop()
timerWallopCD:Stop()
--elseif cid == 234528 or cid == 237446 then
-- self.vb.bombCount = self.vb.bombCount - 1
-- if self.vb.bombCount == 0 then
-- timerBombsExplode:Stop()
-- end
end
end

Expand Down
30 changes: 17 additions & 13 deletions DBM-Party-WarWithin/OperationFloodgate/GeezNuts.lua
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,18 @@ mod:RegisterEventsInCombat(
)

--TODO, improve timer handling around boss energy and Turbo Charge
--TODO, find right spell trigger for Dam!
--NOTE, Leaping Sparks script does NOT have block for target scanning, so if they private debuff, we can still see target anyways
--NOTE: target scanning possible on Gigazap private aura but will likely get fixed later
--NOTE, https://www.wowhead.com/ptr-2/spell=468844/leaping-spark summons the spark
--TODO, record new audio if "move to pool" causes lack of clarity to specifically say "move spark to pool"
--TODO, verify cast ID for starting Gigazap Timer
local warnTurboChargeOver = mod:NewEndAnnounce(465463, 1)
local warnDam = mod:NewCountAnnounce(468276, 2)
local warnShockWaterStun = mod:NewTargetNoFilterAnnounce(468741, 2)
local warnLeapingSpark = mod:NewTargetNoFilterAnnounce(468841, 2)
local warnGigaZapLater = mod:NewTargetNoFilterAnnounce(468813, 3, nil, "Healer")--Pre target is private aura, but dot is not, we can still warn the healer who has dots
local warnGigaZapLater = mod:NewTargetNoFilterAnnounce(468815, 3, nil, "Healer")--Pre target is private aura, but dot is not, we can still warn the healer who has dots

local specWarnTurboCharge = mod:NewSpecialWarningDodgeCount(465463, nil, nil, nil, 2, 2)
local specWarnLeapingSpark = mod:NewSpecialWarningRun(468841, nil, nil, nil, 4, 15)
local specWarnLeapingSpark = mod:NewSpecialWarningRun(468841, nil, nil, nil, 4, 18)
local yellLeapingSpark = mod:NewShortYell(468841)
local specWarnThunderPunch = mod:NewSpecialWarningDefensive(466190, nil, nil, nil, 1, 2)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8)
Expand All @@ -62,11 +61,11 @@ function mod:OnCombatStart(delay)
self.vb.sparksCount = 0
self.vb.gigaZapCount = 0
self.vb.punchCount = 0
timerTurboChargeCD:Start(1-delay)
timerDamCD:Start(1-delay)
timerLeapingSparksCD:Start(1-delay)
timerGigazapCD:Start(1-delay)
timerThunderPunchCD:Start(1-delay)
timerTurboChargeCD:Start(1-delay)--1.6, 60.0
timerDamCD:Start(1-delay)--16.0
timerLeapingSparksCD:Start(1-delay)--38.1
timerGigazapCD:Start(1-delay)--28.0, 26.0
timerThunderPunchCD:Start(1-delay)--24.0, 26.0
self:EnablePrivateAuraSound(468811, "defensive", 2)
end

Expand All @@ -79,14 +78,17 @@ function mod:SPELL_CAST_START(args)
if spellId == 465463 then
self.vb.turboChargeCount = self.vb.turboChargeCount + 1
specWarnTurboCharge:Show(self.vb.turboChargeCount)
specWarnTurboCharge:Play("watchstep")
specWarnTurboCharge:Play("farfromline")
timerTurboChargeCD:Start()
elseif spellId == 468841 then
self.vb.sparksCount = self.vb.sparksCount + 1
timerLeapingSparksCD:Start()
elseif spellId == 468813 then
self.vb.gigaZapCount = self.vb.gigaZapCount + 1
timerGigazapCD:Start()
--"<35.71 21:43:09> [CLEU] SPELL_CAST_START#Creature-0-5769-2773-2529-226404-00007DDBE7#Geezle Gigazap(54.3%-90.0%)##nil#468813#Gigazap#nil#nil#nil#nil#nil#nil",
--"<35.84 21:43:10> [UNIT_TARGET] boss1#Geezle Gigazap#Target: Crenna Earth-Daughter#TargetOfTarget: Omegal",
--"<38.74 21:43:12> [CLEU] SPELL_AURA_APPLIED#Creature-0-5769-2773-2529-226404-00007DDBE7#Geezle Gigazap#Vehicle-0-5769-2773-2529-209072-00007DDBF6#Crenna Earth-Daughter#468815#Gigazap#DEBUFF#nil#nil#nil#nil#nil",
elseif spellId == 466190 then
self.vb.punchCount = self.vb.punchCount + 1
if self:IsTanking("player", "boss1", nil, true) then
Expand All @@ -110,10 +112,10 @@ function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 468741 and args:IsPlayer() or self:IsHealer() then
warnShockWaterStun:CombinedShow(0.3, args.destName)
elseif spellId == 468616 then
elseif spellId == 468616 and args:IsDestTypePlayer() then
if args:IsPlayer() then
specWarnLeapingSpark:Show()
specWarnLeapingSpark:Play("movetopool")
specWarnLeapingSpark:Play("sparktowater")
yellLeapingSpark:Yell()
else
warnLeapingSpark:Show(args.destName)
Expand Down Expand Up @@ -150,8 +152,10 @@ function mod:UNIT_DIED(args)
end
--]]

--TODO, timers for shockwater?
--"Shock Water-468723-npc:226404-00007DDBE7 = pull:25.6, 15.5",
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 468276 and self:AntiSpam(8, 1) then
if spellId == 468276 then
self.vb.damCount = self.vb.damCount + 1
warnDam:Show(self.vb.damCount)
timerDamCD:Start()
Expand Down
Loading

0 comments on commit 86529d3

Please sign in to comment.