You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
645 lines
20 KiB
645 lines
20 KiB
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
local _detalhes = _G.Details
|
|
local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" )
|
|
local _
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--local pointers
|
|
|
|
local _math_floor = math.floor --lua local
|
|
local _cstr = string.format --lua local
|
|
local _UnitClass = UnitClass
|
|
|
|
local gump = _detalhes.gump --details local
|
|
|
|
local _GetSpellInfo = _detalhes.getspellinfo --details api
|
|
|
|
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--constants
|
|
|
|
local modo_raid = _detalhes._detalhes_props["MODO_RAID"]
|
|
local modo_alone = _detalhes._detalhes_props["MODO_ALONE"]
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--internal functions
|
|
|
|
function _detalhes.RaidTables:DisableRaidMode (instance)
|
|
--free
|
|
self:SetInUse (instance.current_raid_plugin, nil)
|
|
--hide
|
|
local current_plugin_object = _detalhes:GetPlugin (instance.current_raid_plugin)
|
|
if (current_plugin_object) then
|
|
current_plugin_object.Frame:Hide()
|
|
end
|
|
instance.current_raid_plugin = nil
|
|
end
|
|
|
|
function _detalhes:RaidPluginInstalled (plugin_name)
|
|
if (self.waiting_raid_plugin) then
|
|
--print(self.meu_id, 2, self.last_raid_plugin, " == ", plugin_name)
|
|
if (self.last_raid_plugin == plugin_name) then
|
|
if (self.waiting_pid) then
|
|
self:CancelTimer(self.waiting_pid, true)
|
|
end
|
|
self:CancelWaitForPlugin()
|
|
_detalhes.RaidTables:EnableRaidMode (self, plugin_name)
|
|
end
|
|
end
|
|
|
|
--force hide wait for plugins
|
|
if (_G["DetailsWaitFrameBG"..self.meu_id] and _G["DetailsWaitForPluginFrame" .. self.meu_id]) then
|
|
_G["DetailsWaitForPluginFrame" .. self.meu_id]:Hide()
|
|
_G["DetailsWaitFrameBG"..self.meu_id]:Hide()
|
|
end
|
|
end
|
|
|
|
function _detalhes.RaidTables:EnableRaidMode (instance, plugin_name, from_cooltip, from_mode_menu)
|
|
|
|
--check if came from cooltip
|
|
if (from_cooltip) then
|
|
self = _detalhes.RaidTables
|
|
instance = plugin_name
|
|
plugin_name = from_cooltip
|
|
end
|
|
|
|
--set the mode
|
|
if (instance.modo == modo_alone) then
|
|
instance:SoloMode (false)
|
|
end
|
|
instance.modo = modo_raid
|
|
|
|
--hide rows, scrollbar
|
|
Details.FadeHandler.Fader(instance, 1, nil, "barras")
|
|
if (instance.rolagem) then
|
|
instance:EsconderScrollBar (true) --hida a scrollbar
|
|
end
|
|
_detalhes:ResetaGump (instance)
|
|
instance:RefreshMainWindow(true)
|
|
|
|
--get the plugin name
|
|
|
|
--if the desired plugin isn't passed, try to get the latest used.
|
|
if (not plugin_name) then
|
|
local last_plugin_used = instance.last_raid_plugin
|
|
if (last_plugin_used) then
|
|
if (self:IsAvailable (last_plugin_used, instance)) then
|
|
plugin_name = last_plugin_used
|
|
end
|
|
end
|
|
end
|
|
|
|
--if we still doesnt have a name, try to get the first available
|
|
if (not plugin_name) then
|
|
local available = self:GetAvailablePlugins()
|
|
if (#available == 0) then
|
|
if (not instance.wait_for_plugin_created or not instance.WaitForPlugin) then
|
|
instance:CreateWaitForPlugin()
|
|
end
|
|
return instance:WaitForPlugin()
|
|
end
|
|
|
|
plugin_name = available [1] [4]
|
|
end
|
|
|
|
--last check if the name is okey
|
|
if (self:IsAvailable (plugin_name, instance)) then
|
|
self:switch(nil, plugin_name, instance)
|
|
|
|
if (from_mode_menu) then
|
|
--refresh
|
|
instance.baseframe.cabecalho.modo_selecao:GetScript("OnEnter")(instance.baseframe.cabecalho.modo_selecao, _, true)
|
|
end
|
|
else
|
|
if (not instance.wait_for_plugin) then
|
|
instance:CreateWaitForPlugin()
|
|
end
|
|
return instance:WaitForPlugin()
|
|
end
|
|
|
|
end
|
|
|
|
function _detalhes.RaidTables:GetAvailablePlugins()
|
|
local available = {}
|
|
for index, plugin in ipairs(self.Menu) do
|
|
if (not self.PluginsInUse [ plugin [4] ] and plugin [3].__enabled) then -- 3 = plugin object 4 = absolute name
|
|
tinsert(available, plugin)
|
|
end
|
|
end
|
|
return available
|
|
end
|
|
|
|
function _detalhes.RaidTables:IsAvailable (plugin_name, instance)
|
|
--check if is installed
|
|
if (not self.NameTable [plugin_name]) then
|
|
return false
|
|
end
|
|
|
|
--check if is enabled
|
|
if (not self.NameTable [plugin_name].__enabled) then
|
|
return false
|
|
end
|
|
|
|
--check if is available
|
|
local in_use = self.PluginsInUse [ plugin_name ]
|
|
|
|
if (in_use and in_use ~= instance:GetId()) then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
function _detalhes.RaidTables:SetInUse (absolute_name, instance_number)
|
|
if (absolute_name) then
|
|
self.PluginsInUse [ absolute_name ] = instance_number
|
|
end
|
|
end
|
|
|
|
----------------
|
|
|
|
function _detalhes.RaidTables:switch(_, plugin_name, instance)
|
|
|
|
local update_menu = false
|
|
if (not self) then --came from cooltip
|
|
self = _detalhes.RaidTables
|
|
update_menu = true
|
|
end
|
|
|
|
--only hide the current plugin shown
|
|
if (not plugin_name) then
|
|
if (instance.current_raid_plugin) then
|
|
--free
|
|
self:SetInUse (instance.current_raid_plugin, nil)
|
|
--hide
|
|
local current_plugin_object = _detalhes:GetPlugin (instance.current_raid_plugin)
|
|
if (current_plugin_object) then
|
|
current_plugin_object.Frame:Hide()
|
|
end
|
|
instance.current_raid_plugin = nil
|
|
end
|
|
return
|
|
end
|
|
|
|
--check if is realy available
|
|
if (not self:IsAvailable (plugin_name, instance)) then
|
|
instance.last_raid_plugin = plugin_name
|
|
if (not instance.wait_for_plugin) then
|
|
instance:CreateWaitForPlugin()
|
|
end
|
|
return instance:WaitForPlugin()
|
|
end
|
|
|
|
--hide current shown plugin
|
|
if (instance.current_raid_plugin) then
|
|
--free
|
|
self:SetInUse (instance.current_raid_plugin, nil)
|
|
--hide
|
|
local current_plugin_object = _detalhes:GetPlugin (instance.current_raid_plugin)
|
|
if (current_plugin_object) then
|
|
current_plugin_object.Frame:Hide()
|
|
end
|
|
end
|
|
|
|
local plugin_object = _detalhes:GetPlugin (plugin_name)
|
|
|
|
if (plugin_object and plugin_object.__enabled and plugin_object.Frame) then
|
|
instance.last_raid_plugin = plugin_name
|
|
instance.current_raid_plugin = plugin_name
|
|
|
|
self:SetInUse (plugin_name, instance:GetId())
|
|
plugin_object.instance_id = instance:GetId()
|
|
plugin_object.Frame:SetPoint("TOPLEFT", instance.bgframe)
|
|
plugin_object.Frame:Show()
|
|
instance:ChangeIcon (plugin_object.__icon)--; print(instance:GetId(),"icon",plugin_object.__icon)
|
|
_detalhes:SendEvent("DETAILS_INSTANCE_CHANGEATTRIBUTE", nil, instance, instance.atributo, instance.sub_atributo)
|
|
|
|
if (update_menu) then
|
|
GameCooltip:ExecFunc (instance.baseframe.cabecalho.atributo)
|
|
--instance _detalhes.popup:ExecFunc (DeleteButton)
|
|
end
|
|
|
|
--force hide wait for plugins
|
|
if (_G["DetailsWaitFrameBG"..instance.meu_id] and _G["DetailsWaitForPluginFrame" .. instance.meu_id]) then
|
|
_G["DetailsWaitForPluginFrame" .. instance.meu_id]:Hide()
|
|
_G["DetailsWaitFrameBG"..instance.meu_id]:Hide()
|
|
end
|
|
else
|
|
if (not instance.wait_for_plugin) then
|
|
instance:CreateWaitForPlugin()
|
|
end
|
|
return instance:WaitForPlugin()
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--built in announcers
|
|
|
|
function _detalhes:SendMsgToChannel (msg, channel, towho)
|
|
if (channel == "RAID" or channel == "PARTY") then
|
|
if (GetNumGroupMembers (LE_PARTY_CATEGORY_INSTANCE) > 0) then
|
|
channel = "INSTANCE_CHAT"
|
|
end
|
|
SendChatMessage (msg, channel)
|
|
|
|
elseif (channel == "BNET") then
|
|
|
|
if (type(towho) == "number") then
|
|
BNSendWhisper (towho, msg)
|
|
|
|
elseif (type(towho) == "string") then
|
|
--local BnetFriends = BNGetNumFriends()
|
|
--for i = 1, BnetFriends do
|
|
-- local presenceID, presenceName, battleTag, isBattleTagPresence, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText, isRIDFriend, broadcastTime, canSoR = BNGetFriendInfo (i)
|
|
-- if ((presenceName == towho or toonName == towho) and isOnline) then
|
|
-- BNSendWhisper (presenceID, msg)
|
|
-- break
|
|
-- end
|
|
--end
|
|
end
|
|
|
|
elseif (channel == "CHANNEL") then
|
|
SendChatMessage (msg, channel, nil, GetChannelName (towho))
|
|
|
|
elseif (channel == "WHISPER") then
|
|
SendChatMessage (msg, channel, nil, towho)
|
|
|
|
elseif (channel == "PRINT") then
|
|
print(msg)
|
|
|
|
else --say channel?
|
|
if (IsInInstance()) then --patch 80205 cannot use 'say' channel outside instances
|
|
SendChatMessage (msg, channel)
|
|
end
|
|
|
|
--elseif (channel == "SAY" or channel == "YELL" or channel == "RAID_WARNING" or channel == "OFFICER" or channel == "GUILD" or channel == "EMOTE") then
|
|
|
|
end
|
|
end
|
|
|
|
--/run local s="teste {spell}"; s=s:gsub("{spell}", "tercio");print(s)
|
|
|
|
function _detalhes:interrupt_announcer (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, extraSpellID, extraSpellName, extraSchool)
|
|
|
|
-- add novo canal Self.
|
|
-- no canal self ele mostra todos os interrupts al�m do meu.
|
|
|
|
-- add canal self pras mortes tbm?
|
|
|
|
local channel = _detalhes.announce_interrupts.channel
|
|
|
|
if (channel ~= "PRINT" and who_name == _detalhes.playername) then
|
|
|
|
local next = _detalhes.announce_interrupts.next
|
|
local custom = _detalhes.announce_interrupts.custom
|
|
|
|
local spellname
|
|
if (spellid > 10) then
|
|
spellname = GetSpellLink(extraSpellID)
|
|
else
|
|
spellname = _GetSpellInfo(extraSpellID)
|
|
end
|
|
|
|
if (channel == "RAID") then
|
|
local zone = _detalhes:GetZoneType()
|
|
|
|
if (zone ~= "party" and zone ~= "raid") then
|
|
return
|
|
end
|
|
|
|
if (zone == "raid") then
|
|
channel = "RAID"
|
|
elseif (zone == "party") then
|
|
channel = "PARTY"
|
|
end
|
|
if (GetNumGroupMembers (LE_PARTY_CATEGORY_INSTANCE) > 0) then
|
|
channel = "INSTANCE_CHAT"
|
|
end
|
|
end
|
|
|
|
if (custom ~= "") then
|
|
custom = custom:gsub("{spell}", spellname)
|
|
custom = custom:gsub("{target}", alvo_name or "")
|
|
custom = custom:gsub("{next}", next)
|
|
_detalhes:SendMsgToChannel (custom, channel, _detalhes.announce_interrupts.whisper)
|
|
else
|
|
local msg = _cstr (Loc ["STRING_OPTIONS_RT_INTERRUPT"], spellname)
|
|
if (next ~= "") then
|
|
msg = msg .. " " .. _cstr (Loc ["STRING_OPTIONS_RT_INTERRUPT_NEXT"], next)
|
|
end
|
|
|
|
_detalhes:SendMsgToChannel (msg, channel, _detalhes.announce_interrupts.whisper)
|
|
end
|
|
|
|
elseif (channel == "PRINT") then
|
|
|
|
local custom = _detalhes.announce_interrupts.custom
|
|
|
|
local spellname
|
|
if (spellid > 10) then
|
|
spellname = GetSpellLink(extraSpellID)
|
|
else
|
|
spellname = _GetSpellInfo(extraSpellID)
|
|
end
|
|
|
|
if (custom ~= "") then
|
|
custom = custom:gsub("{spell}", spellname)
|
|
custom = custom:gsub("{next}", who_name)
|
|
custom = custom:gsub("{target}", alvo_name or "")
|
|
_detalhes:SendMsgToChannel (custom, "PRINT")
|
|
else
|
|
local minute, second = _detalhes:GetCombat():GetFormatedCombatTime()
|
|
|
|
local _, class = _UnitClass(who_name)
|
|
local class_color = "|cFFFF3333"
|
|
|
|
if (class) then
|
|
local coords = CLASS_ICON_TCOORDS [class]
|
|
class_color = "|TInterface\\AddOns\\Details\\images\\classes_small_alpha:12:12:0:0:128:128:" .. coords[1]/2*128 .. ":" .. coords[2]/2*128 .. ":" .. coords[3]/2*128 .. ":" .. coords[4]/2*128 .. "|t |c" .. RAID_CLASS_COLORS [class].colorStr
|
|
end
|
|
|
|
if (second < 10) then
|
|
second = "0" .. second
|
|
end
|
|
local msg = "|cFFFFFF00[|r".. minute .. ":" .. second .. "|cFFFFFF00]|r Interrupt: " .. spellname .. " (" .. class_color .. _detalhes:GetOnlyName(who_name) .. "|r)"
|
|
|
|
_detalhes:SendMsgToChannel (msg, "PRINT")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
local ignored_self_cooldowns = {
|
|
[119582] = true, -- Purifying Brew
|
|
[115308] = true, --Elusive Brew
|
|
[115203 ] = true, --Fortifying Brew
|
|
}
|
|
|
|
function _detalhes:cooldown_announcer (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname)
|
|
|
|
local channel = _detalhes.announce_cooldowns.channel
|
|
|
|
if (channel ~= "PRINT" and who_name == _detalhes.playername) then
|
|
|
|
local ignored = _detalhes.announce_cooldowns.ignored_cooldowns
|
|
if (ignored [spellid]) then
|
|
return
|
|
end
|
|
|
|
if (channel == "WHISPER") then
|
|
if (alvo_name == Loc ["STRING_RAID_WIDE"]) then
|
|
channel = "RAID"
|
|
end
|
|
end
|
|
|
|
if (channel == "RAID") then
|
|
local zone = _detalhes:GetZoneType()
|
|
|
|
if (zone ~= "party" and zone ~= "raid") then
|
|
return
|
|
end
|
|
|
|
if (zone == "raid") then
|
|
channel = "RAID"
|
|
elseif (zone == "party") then
|
|
channel = "PARTY"
|
|
end
|
|
if (GetNumGroupMembers (LE_PARTY_CATEGORY_INSTANCE) > 0) then
|
|
channel = "INSTANCE_CHAT"
|
|
end
|
|
end
|
|
|
|
local spellname
|
|
if (spellid > 10) then
|
|
spellname = GetSpellLink(spellid)
|
|
else
|
|
spellname = _GetSpellInfo(spellid)
|
|
end
|
|
|
|
local custom = _detalhes.announce_cooldowns.custom
|
|
|
|
if (custom ~= "") then
|
|
custom = custom:gsub("{spell}", spellname)
|
|
custom = custom:gsub("{target}", alvo_name or "")
|
|
_detalhes:SendMsgToChannel (custom, channel, _detalhes.announce_interrupts.whisper)
|
|
else
|
|
local msg
|
|
|
|
if (alvo_name == Loc ["STRING_RAID_WIDE"]) then
|
|
msg = _cstr (Loc ["STRING_OPTIONS_RT_COOLDOWN2"], spellname)
|
|
else
|
|
msg = _cstr (Loc ["STRING_OPTIONS_RT_COOLDOWN1"], spellname, alvo_name)
|
|
end
|
|
|
|
_detalhes:SendMsgToChannel (msg, channel, _detalhes.announce_interrupts.whisper)
|
|
end
|
|
|
|
elseif (channel == "PRINT") then
|
|
|
|
local ignored = _detalhes.announce_cooldowns.ignored_cooldowns
|
|
if (ignored [spellid]) then
|
|
return
|
|
end
|
|
|
|
if (ignored_self_cooldowns [spellid]) then
|
|
return
|
|
end
|
|
|
|
if (who_name == alvo_name and who_name ~= _detalhes.playername) then
|
|
return
|
|
end
|
|
|
|
local msg
|
|
local minute, second = _detalhes:GetCombat():GetFormatedCombatTime()
|
|
|
|
local _, class = _UnitClass(who_name)
|
|
local class_color = "|cFFFFFFFF"
|
|
|
|
local _, class2 = _UnitClass(alvo_name)
|
|
local class_color2 = "|cFFFFFFFF"
|
|
|
|
if (class) then
|
|
local coords = CLASS_ICON_TCOORDS [class]
|
|
class_color = "|TInterface\\AddOns\\Details\\images\\classes_small_alpha:12:12:0:0:128:128:" .. coords[1]/2*128 .. ":" .. coords[2]/2*128 .. ":" .. coords[3]/2*128 .. ":" .. coords[4]/2*128 .. "|t |c" .. RAID_CLASS_COLORS [class].colorStr
|
|
end
|
|
|
|
if (class2) then
|
|
local coords = CLASS_ICON_TCOORDS [class2]
|
|
class_color2 = " -> |TInterface\\AddOns\\Details\\images\\classes_small_alpha:12:12:0:0:128:128:" .. coords[1]/2*128 .. ":" .. coords[2]/2*128 .. ":" .. coords[3]/2*128 .. ":" .. coords[4]/2*128 .. "|t |c" .. RAID_CLASS_COLORS [class2].colorStr
|
|
alvo_name = _detalhes:GetOnlyName(alvo_name)
|
|
else
|
|
alvo_name = ""
|
|
end
|
|
|
|
local spellname
|
|
if (spellid > 10) then
|
|
spellname = GetSpellLink(spellid)
|
|
else
|
|
spellname = _GetSpellInfo(spellid)
|
|
end
|
|
|
|
if (second < 10) then
|
|
second = "0" .. second
|
|
end
|
|
msg = "|cFF8F8FFF[|r".. minute .. ":" .. second .. "|cFF8F8FFF]|r Cooldown: " .. spellname .. " (" .. class_color .. _detalhes:GetOnlyName(who_name) .. "|r" .. class_color2 .. alvo_name .. "|r)"
|
|
|
|
_detalhes:SendMsgToChannel (msg, "PRINT")
|
|
|
|
end
|
|
end
|
|
|
|
function _detalhes:death_announcer (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, death_table, last_cooldown, death_at, max_health)
|
|
|
|
local where = _detalhes.announce_deaths.where
|
|
local zone = _detalhes:GetZoneType()
|
|
local channel = ""
|
|
|
|
if (where == 1) then
|
|
if (zone ~= "party" and zone ~= "raid") then
|
|
return
|
|
end
|
|
|
|
if (zone == "raid") then
|
|
channel = "RAID"
|
|
elseif (zone == "party") then
|
|
channel = "PARTY"
|
|
end
|
|
if (GetNumGroupMembers (LE_PARTY_CATEGORY_INSTANCE) > 0) then
|
|
channel = "INSTANCE_CHAT"
|
|
end
|
|
|
|
elseif (where == 2) then
|
|
if (zone ~= "raid") then
|
|
return
|
|
end
|
|
channel = "RAID"
|
|
if (GetNumGroupMembers (LE_PARTY_CATEGORY_INSTANCE) > 0) then
|
|
channel = "INSTANCE_CHAT"
|
|
end
|
|
|
|
elseif (where == 3) then
|
|
if (zone ~= "party") then
|
|
return
|
|
end
|
|
channel = "PARTY"
|
|
if (GetNumGroupMembers (LE_PARTY_CATEGORY_INSTANCE) > 0) then
|
|
channel = "INSTANCE_CHAT"
|
|
end
|
|
|
|
elseif (where == 4) then --observer
|
|
if (zone ~= "raid" and zone ~= "party") then
|
|
return
|
|
end
|
|
channel = "PRINT"
|
|
|
|
elseif (where == 5) then --officers
|
|
if (IsInGuild()) then
|
|
channel = "OFFICER"
|
|
end
|
|
end
|
|
|
|
local only_first = _detalhes.announce_deaths.only_first
|
|
--_detalhes:GetCombat("current"):GetDeaths() is the same thing, but, it's faster without using the API.
|
|
if (zone == "raid" and not _detalhes.tabela_vigente.is_boss) then
|
|
return
|
|
end
|
|
if (only_first > 0 and #_detalhes.tabela_vigente.last_events_tables > only_first) then
|
|
return
|
|
end
|
|
|
|
alvo_name = _detalhes:GetOnlyName(alvo_name)
|
|
|
|
local msg
|
|
if (where == 4) then --observer
|
|
local _, class = _UnitClass(alvo_name)
|
|
local class_color = "|cFFFFFFFF"
|
|
|
|
if (class) then
|
|
local coords = CLASS_ICON_TCOORDS [class]
|
|
class_color = "|TInterface\\AddOns\\Details\\images\\classes_small_alpha:12:12:0:0:256:256:" .. coords[1]/2*256 .. ":" .. coords[2]/2*256 .. ":" .. coords[3]/2*256 .. ":" .. coords[4]/2*256 .. "|t |c" .. RAID_CLASS_COLORS [class].colorStr
|
|
end
|
|
msg = "Death: " .. class_color .. alvo_name .. "|r ->"
|
|
else
|
|
msg = _cstr (Loc ["STRING_OPTIONS_RT_DEATH_MSG"], alvo_name) .. ":"
|
|
end
|
|
|
|
local spells = ""
|
|
death_table = death_table[1]
|
|
local last = #death_table
|
|
|
|
for i = 1, _detalhes.announce_deaths.last_hits do
|
|
for o = last, 1, -1 do
|
|
local this_death = death_table [o]
|
|
if (type(this_death[1]) == "boolean" and this_death[1] and this_death[4]+5 > time) then
|
|
local spelllink
|
|
if (this_death [2] > 10) then
|
|
spelllink = GetSpellLink(this_death [2])
|
|
else
|
|
spelllink = "[" .. _GetSpellInfo(this_death [2]) .. "]"
|
|
end
|
|
spells = spelllink .. ": " .. _detalhes:ToK2 (_math_floor(this_death [3])) .. " " .. spells
|
|
last = o-1
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
msg = msg .. " " .. spells
|
|
|
|
if (where == 4) then --observer
|
|
local minute, second = _detalhes:GetCombat():GetFormatedCombatTime()
|
|
if (second < 10) then
|
|
second = "0" .. second
|
|
end
|
|
msg = "|cFFFF8800[|r".. minute .. ":" .. second .. "|cFFFF8800]|r " .. msg
|
|
end
|
|
|
|
_detalhes:SendMsgToChannel (msg, channel)
|
|
|
|
end
|
|
|
|
function _detalhes:StartAnnouncers()
|
|
if (_detalhes.announce_interrupts.enabled) then
|
|
_detalhes:InstallHook (DETAILS_HOOK_INTERRUPT, _detalhes.interrupt_announcer)
|
|
end
|
|
if (_detalhes.announce_cooldowns.enabled) then
|
|
_detalhes:InstallHook (DETAILS_HOOK_COOLDOWN, _detalhes.cooldown_announcer)
|
|
end
|
|
if (_detalhes.announce_deaths.enabled) then
|
|
_detalhes:InstallHook (DETAILS_HOOK_DEATH, _detalhes.death_announcer)
|
|
end
|
|
end
|
|
|
|
function _detalhes:EnableInterruptAnnouncer()
|
|
_detalhes.announce_interrupts.enabled = true
|
|
_detalhes:InstallHook (DETAILS_HOOK_INTERRUPT, _detalhes.interrupt_announcer)
|
|
end
|
|
function _detalhes:DisableInterruptAnnouncer()
|
|
_detalhes.announce_interrupts.enabled = false
|
|
_detalhes:UnInstallHook (DETAILS_HOOK_INTERRUPT, _detalhes.interrupt_announcer)
|
|
end
|
|
|
|
function _detalhes:EnableCooldownAnnouncer()
|
|
_detalhes.announce_cooldowns.enabled = true
|
|
_detalhes:InstallHook (DETAILS_HOOK_COOLDOWN, _detalhes.cooldown_announcer)
|
|
end
|
|
function _detalhes:DisableCooldownAnnouncer()
|
|
_detalhes.announce_cooldowns.enabled = false
|
|
_detalhes:UnInstallHook (DETAILS_HOOK_COOLDOWN, _detalhes.cooldown_announcer)
|
|
end
|
|
|
|
function _detalhes:EnableDeathAnnouncer()
|
|
_detalhes.announce_deaths.enabled = true
|
|
_detalhes:InstallHook (DETAILS_HOOK_DEATH, _detalhes.death_announcer)
|
|
end
|
|
function _detalhes:DisableDeathAnnouncer()
|
|
_detalhes.announce_deaths.enabled = false
|
|
_detalhes:UnInstallHook (DETAILS_HOOK_DEATH, _detalhes.death_announcer)
|
|
end
|
|
|
|
|
|
|