All pastes #87798 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-07-14 06:03 UTC
rendered paste body
local bboss = BabbleLib:GetInstance("Boss 1.2")
local metro = Metrognome:GetInstance("1")

BigWigsRazuvious = AceAddon:new({
	name          = "BigWigsRazuvious",
	cmd           = AceChatCmd:new({}, {}),

	zonename 		= BabbleLib:GetInstance("Zone 1.2")("Naxxramas"),
	enabletrigger 	= bboss("Instructor Razuvious"),
	bossname 		= bboss("Instructor Razuvious"),

	toggleoptions = {
		notShoutWarn 		= "Warn when Razuvious uses Disrupting Shout",
		notShoutBar 		= "Show the Time Bar for Disrupting Shout",
		notBosskill 		= "Boss death",
	},
	optionorder = {"notShoutWarn", "notShoutBar", "notBosskill"},
	
	loc = {
		disabletrigger 	= "Instructor Razuvious dies.",		
		bosskill 		= "Razuvious has been defeated!",
		
		startwarn 		= "Instructor Razuvious engaged!, ~25secs until shout!",
	
		starttrigger1 	= "The time for practice is over! Show me what you have learned!",
		starttrigger2 	= "Sweep the leg... Do you have a problem with that?",
		starttrigger3 	= "Show them no mercy!",
		starttrigger4 	= "Do as I taught you!",

		shouttrigger 	= "Instructor Razuvious's Disrupting Shout hits (.+) for (.+)",
		shout7secwarn 	= "7 seconds until Disrupting Shout",
		shout3secwarn 	= "3 seconds until Disrupting Shout",
		shoutwarn 		= "Disrupting Shout!",
		noshoutwarn		= "No shout! next in ~20secs",
		shoutbar 		= "Disrupting Shout",
	},
	timeShout = 30
})

function BigWigsRazuvious:Initialize()
	self.disabled = true
	self:TriggerEvent("BIGWIGS_REGISTER_MODULE", self)
end

function BigWigsRazuvious:Enable()
	self.disabled = nil
	self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH")
	self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
	self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", "Shout")
	self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE", "Shout")
	self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE", "Shout")
	self:RegisterEvent("PLAYER_REGEN_ENABLED")
	self:RegisterEvent("BIGWIGS_MESSAGE")
	self:RegisterEvent("BIGWIGS_SYNC_SHOUTWARN")
	self:RegisterEvent("BIGWIGS_SYNC_NOSHOUT")
	self:TriggerEvent("BIGWIGS_SYNC_THROTTLE", "SHOUTWARN", 5)
	self:TriggerEvent("BIGWIGS_SYNC_THROTTLE", "NOSHOUT", 5)
	metro:Register("BigWigs_Razuvious_CheckWipe", self.PLAYER_REGEN_ENABLED, 2, self)
	metro:Unregister("BigWigs Razuvious Shout")
	metro:Register("BigWigs Razuvious Shout", self.noShout, self.timeShout, self )
end

function BigWigsRazuvious:Disable()
	self.disabled = true
	metro:Unregister("BigWigs Razuvious Shout")
	metro:Unregister("BigWigs_Razuvious_CheckWipe")
	self:UnregisterAllEvents()
	self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.shoutbar)
	self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.shout7secwarn)
	self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.shout3secwarn)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.shoutbar, 5)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.shoutbar, 10)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.shoutbar, 13)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.shoutbar, 18)
	self.prior = nil
end

function BigWigsRazuvious: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 BigWigsRazuvious:BIGWIGS_SYNC_SHOUTWARN()
	if (not self:GetOpt("notShoutWarn")) then
		self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.shoutwarn, "Orange", nil, "Alarm")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.shout7secwarn, 18, "Yellow", nil, "Alert")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.shout3secwarn, 22, "Red", nil, "Alert")
	end
	if (not self:GetOpt("notShoutBar")) then
		self:TriggerEvent("BIGWIGS_BAR_START", self.loc.shoutbar, 25, 1, "Yellow", "Interface\\Icons\\Ability_Warrior_WarCry")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.shoutbar, 10, "Orange")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.shoutbar, 18, "Red")
	end
	self.prior = true
end 

function BigWigsRazuvious:BIGWIGS_SYNC_NOSHOUT()
	if (not self:GetOpt("notShoutWarn")) then
		self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.noshoutwarn, "Yellow")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.shout7secwarn, 13, "Yellow", nil, "Alert")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.shout3secwarn, 17, "Red", nil, "Alert")
	end
	if (not self:GetOpt("notShoutBar")) then
		self:TriggerEvent("BIGWIGS_BAR_START", self.loc.shoutbar, 20, 1, "Yellow", "Interface\\Icons\\Ability_Warrior_WarCry")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.shoutbar, 5, "Orange")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.shoutbar, 13, "Red")
	end	
end

function BigWigsRazuvious:noShout()	
	metro:Stop("BigWigs Razuvious Shout")
	metro:Start("BigWigs Razuvious Shout")
	self:TriggerEvent("BIGWIGS_SYNC_SEND", "NOSHOUT")
end

function BigWigsRazuvious:Shout()
	if (string.find(arg1, self.loc.shouttrigger) and not self.prior) then
		self:TriggerEvent("BIGWIGS_SYNC_SEND", "SHOUTWARN")
		metro:Stop("BigWigs Razuvious Shout")
		metro:Start("BigWigs Razuvious Shout")
	end
end

function BigWigsRazuvious:CHAT_MSG_MONSTER_YELL()
	if (arg1 == self.loc.starttrigger1 or arg1 == self.loc.starttrigger2 or arg1 == self.loc.starttrigger3 or arg1 == self.loc.starttrigger4) then
		if (not self:GetOpt("notShoutWarn")) then 
			self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.startwarn, "Orange", nil, "Alarm") 
			self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.shout7secwarn, 18, "Yellow", nil, "Alert") 
			self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.shout2secwarn, 22, "Red", nil, "Alert")
		end
		if (not self:GetOpt("notShoutBar")) then 
			self:TriggerEvent("BIGWIGS_BAR_START", self.loc.shoutbar, 25, 1, "Yellow", "Interface\\Icons\\Ability_Warrior_WarCry")
			self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.shoutbar, 10, "Orange")
			self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.shoutbar, 18, "Red")
		end
	metro:Start("BigWigs Razuvious Shout")
	end
end

function BigWigsRazuvious:PLAYER_REGEN_ENABLED()
	local go = self:Scan()
	local _,_,running,_ = metro:Status("BigWigs_Razuvious_CheckWipe")
	if (not go) then
		metro:Stop("BigWigs Razuvious Shout")
		metro:Stop("BigWigs_Razuvious_CheckWipe")
	elseif (not running) then
		metro:Start("BigWigs_Razuvious_CheckWipe")
	end
end

function BigWigsRazuvious: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 BigWigsRazuvious:BIGWIGS_MESSAGE(text)
	if text == self.loc.shout7secwarn then self.prior = nil end
end
--------------------------------
--      Load this bitch!      --
--------------------------------
BigWigsRazuvious:RegisterForLoad()