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")