All pastes #115153 Raw Edit

Something

public text v1 · immutable
·published 2006-08-04 12:07 UTC
rendered paste body
Index: Faerlina.lua
===================================================================
--- Faerlina.lua	(revision 6870)
+++ Faerlina.lua	(working copy)
@@ -34,6 +34,7 @@
 	enragewarn = "Enrage!",
 	enrageremovewarn = "Enrage removed! %d seconds until next!", -- added
 	silencewarn = "Silence! Delaying Enrage!",
+	silencewarnnodelay = "Silence!",
 
 	enragebar = "Enrage",
 	silencebar = "Silence",
@@ -90,6 +91,7 @@
 
 function BigWigsFaerlina:OnEnable()
 	self.enragetime = 60
+	self.enrageTimerStarted = nil
 	self.silencetime = 30
 	self.enraged = nil
 	
@@ -108,6 +110,7 @@
 		self:TriggerEvent("BigWigs_Message", L"startwarn", "Orange")
 		self:ScheduleEvent("bwfaerlinaenrage15", "BigWigs_Message", self.enragetime - 15, L"enragewarn15sec", "Red")
 		self:TriggerEvent("BigWigs_StartBar", self, L"enragebar", self.enragetime, 1, "Interface\\Icons\\Spell_Shadow_UnholyFrenzy", "Green", "Yellow", "Orange", "Red")
+		self.enrageTimerStarted = GetTime()
 	end
 end
 
@@ -133,21 +136,37 @@
 		self.enraged = true
 	elseif sync == "FaerlinaSilence" then
 		if not self.enraged then -- preemptive, 30s silence
-			self:TriggerEvent("BigWigs_StopBar", self, L"enragebar")
-			self:CancelScheduledEvent("bwfaerlinaenrage15")
+		
+			--[[ The enrage timer should only be reset if it's less than 30sec
+			to her next enrage, because if you silence her when there's 30+
+			sec to the enrage, it won't actually stop her from enraging. ]]
+
+			local currentTime = GetTime()
+
+			if (self.enrageTimerStarted + 30) > currentTime and self.db.profile.enrage then
+				-- We SHOULD reset the enrage timer, since it's more than 30
+				-- sec since enrage started.
+				self:TriggerEvent("BigWigs_StopBar", self, L"enragebar")
+				self:CancelScheduledEvent("bwfaerlinaenrage15")
+				self:ScheduleEvent( "bwfaerlinaenrage15", "BigWigs_Message", self.silencetime - 15, L"enragewarn15sec", "Red")
+				self:TriggerEvent("BigWigs_StartBar", self, L"enragebar", self.silencetime, 1, "Interface\\Icons\\Spell_Shadow_UnholyFrenzy", "Yellow", "Orange", "Red")
+				self.enrageTimerStarted = currentTime
+			end
+
 			if self.db.profile.silence then
-				self:TriggerEvent("BigWigs_Message", L"silencewarn", "Orange")
+				if (self.enrageTimerStarted + 30) > currentTime then
+					self:TriggerEvent("BigWigs_Message", L"silencewarnnodelay", "Orange")
+				else
+					self:TriggerEvent("BigWigs_Message", L"silencewarn", "Orange")
+				end
 				self:TriggerEvent("BigWigs_StartBar", self, L"silencebar", self.silencetime, 2, "Interface\\Icons\\Spell_Holy_Silence", "Green", "Yellow", "Orange", "Red")
 			end
-			if self.db.profile.enrage then
-				self:ScheduleEvent( "bwfaerlinaenrage15", "BigWigs_Message", self.silencetime - 15, L"enragewarn15sec", "Red")
-				self:TriggerEvent("BigWigs_StartBar", self, L"enragebar", self.silencetime, 1, "Interface\\Icons\\Spell_Shadow_UnholyFrenzy", "Yellow", "Orange", "Red")
-			end
 		else -- Reactive enrage removed
 			if self.db.profile.enrage then
 				self:TriggerEvent("BigWigs_Message", string.format(L"enrageremovewarn", self.enragetime), "Orange")
 				self:ScheduleEvent("bwfaerlinaenrage15", "BigWigs_Message", self.enragetime - 15, L"enragewarn15sec", "Red")
 				self:TriggerEvent("BigWigs_StartBar", self, L"enragebar", self.enragetime, 1, "Interface\\Icons\\Spell_Shadow_UnholyFrenzy", "Green", "Yellow", "Orange", "Red")
+				self.enrageTimerStarted = GetTime()
 			end
 			if self.db.profile.silence then
 				self:TriggerEvent("BigWigs_StartBar", self, L"silencebar", self.silencetime, 2, "Interface\\Icons\\Spell_Holy_Silence", "Green", "Yellow", "Orange", "Red")