local Metro = Metrognome:GetInstance("1") local bboss = BabbleLib:GetInstance("Boss 1.2") BigWigsPatchwerk = AceAddon:new({ name = "BigWigsPatchwerk", cmd = AceChatCmd:new({}, {}), zonename = BabbleLib:GetInstance("Zone 1.2")("Naxxramas"), enabletrigger = bboss("Patchwerk"), bossname = bboss("Patchwerk"), toggleoptions = { notStartWarn = "Start warning", notEnrageWarn = "Warn for Berserker Enrage", notEnrageWarn2 = "Warn for Enrage at 5%", notEnrageBar = "Enrage timerbar", notEnrageSec = "Enrage x-sec warnings", notBosskill = "Boss death", }, optionorder = {"notStartWarn", "notEnrageBar", "notEnrageSec","notEnrageWarn", "notEnrageWarn2", "notBosskill"}, loc = { disabletrigger = "Patchwerk dies.", bosskill = "Patchwerk has been defeated!", enragetrigger = "goes into a berserker rage!", enragetrigger2 = "Patchwerk becomes enraged!", enragewarn = "Enrage!", enragewarn2 = "5% Enrage - Give it all you got!", starttrigger1 = "Patchwerk want to play!", starttrigger2 = "Kel'thuzad make Patchwerk his avatar of war!", startwarn = "Patchwerk Engaged! Enrage in 7 minutes!", enragebartext = "Enrage", warn1 = "Enrage in 5 minutes", warn2 = "Enrage in 3 minutes", warn3 = "Enrage in 90 seconds", warn4 = "Enrage in 60 seconds", warn5 = "Enrage in 30 seconds", warn6 = "Enrage in 10 seconds", }, }) function BigWigsPatchwerk:Initialize() self.disabled = true self:TriggerEvent("BIGWIGS_REGISTER_MODULE", self) end function BigWigsPatchwerk:Enable() self.disabled = nil self.enrageStarted = nil self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH") self:RegisterEvent("CHAT_MSG_MONSTER_YELL") self:RegisterEvent("PLAYER_REGEN_ENABLED") Metro:Register("BigWigs_Patchwerk_CheckWipe", self.PLAYER_REGEN_ENABLED, 2, self) end function BigWigsPatchwerk:Disable() self.disabled = true self:UnregisterAllEvents() self:StopEnrage() Metro:Unregister("BigWigs_Patchwerk_CheckWipe") end function BigWigsPatchwerk:CHAT_MSG_COMBAT_HOSTILE_DEATH() if (arg1 == self.loc.disabletrigger) then if (not self:GetOpt("notBosskill")) then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.bosskill, "Green", nil, "Victory") end self:Disable() end end function BigWigsPatchwerk:Scan() if (UnitName("target") == self.bossname and UnitAffectingCombat("target")) then return true elseif (UnitName("playertarget") == self.bossname and UnitAffectingCombat("playertarget")) then return true else local i for i = 1, GetNumRaidMembers(), 1 do if (UnitName("raid"..i.."target") == self.bossname and UnitAffectingCombat("raid"..i.."target")) then return true end end end return false end function BigWigsPatchwerk:CHAT_MSG_MONSTER_YELL() if arg1 == self.loc.starttrigger1 or arg1 == self.loc.starttrigger2 then if not self:GetOpt("notStartWarn") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.startwarn, "Red") end if not self:GetOpt("notEnrageBar") then self:TriggerEvent("BIGWIGS_BAR_START", self.loc.enragebartext, 420, 2, "Green", "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR", self.loc.enragebartext, 120, "Yellow") self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR", self.loc.enragebartext, 240, "Orange") self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR", self.loc.enragebartext, 360, "Red") end if not self:GetOpt("notEnrageSec") then self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn1, 120, "Green") self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn2, 240, "Yellow") self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn3, 330, "Orange") self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn4, 360, "Orange") self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn5, 390, "Red") self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn6, 410, "Red") end end end function BigWigsPatchwerk:PLAYER_REGEN_ENABLED() local go = self:Scan() local _,_,running,_ = Metro:Status("BigWigs_Patchwerk_CheckWipe") if (not go) then self:Disable() Metro:Stop("BigWigs_Patchwerk_CheckWipe") elseif (not running) then Metro:Start("BigWigs_Patchwerk_CheckWipe") end end function BigWigsPatchwerk:CHAT_MSG_MONSTER_EMOTE() if ( arg1 == self.loc.enragetrigger) then if not self:GetOpt("notEnrageWarn") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.enragewarn, "Red") end self:StopEnrage() elseif ( arg1 == self.loc.enragetrigger2) then if not self:GetOpt("notEnrageWarn2") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.enragewarn2, "Red") end end function BigWigsPatchwerk:StopEnrage() self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.enragebartext) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.warn1) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.warn2) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.warn3) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.warn4) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.warn5) self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.warn6) self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.enragebartext, 120) self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.enragebartext, 240) self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.enragebartext, 360) end -------------------------------- -- Load this bitch! -- -------------------------------- BigWigsPatchwerk:RegisterForLoad()