All pastes #79162 Raw Edit

Grobbulus by Lute

public text v1 · immutable
·published 2006-07-05 00:40 UTC
rendered paste body
local bboss = BabbleLib:GetInstance("Boss 1.2")

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

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

	toggleoptions = {
		notYouInjected = "Warn when you are injected",
		notElseInjected = "Warn when others are injected",
		notIcon = "Put a Skull icon on the person who's injected. (Requires promoted or higher)",
		notBosskill = "Boss death",
	},

	optionorder = {"notYouInjected", "notElseInjected", "notIcon", "notBosskill"},

	loc = {
		disabletrigger = "Grobbulus dies.",

		trigger1 = "^([^%s]+) ([^%s]+) afflicted by Mutating Injection",

		you = "You",
		are = "are",

		warn1 = "You are injected!",
		warn2 = " is Injected!",
		bosskill = "Grobbulus has been defeated!",
	},
})

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

function BigWigsGrobbulus:Enable()
	self.disabled = nil
	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", "Event")
	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", "Event")
	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", "Event")
	self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH")
end

function BigWigsGrobbulus:Disable()
	self.disabled = true
	self:UnregisterAllEvents()
end

function BigWigsGrobbulus: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 BigWigsGrobbulus:Event()
	local _, _, EPlayer = string.find(arg1, self.loc.trigger1)
	if (EPlayer) then
		if (EPlayer == self.loc.you and not self:GetOpt("notYouInjected")) then
			self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.warn1, "Red", true)
		elseif (not self:GetOpt("notElseInjected")) then 
			local _, _, EWho = string.find(EPlayer, self.loc.whopattern)
			self:TriggerEvent("BIGWIGS_MESSAGE", EWho .. self.loc.warn2, "Yellow")
			self:TriggerEvent("BIGWIGS_SENDTELL", EWho, self.loc.warn1)
		end

		if (not self:GetOpt("notIcon")) then
			if EPlayer == self.loc.you then
				EPlayer = UnitName('player')
			end
			for i=1,GetNumRaidMembers() do
				if UnitName("raid"..i) == Eplayer then
					SetRaidTargetIcon("raid"..i, 8)
				end
			end
		end
	end
else
	function BigWigsGrobbulus:Event()
		local _, _, EPlayer, EType = string.find(arg1, self.loc.trigger1)
		if (EPlayer and EType) then
			if (EPlayer == self.loc.you and EType == self.loc.are and not self:GetOpt("notYouInjected")) then
				self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.warn1, "Red", true)
			elseif (not self:GetOpt("notElseInjected")) then 
				self:TriggerEvent("BIGWIGS_MESSAGE", EPlayer .. self.loc.warn2, "Yellow")
				self:TriggerEvent("BIGWIGS_SENDTELL", EPlayer, self.loc.warn1)
			end

			if (not self:GetOpt("notIcon")) then
				if EPlayer == self.loc.you then
					EPlayer = UnitName('player')
				end
				for i=1, GetNumRaidMembers() do
					if UnitName("raid"..i) == EPlayer then
						SetRaidTargetIcon("raid"..i, 8)
					end
				end
			end
		end
	end
end
--------------------------------
--      Load this bitch!      --
--------------------------------
BigWigsGrobbulus:RegisterForLoad()