All pastes #113287 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-08-03 14:29 UTC
rendered paste body
Index: Huhuran.lua
===================================================================
--- Huhuran.lua	(revision 6726)
+++ Huhuran.lua	(working copy)
@@ -5,9 +5,6 @@
 local boss = AceLibrary("Babble-Boss-2.0")("Princess Huhuran")
 local L = AceLibrary("AceLocale-2.0"):new("BigWigs"..boss)
 
-local prior
-local berserkannounced
-
 ----------------------------
 --      Localization      --
 ----------------------------
@@ -36,6 +33,12 @@
 	stingwarn = "Wyvern Sting - Dispel Tanks!",
 	stingdelaywarn = "Possible Wyvern Sting in 3 seconds!",
 	bartext = "Wyvern Sting",
+	
+	startwarn = "Huhuran engaged, 5 minutes to berserk!",
+	berserkbar = "Berserk",
+	berserkwarn1 = "Berserk in 1 minute!",
+    berserkwarn2 = "Berserk in 30 seconds!",
+    berserkwarn3 = "Berserk in 5 seconds!",
 
 } end )
 
@@ -78,26 +81,94 @@
 ------------------------------
 
 function BigWigsHuhuran:OnEnable()
-	prior = nil
-	berserkannounced = nil
+	self.prior = nil
+	self.berserkannounced = nil
+	self.started = nil
+	
 	self:RegisterEvent("BigWigs_Message")
+
+    self:RegisterEvent("PLAYER_REGEN_ENABLED")
+	self:RegisterEvent("PLAYER_REGEN_DISABLED")
+	
 	self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE")
 	self:RegisterEvent("UNIT_HEALTH")
 	self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")
 	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", "checkSting")
 	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", "checkSting")
 	self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", "checkSting")
+	
+	self:RegisterEvent("BigWigs_RecvSync")
+	self:TriggerEvent("BigWigs_ThrottleSync", "HuhuranStart", 10)
 end
 
 ------------------------------
 --      Event Handlers      --
 ------------------------------
 
+function BigWigsHuhuran:PLAYER_REGEN_DISABLED()
+	local go = self:Scan()
+	local running = self:IsEventScheduled("Huhuran_CheckStart")
+	if go then
+		self:CancelScheduledEvent("Huhuran_CheckStart")
+		self:TriggerEvent("BigWigs_SendSync", "HuhuranStart")
+	elseif not running then
+		self:ScheduleRepeatingEvent("Huhuran_CheckStart", self.PLAYER_REGEN_DISABLED, .5, self )
+	end
+end
+
+function BigWigsHuhuran:PLAYER_REGEN_ENABLED()
+	local go = self:Scan()
+	local running = self:IsEventScheduled("Huhuran_CheckWipe")
+	if (not go) then
+		self:TriggerEvent("BigWigs_RebootModule", self)
+	elseif (not running) then
+		self:ScheduleRepeatingEvent("Huhuran_CheckWipe", self.PLAYER_REGEN_ENABLED, 2, self)
+	end
+end
+
+function BigWigsHuhuran:Scan()
+	if UnitName("target") == boss and UnitAffectingCombat("target") then
+		return true
+	elseif UnitName("playertarget") == boss and UnitAffectingCombat("playertarget") then
+		return true
+	else
+		local i
+		for i = 1, GetNumRaidMembers(), 1 do
+			if UnitName("Raid"..i.."target") == (boss) and UnitAffectingCombat("raid"..i.."target") then
+				return true
+			end
+		end
+	end
+	return false
+end
+
+function BigWigsHuhuran:BigWigs_RecvSync( sync )
+	if sync == "HuhuranStart" then
+		if self.db.profile.berserk and not self.started then
+			self.started = true
+			self:TriggerEvent("BigWigs_Message", L"startwarn", "Red")
+			self:TriggerEvent("BigWigs_StartBar", self, L"berserkbar", 300, 1, "Interface\\Icons\\INV_Shield_01", "Green", "Yellow", "Orange", "Red")
+			self:ScheduleEvent("bwhuhuranenragewarn1", "BigWigs_Message", 240, L"berserkwarn1", "Yellow")
+			self:ScheduleEvent("bwhuhuranenragewarn2", "BigWigs_Message", 270, L"berserkwarn2", "Orange")
+			self:ScheduleEvent("bwhuhuranenragewarn3", "BigWigs_Message", 295, L"berserkwarn3", "Red")
+		end
+	end
+end
+
 function BigWigsHuhuran:CHAT_MSG_MONSTER_EMOTE(arg1)
 	if self.db.profile.frenzy and arg1 == L"frenzytrigger" then
 		self:TriggerEvent("BigWigs_Message", L"frenzywarn", "Orange")
 	elseif self.db.profile.berserk and arg1 == L"berserktrigger" then
+	
+        self:CancelScheduledEvent("bwhuhuranenragewarn1")
+        self:CancelScheduledEvent("bwhuhuranenragewarn2")
+        self:CancelScheduledEvent("bwhuhuranenragewarn3")
+        
+        self:TriggerEvent("BigWigs_StopBar", self, L"berserkbar")
+	
 		self:TriggerEvent("BigWigs_Message", L"berserkwarn", "Red")
+		
+		self.berserkannounced = true
 	end
 end
 
@@ -107,23 +178,23 @@
 		local health = UnitHealth(arg1)
 		if (health > 30 and health <= 33) then
 			self:TriggerEvent("BigWigs_Message", L"berserksoonwarn", "Red")
-			berserkannounced = true
+			self.berserkannounced = true
 		elseif (health > 40 and berserkannounced) then
-			berserkannounced = false
+			self.berserkannounced = false
 		end
 	end
 end
 
 function BigWigsHuhuran:checkSting(arg1)
 	if not self.db.profile.wyvern then return end
-	if not prior and string.find(arg1, L"stingtrigger") then
+	if not self.prior and string.find(arg1, L"stingtrigger") then
 		self:TriggerEvent("BigWigs_Message", L"stingwarn", "Orange")
-		self:TriggerEvent("BigWigs_StartBar", self, L"bartext", 25, 1, "Interface\\Icons\\INV_Spear_02", "Green", "Yellow", "Orange", "Red")
+		self:TriggerEvent("BigWigs_StartBar", self, L"bartext", 25, 2, "Interface\\Icons\\INV_Spear_02", "Green", "Yellow", "Orange", "Red")
 		self:ScheduleEvent("BigWigs_Message", 22, L"stingdelaywarn", "Orange")
-		prior = true
+		self.prior = true
 	end
 end
 
 function BigWigsHuhuran:BigWigs_Message(text)
-	if text == L"stingdelaywarn" then prior = nil end
+	if text == L"stingdelaywarn" then self.prior = nil end
 end
\ No newline at end of file