All pastes #88678 Raw Edit

Something

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

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

	zonename = BabbleLib:GetInstance("Zone 1.2")("Naxxramas"),
	enabletrigger = bboss("Heigan the Unclean"),
	bossname = bboss("Heigan the Unclean"),
	
	toggleoptions = {
		notStartWarn = "Start warning",
		notFirstTeleport = "Warnings of first teleport",
		notBackRoom = "Warns when incoming to the room",
		notTeleport = "Warns when go to teleport",
		notFirstTeleportBar = "First Teleport timerbar",
		notTeleportSec = "Teleport x-sec warnings",
		notBosskill = "Boss death",
	},
	optionorder = {"notStartWarn", "notFirstTeleport", "notBackRoom", "notTeleport", "notFirstTeleportBar", "notTeleportSec", "notBosskill"},

	loc = { 
		disabletrigger = "Heigan the Unclean takes his last breath.",		
		bosskill = "Heigan the Unclean has been defeated!",

		starttrigger = "You are mine now.",
		backroomtrigger = "Heigan the Unclean casts Plague Cloud.",
		teleporttrigger = "The end is upon you.",

		startwarn = "Heigan the Unclean engaged! 90 seconds till teleport",
		warn1 = "Teleport in 1 minute",
		warn2 = "Teleport in 30 seconds",
		warn3 = "Teleport in 10 seconds",
		backwarn1 = "Teleported! 40 sec till Back in room!",
		backwarn2 = "Inc to Room in 30 seconds",
		backwarn3 = "Inc to Room in 10 seconds",
		teleportwarn1 = "He's back in the room! 90 seconds till teleport",
		teleportwarn2 = "Teleport in 30 seconds",
		teleportwarn3 = "Teleport in 10 seconds",

		firstteleportbar = "First Teleport!",
		teleportbar = "Till Teleport!",
		backbar = "Till Back in room!",
	},
})

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

function BigWigsHeigan:Enable()
	self.disabled = nil
	self.enrageStarted = nil
	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS")
	self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
	self:RegisterEvent("PLAYER_REGEN_ENABLED")
	self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE")
	self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE")
	self:RegisterEvent("BIGWIGS_SYNC_TELEPORT")
	self:TriggerEvent("BIGWIGS_SYNC_THROTTLE", "TELEPORT", 10)
	self:RegisterEvent("BIGWIGS_SYNC_BACKROOM")
	self:TriggerEvent("BIGWIGS_SYNC_THROTTLE", "BACKROOM", 10)

	Metro:Register("BigWigs_Heigan_CheckWipe", self.PLAYER_REGEN_ENABLED, 2, self)
end

function BigWigsHeigan:Disable()
	self.disabled = true
	self:UnregisterAllEvents()
	self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.teleportbar)
	self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.teleportwarn2)
	self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.teleportwarn3)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.teleportbar, 50)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.teleportbar, 65)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.teleportbar, 80)
	self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.backbar)
	self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.backwarn2)
	self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_CANCEL", self.loc.backwarn3)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.backbar, 25)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.backbar, 30)
	self:StopEnrage()
	Metro:Unregister("BigWigs_Heigan the Unclean_CheckWipe")
end

function BigWigsHeigan: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 BigWigsHeigan:CHAT_MSG_MONSTER_YELL()
	if arg1 == self.loc.starttrigger then
		if not self:GetOpt("notStartWarn") then self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.startwarn, "Red") end
		if not self:GetOpt("notFirstTeleportBar") then 
			self:TriggerEvent("BIGWIGS_BAR_START", self.loc.firstteleportbar, 90, 2, "Green", "Interface\\Icons\\Spell_Arcane_Blink")
			self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR", self.loc.firstteleportbar, 50, "Yellow")
			self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR", self.loc.firstteleportbar, 65, "Orange")
			self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR", self.loc.firstteleportbar, 80, "Red")
		end
		if not self:GetOpt("notEnrageSec") then 
			self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn1, 30, "Green")
			self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn2, 60, "Yellow")
			self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.warn3, 80, "Orange")
		end
	elseif (string.find(arg1, self.loc.teleporttrigger)) then
		self:TriggerEvent("BIGWIGS_SYNC_SEND", "TELEPORT")
	end
end

function BigWigsHeigan:PLAYER_REGEN_ENABLED()
	local go = self:Scan()
	local _,_,running = Metro:Status("BigWigs_Heigan_CheckWipe")
	if (not go) then
		self:Disable()
		Metro:Stop("BigWigs_Heigan_CheckWipe")
	elseif (not running) then
		Metro:Start("BigWigs_Heigan_CheckWipe")
	end
end

function BigWigsHeigan:CHAT_MSG_MONSTER_EMOTE()
	elseif (string.find(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 BigWigsHeigan:StopFirstTeleport()
	self:TriggerEvent("BIGWIGS_BAR_CANCEL", self.loc.firstteleportbar)
	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_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.firstteleportbar, 50)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.firstteleportbar, 65)
	self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_CANCEL", self.loc.firstteleportbar, 80)
end

function BigWigsHeigan:CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE()
	if (string.find(arg1, self.loc.backroomtrigger)) then
		self:TriggerEvent("BIGWIGS_SYNC_SEND", "BACKROOM") end
		self:StopFirstTeleport()
	end
end

function BigWigsHeigan:BIGWIGS_SYNC_TELEPORT()
	if (not self:GetOpt("notTeleport")) then
		self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.teleportwarn1, "Green")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.teleportwarn2, 60, "Yellow")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.teleportwarn3, 80, "Red")
		self:TriggerEvent("BIGWIGS_BAR_START", self.loc.teleportbar, 90, 1, "Green", "Interface\\Icons\\Spell_Arcane_Blink")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.teleportbar, 50, "Yellow")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.teleportbar, 65, "Orange")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.teleportbar, 80, "Red")
	end
end

function BigWigsHeigan:BIGWIGS_SYNC_BACKROOM()
	if (not self:GetOpt("notBackRoom")) then
		self:TriggerEvent("BIGWIGS_MESSAGE", self.loc.backwarn1, "Green")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.backwarn2, 10, "Yellow")
		self:TriggerEvent("BIGWIGS_DELAYEDMESSAGE_START", self.loc.backwarn3, 30, "Red")
		self:TriggerEvent("BIGWIGS_BAR_START", self.loc.backbar, 40, 1, "Yellow", "Interface\\Icons\\Spell_Magic_LesserInvisibilty")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.backbar, 25, "Orange")
		self:TriggerEvent("BIGWIGS_BAR_DELAYEDSETCOLOR_START", self.loc.backbar, 30, "Red")
	end
end
--------------------------------
--      Load this bitch!      --
--------------------------------
BigWigsHeigan:RegisterForLoad()