local mod = DBM:NewMod(608, "DBM-Party-WotLK", 15, 278) local L = mod:GetLocalizedStrings() if not mod:IsClassic() then mod.statTypes = "normal,heroic,timewalker" end mod:SetRevision("20240428124541") mod:SetCreatureID(36494) mod:SetEncounterID(1999) mod:SetUsedIcons(8) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 68788", "SPELL_AURA_APPLIED 70381 68785", "SPELL_AURA_APPLIED_DOSE 68786", -- "CHAT_MSG_RAID_BOSS_EMOTE", "RAID_BOSS_WHISPER", "CHAT_MSG_ADDON" ) local warnForgeWeapon = mod:NewSpellAnnounce(68785, 2) local warnDeepFreeze = mod:NewTargetNoFilterAnnounce(70381, 2) local warnSaroniteRock = mod:NewTargetAnnounce(68789, 3) local specWarnSaroniteRock = mod:NewSpecialWarningYou(68789, nil, nil, nil, 1, 2) local yellRock = mod:NewYell(68789) local specWarnPermafrost = mod:NewSpecialWarningStack(68786, nil, 9, nil, nil, 1, 2) local timerSaroniteRockCD = mod:NewCDTimer(15.5, 68789, nil, nil, nil, 3)--15.5-20 local timerDeepFreezeCD = mod:NewCDTimer(19, 70381, nil, "Healer", 2, 5, nil, DBM_COMMON_L.HEALER_ICON) local timerDeepFreeze = mod:NewTargetTimer(14, 70381, nil, false, 3, 5) mod:AddSetIconOption("SetIconOnSaroniteRockTarget", 68789, true, 0, {8}) mod:AddBoolOption("AchievementCheck", false, "announce") mod.vb.warnedfailed = false function mod:OnCombatStart(delay) self.vb.warnedfailed = false end function mod:SPELL_CAST_START(args) if args.spellId == 68788 then timerSaroniteRockCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 70381 then -- Deep Freeze --Can be warned 2 seconds earlier using emote --For now I willn ot change it though warnDeepFreeze:Show(args.destName) timerDeepFreeze:Start(args.destName) timerDeepFreezeCD:Start() elseif spellId == 68785 then -- Forge Frostborn Mace warnForgeWeapon:Show() end end function mod:SPELL_AURA_APPLIED_DOSE(args) if args.spellId == 68786 then local amount = args.amount or 1 if amount >= 9 and args:IsPlayer() and self:AntiSpam(5) then --11 stacks is what's needed for achievement, 9 to give you time to clear/dispel specWarnPermafrost:Show(amount) specWarnPermafrost:Play("stackhigh") end if self.Options.AchievementCheck and not self.vb.warnedfailed then local channel = IsInGroup(2) and "INSTANCE_CHAT" or "PARTY" if amount == 9 or amount == 10 then SendChatMessage(L.AchievementWarning:format(args.destName, amount), channel) elseif amount > 11 then SendChatMessage(L.AchievementFailed:format(args.destName, amount), channel) self.vb.warnedfailed = true end end end end --"<125.43 21:07:21> [CHAT_MSG_RAID_BOSS_EMOTE] %s casts |cFF00AACCDeep Freeze|r at Moonianna.#Forgemaster Garfrost###Moonianna##0#0##0#870#nil#0#false#false#false#false", -- [1] --function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, npc, _, _, targetname) -- warnDeepFreeze:Show(targetname) --end function mod:RAID_BOSS_WHISPER(msg) --Commented out string check for now, since it should be the only thing on fight sending RAID_BOSS_WHISPER -- if msg == L.SaroniteRockThrow or msg:match(L.SaroniteRockThrow) then specWarnSaroniteRock:Show() specWarnSaroniteRock:Play("watchstep") yellRock:Yell() -- end end --per usual, use transcriptor message to get messages from both bigwigs and DBM, all without adding comms to this mod at all function mod:CHAT_MSG_ADDON(prefix, msg, channel, targetName) if prefix ~= "Transcriptor" then return end --Could maybe drop localized text, but it risks breaking if someone happens to be in party (in a different place and is also sending RBW syncs) if msg == L.SaroniteRockThrow or msg:find(L.SaroniteRockThrow) then targetName = Ambiguate(targetName, "none") if self:AntiSpam(5, targetName) then--Antispam sync by target name, since this doesn't use dbms built in onsync handler. local uId = DBM:GetRaidUnitId(targetName) if uId and not UnitIsUnit(uId, "player") then warnSaroniteRock:Show(targetName) end if self.Options.SetIconOnSaroniteRockTarget then self:SetIcon(targetName, 8, 5) end end end end