Files
coa-dbm/DBM-ZulAman/Malacrass.lua
T
Szyler dc8afd6584 5.19b (#4)
Co-authored-by: Szyler <Szyler@Szyler.com>
2024-03-03 11:23:13 -07:00

255 lines
11 KiB
Lua

local mod = DBM:NewMod("Malacrass", "DBM-ZulAman")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 5015 $"):sub(12, -3))
mod:SetCreatureID(24239)
mod:RegisterCombat("combat_yell", L.YellPull)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS"
-- ,"SPELL_SUMMON"
)
--TODO, GTFO for standing in shit
local warnSiphon = mod:NewTargetAnnounce(2136107, 3) --2136107,
local warnBoltSoon = mod:NewPreWarnAnnounce(2136100, 5, 3) --2136100, 2136101, 2136102, 2136103, 2136104
local warnHeal1 = mod:NewCastAnnounce(2136150, 3)
local warnHeal2 = mod:NewCastAnnounce(2136156, 3)
local warnHeal3 = mod:NewCastAnnounce(43431, 3)
local warnHeal4 = mod:NewTargetAnnounce(43421, 3)
local warnPatch = mod:NewSpellAnnounce(43429, 3)
local specWarnBolt = mod:NewSpecialWarningSpell(2136100)
local specWarnHeal = mod:NewSpecialWarning("Interrupt Heal!")--#NewInterruptAnnounce(43548)
-- local specWarnBlindingLight = mod:NewSpecialWarning("Look Away!") -- It's a LOS mechanic
-- local specWarnHeal2 = mod:NewSpecialWarning("Interrupt Heal!")--mod:NewInterruptAnnounce(43451)
-- local specWarnHeal3 = mod:NewSpecialWarning("Interrupt Heal!")--mod:NewInterruptAnnounce(43431)
-- local specWarnHeal4 = mod:NewSpecialWarning("Dispel!")--mod:NewSpecialWarningDispel(43421)
-- local specWarnTotem = mod:NewSpecialWarning("Switch targets!")--mod:NewSpecialWarningSwitch(43436)
local timerSiphon = mod:NewTargetTimer(30, 2136107)
local timerNextBolt = mod:NewNextTimer(50, 2136100)
local timerBolt = mod:NewCastTimer(10, 2136100)
local timerPatch = mod:NewCastTimer(20, 43429)
local timerNextDrain = mod:NewNextTimer(60, 2136100)
local warnDruidSoul = mod:NewSpecialWarning("Druid Soul Absorbed")
local timerNextUrsol = mod:NewNextTimer(5, 2136123)
local timerNextSolar = mod:NewNextTimer(15, 2136125)
local timerNextTranquility = mod:NewNextTimer(25, 2136126)
local timerCastTranquility = mod:NewCastTimer(10, 2136126)
local warnHunterSoul = mod:NewSpecialWarning("Hunter Soul Absorbed")
local timerNextMultiShot = mod:NewNextTimer(5, 2136127)
local timerNextFeign = mod:NewNextTimer(15, 2136128)
local timerNextExplosiveTrap = mod:NewNextTimer(20, 2136131) --2136129, 2136130, 2136131, 2136132, 2136133, 2136134
local timerNextBestialWrath = mod:NewNextTimer(25, 2136135) --2136135
local timerBestialWrath = mod:NewTargetTimer(10, 2136135)
local warnMageSoul = mod:NewSpecialWarning("Mage Soul Absorbed")
local timerNextRuneOfPower = mod:NewNextTimer(5, 2136136) --2136136
local timerRuneOfPower = mod:NewTargetTimer(6, 2136136) --2136136
local timerRuneOfPowerduration = mod:NewTimer(10, "Rune of Power duration", 2136136)
local timerNextBlizzard = mod:NewNextTimer(15, 2136137) --2136137, 2136138, 2136139, 2136140
local timerNextLivingBomb = mod:NewNextTimer(25, 2136141) --Dot: 2136141, 2136142, 2136143, 2136144, Explosion damage: 2136145, 2136146, 2136147, 2136148
local timerLivingBomb = mod:NewTargetTimer(12, 2136141) --2136141
local warnYouLivingBomb = mod:NewSpecialWarningYou(2136141) --2136141
local warnPaladinSoul = mod:NewSpecialWarning("Paladin Soul Absorbed")
local timerNextBlindingLight = mod:NewNextTimer(5, 2136155)
local timerCastBlindingLight = mod:NewCastTimer(2, 2136155)
local timerNextConsecration = mod:NewNextTimer(15, 2136151) --2136151, #2136152, #2136153, #2136154
local timerNextDivineShield = mod:NewNextTimer(25, 2136149)
local timerCastHearthstone = mod:NewCastTimer(6, 2136150)
local warnPriestSoul = mod:NewSpecialWarning("Priest Soul Absorbed")
local timerNextDivinePrayer = mod:NewNextTimer(5, 2136156)
local timerCastDivinePrayer = mod:NewCastTimer(4, 2136156)
local timerNextDomination = mod:NewNextTimer(15, 2136157) --2136157, 2136158
local timerNextManaBurn = mod:NewNextTimer(25, 2136159) --2136159, 2136160, 2136161, 2136162
local timerDomination = mod:NewTargetTimer(10, 2136157)
local warnRogueSoul = mod:NewSpecialWarning("Rogue Soul Absorbed")
local timerNextFanofKnives = mod:NewNextTimer(5, 2136164) --2136163, 2136164
local timerNextSmokeBomb = mod:NewNextTimer(15, 2136165) --2136165, 2136166
local timerNextDismantle = mod:NewNextTimer(25, 2136167)
local timerDismantle = mod:NewTargetTimer(6, 2136167)
local warnShamanSoul = mod:NewSpecialWarning("Shaman Soul Absorbed")
local timerNextEarthQuake = mod:NewNextTimer(5, 2136168) --2136168, 2136169, 2136170, 2136171
local timerNextThunderStorm = mod:NewNextTimer(15, 2136172) --2136172, 2136173, 2136174, 2136175
local timerNextChainHeal = mod:NewNextTimer(25, 2136176) --2136176
local timerCastChainHeal = mod:NewCastTimer(3, 2136176)
local warnWarlockSoul = mod:NewSpecialWarning("Warlock Soul Absorbed")
local timerNextCurseOfDoom = mod:NewNextTimer(5, 2136177) --2136177, 2136178, 2136179, 2136180
local timerCurseOfDoom = mod:NewTargetTimer(15, 2136177)
local timerNextRainofFire = mod:NewNextTimer(15, 2136186) --2136186, 2136187, 2136188, 2136189
local timerNextHellfire = mod:NewNextTimer(25, 2136181) --2136181, 2136182, 2136183, 2136184, 2136185
local specWarnRainofFire = mod:NewSpecialWarningRun(2136186)
local specWarnHellfire = mod:NewSpecialWarningRun(2136182)
local warnWarriorSoul = mod:NewSpecialWarning("Warrior Soul Absorbed")
local timerNextSpellReflect = mod:NewNextTimer(5, 2136190) --2136190
local timerNextHeroicLeap = mod:NewNextTimer(15, 2136191) --2136191, 2136192
local timerNextColossusSmash = mod:NewNextTimer(25, 2136193) --2136193
local timerColossusSmash = mod:NewTargetTimer(6, 2136193) --2136193
local timerSpellReflect = mod:NewTargetTimer(6, 2136190) --2136190
local warnDeathKnightSoul = mod:NewSpecialWarning("Death Knight Soul Absorbed")
local timerNextArmy = mod:NewNextTimer(5, 2136284)
local timerNextDnD = mod:NewNextTimer(15, 2136297)
local timerNextAbsolute = mod:NewNextTimer(25, 2136292)
local timerCastAbsolute = mod:NewCastTimer(5, 2136292)
-- local timerColossusSmash = mod:NewTargetTimer(6, 2136193) --2136193
-- local timerSpellReflect = mod:NewTargetTimer(6, 2136190) --2136190
-- Mythic/Ascended mechanics
local timerNextBloodScythe = mod:NewNextTimer(15, 2136280)
local warnBloodScythe = mod:NewSpecialWarningStack(2136280)
local timerNextSiphon = mod:NewNextTimer(85, 2136260) -- 2136260, 2136261, 2136262, 2136263
local timerNextWill = mod:NewNextTimer(15, 2107116) -- 2107116, 2107117, 2107118, 2107119
local timerNextCorrupted = mod:NewNextTimer(20, 2136242) -- 2136242, 2136243, 2136244, 2136245
function mod:OnCombatStart(delay)
timerNextBolt:Start(10)
warnBoltSoon:Schedule(5)
timerNextDrain:Start(20)
end
function mod:SPELL_AURA_APPLIED(args)
-- if args:IsSpellID(2136107) then -- This spams everyone, don't add
-- warnSiphon:Show(args.destName)
-- timerSiphon:Show(args.destName)
if args:IsSpellID(2136114) then
warnDruidSoul:Show()
timerNextUrsol:Start() -- 2136123
timerNextSolar:Start() -- 2136125
timerNextTranquility:Start() -- 2136126
elseif args:IsSpellID(2136115) then
warnHunterSoul:Show()
timerNextMultiShot:Start()
timerNextFeign:Start()
timerNextExplosiveTrap:Start()
timerNextBestialWrath:Start()
elseif args:IsSpellID(2136135) then
timerBestialWrath:Show(args.destName)
elseif args:IsSpellID(2136116) then
warnMageSoul:Show()
timerNextRuneOfPower:Start()
timerNextBlizzard:Start()
timerNextLivingBomb:Start()
elseif args:IsSpellID(2136136) and args.destName == "Malacrass" then
timerRuneOfPower:Show(args.destName)
timerRuneOfPowerduration:Start()
elseif args:IsSpellID(2136141) then
timerLivingBomb:Show(args.destName)
if args:IsPlayer() then
warnYouLivingBomb:Show()
end
elseif args:IsSpellID(2136137, 2136138, 2136139, 2136140) then
specWarnRainofFire:Show()
elseif args:IsSpellID(2136117) then
warnPaladinSoul:Show()
timerNextBlindingLight:Start()
timerNextConsecration:Start()
timerNextDivineShield:Start()
elseif args:IsSpellID(2136118) then
warnPriestSoul:Show()
timerNextDivinePrayer:Start()
timerNextDomination:Start()
timerNextManaBurn:Start()
elseif args:IsSpellID(2136157) then
timerDomination:Show()
elseif args:IsSpellID(2136119) then
warnRogueSoul:Show()
timerNextFanofKnives:Start()
timerNextSmokeBomb:Start()
timerNextDismantle:Start()
elseif args:IsSpellID(2136167) then
timerDismantle:Show(args.destName)
elseif args:IsSpellID(2136120) then
warnShamanSoul:Show()
timerNextEarthQuake:Start()
timerNextThunderStorm:Start()
timerNextChainHeal:Start()
elseif args:IsSpellID(2136121) then
warnWarlockSoul:Show()
timerNextCurseOfDoom:Start()
timerNextHellfire:Start()
timerNextRainofFire:Start()
elseif args:IsSpellID(2136177, 2136178, 2136179, 2136180) then
timerCurseOfDoom:Show(args.destName)
elseif args:IsSpellID(2136186, 2136187, 2136188, 2136189) then
specWarnRainofFire:Show()
elseif args:IsSpellID(2136182, 2136183, 2136184, 2136185) then
specWarnHellfire:Show()
elseif args:IsSpellID(2136122) then
warnWarriorSoul:Show()
timerNextSpellReflect:Start()
timerNextHeroicLeap:Start()
timerNextColossusSmash:Start()
elseif args:IsSpellID(2136190) then
timerSpellReflect:Show(args.destName)
elseif args:IsSpellID(2136193) then
timerColossusSmash:Show(args.destName)
elseif args:IsSpellID(2136283) then
warnDeathKnightSoul:Show()
timerNextArmy:Start() -- 2136284
timerNextDnD:Start() -- 2136297
timerNextAbsolute:Start() -- 2136292
elseif args:IsSpellID(2136292, 2136293, 2136294, 2136295) then
timerCastAbsolute:Start()
elseif args:IsSpellID(2136280) and (args.amount and args.amount >= 5) then
warnBloodScythe:Show()
elseif args:IsSpellID(2107116) then
timerNextWill:Show()
elseif args:IsSpellID(2136242) then
timerNextCorrupted:Show()
end
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2136150) then
timerCastHearthstone:Start()
specWarnHeal:Show()
elseif args:IsSpellID(2136156) then
timerCastDivinePrayer:Start()
specWarnHeal:Show()
elseif args:IsSpellID(2136126) then
timerCastTranquility:Start()
specWarnHeal:Show()
elseif args:IsSpellID(2136176) then
timerCastChainHeal:Start()
specWarnHeal:Show()
elseif args:IsSpellID(2136155) then
timerCastBlindingLight:Start()
-- specWarnBlindingLight:Show() -- It's a LOS mechanic
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args:IsSpellID(2136100) then --2136101, 2136102, 2136103, 2136104
specWarnBolt:Show()
warnBoltSoon:Schedule(35)
timerBolt:Start()
timerNextBolt:Start()
timerNextDrain:Schedule(10)
elseif args:IsSpellID(2136280) then
timerNextBloodScythe:Start()
elseif args:IsSpellID(2136260, 2136261, 2136262, 2136263) then
timerNextSiphon:Start() -- 2136260, 2136261, 2136262, 2136263
end
end
-- function mod:SPELL_SUMMON(args)
-- if args:IsSpellID(43436) then
-- specWarnTotem:Show()
-- end
-- end