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()