From 88a107df2fdc9d7164278be2b08aaab403af3be3 Mon Sep 17 00:00:00 2001 From: Tercio Date: Fri, 3 Apr 2015 14:01:36 -0300 Subject: [PATCH] - Improved Crowd Control Done. --- boot.lua | 36 ++++--------------------- classes/classe_custom.lua | 10 +++---- classes/classe_instancia.lua | 14 +++++----- core/parser.lua | 51 ++++++++++++++++++++++++++++++++--- core/windows.lua | 2 +- functions/link.lua | 22 +++++++-------- gumps/janela_principal.lua | 6 ++--- images/modo_icones.tga | Bin 25884 -> 15057 bytes 8 files changed, 80 insertions(+), 61 deletions(-) diff --git a/boot.lua b/boot.lua index 84a52c48..516800fd 100644 --- a/boot.lua +++ b/boot.lua @@ -4,7 +4,7 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") _detalhes.build_counter = 711 --it's 765 for release - _detalhes.userversion = "v3.12.3" + _detalhes.userversion = "v3.12.4" _detalhes.realversion = 66 --core version _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" Details = _detalhes @@ -22,46 +22,20 @@ do --[[ |cFFFFFF00-|r .\n\n -|cFFFFFF00v3.12.3 (|cFFFFCC00May 02, 2015|r|cFFFFFF00)|r:\n\n +|cFFFFFF00v3.12.4 (|cFFFFCC00May 03, 2015|r|cFFFFFF00)|r:\n\n |cFFFFFF00-|r Encounter Details (plugin): added a report button on Emotes tab.\n\n |cFFFFFF00-|r Encounter Details (plugin): improved Weakauras creation.\n\n |cFFFFFF00-|r Encounter Details (plugin): fixed the report text for interrupts and dispells.\n\n +|cFFFFFF00-|r Crowd control by Pets now is merged with its owner.\n\n |cFFFFFF00-|r Truncated left text on bars now shows the entire text when hover over the bar.\n\n |cFFFFFF00-|r Added an extra option on minimap menu to disable the minimap icon.\n\n |cFFFFFF00-|r Fixed a problem when disabling the minimap icon through options panel.\n\n |cFFFFFF00-|r Fixed an issue with item level tracker feature.\n\n - -|cFFFFFF00v3.12.2 (|cFFFFCC00Mar 30, 2015|r|cFFFFFF00)|r:\n\n -|cFFFFFF00-|r Raid Check (plugin): added item level.\n\n -|cFFFFFF00-|r Advanced Death Logs (plugin): bug fixes, it's important to update it.\n\n -|cFFFFFF00-|r Time Line (plugin): bug fixes.\n\n -|cFFFFFF00-|r Added option to disabled th eitem level tracker.\n\n -|cFFFFFF00-|r Added item level on Raid Check plugin panel.\n\n -|cFFFFFF00-|r Added Spirit Link Totem damage and healing on death log.\n\n -|cFFFFFF00-|r Added the total of life exchanged by the Spirit Link Totem on player detail window.\n\n -|cFFFFFF00-|r Added more spells for crowd control.\n\n -|cFFFFFF00-|r Added scroll on bookmark panel.\n\n -|cFFFFFF00-|r Fixed issue with Dps/Hps data broker which wasn't respecting the type of time (effective/activity) selected.\n\n -|cFFFFFF00-|r Fixed few bugs when using the key bind to toggle windows.\n\n - -|cFFFFFF00v3.11.5 (|cFFFFCC00Mar 18, 2015|r|cFFFFFF00)|r:\n\n -|cFFFFFF00-|r Fixed an issue with overall data where max/min amount for spell was being calculated wrong.\n\n -|cFFFFFF00-|r Fixed a problem while reporting enemy damage taken.\n\n -|cFFFFFF00-|r Fixed an issue with damage taken by spell where some spells wasn't shown.\n\n -|cFFFFFF00-|r Few improvements on tooltips.\n\n -|cFFFFFF00-|r Fixed a accuracy problem with shaman's spirit link toten where its life exchange was considered healing done.\n\n -|cFFFFFF00-|r Boss segments now need to have at least 30 seconds to be added on the overall data.\n\n -|cFFFFFF00-|r When the segment limit is reach, segments with less combat time will be erased instead of the olders.\n\n -|cFFFFFF00-|r Added item level tracker.\n\n -|cFFFFFF00-|r Fixed window positioning when changing from Solo mode to Group mode.\n\n -|cFFFFFF00-|r Added an option for change the amount of lines on death log.\n\n -|cFFFFFF00-|r Added custom display for CC done.\n\n --]] -- ---|cFFFFFF00v3.12.2 (|cFFFFCC00Mar 30, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Raid Check (plugin): added item level.\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): bug fixes, it's important to update it.\n\n|cFFFFFF00-|r Time Line (plugin): bug fixes.\n\n|cFFFFFF00-|r Added option to disabled th eitem level tracker.\n\n|cFFFFFF00-|r Added item level on Raid Check plugin panel.\n\n|cFFFFFF00-|r Added Spirit Link Totem damage and healing on death log.\n\n|cFFFFFF00-|r Added the total of life exchanged by the Spirit Link Totem on player detail window.\n\n|cFFFFFF00-|r Added more spells for crowd control.\n\n|cFFFFFF00-|r Added scroll on bookmark panel.\n\n|cFFFFFF00-|r Fixed issue with Dps/Hps data broker which wasn't respecting the type of time (effective/activity) selected.\n\n|cFFFFFF00-|r Fixed few bugs when using the key bind to toggle windows.\n\n ---|cFFFFFF00v3.12.3 (|cFFFFCC00May 02, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Encounter Details (plugin): added a report button on Emotes tab.\n\n|cFFFFFF00-|r Encounter Details (plugin): improved Weakauras creation.\n\n|cFFFFFF00-|r Encounter Details (plugin): fixed the report text for interrupts and dispells.\n\n|cFFFFFF00-|r Truncated left text on bars now shows the entire text when hover over the bar.\n\n|cFFFFFF00-|r Added an extra option on minimap menu to disable the minimap icon.\n\n|cFFFFFF00-|r Fixed a problem when disabling the minimap icon through options panel.\n\n|cFFFFFF00-|r Fixed an issue with item level tracker feature.\n\n - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v3.12.3 (|cFFFFCC00May 02, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Encounter Details (plugin): added a report button on Emotes tab.\n\n|cFFFFFF00-|r Encounter Details (plugin): improved Weakauras creation.\n\n|cFFFFFF00-|r Encounter Details (plugin): fixed the report text for interrupts and dispells.\n\n|cFFFFFF00-|r Truncated left text on bars now shows the entire text when hover over the bar.\n\n|cFFFFFF00-|r Added an extra option on minimap menu to disable the minimap icon.\n\n|cFFFFFF00-|r Fixed a problem when disabling the minimap icon through options panel.\n\n|cFFFFFF00-|r Fixed an issue with item level tracker feature.\n\n|cFFFFFF00v3.12.2 (|cFFFFCC00Mar 30, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Raid Check (plugin): added item level.\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): bug fixes, it's important to update it.\n\n|cFFFFFF00-|r Time Line (plugin): bug fixes.\n\n|cFFFFFF00-|r Added option to disabled th eitem level tracker.\n\n|cFFFFFF00-|r Added item level on Raid Check plugin panel.\n\n|cFFFFFF00-|r Added Spirit Link Totem damage and healing on death log.\n\n|cFFFFFF00-|r Added the total of life exchanged by the Spirit Link Totem on player detail window.\n\n|cFFFFFF00-|r Added more spells for crowd control.\n\n|cFFFFFF00-|r Added scroll on bookmark panel.\n\n|cFFFFFF00-|r Fixed issue with Dps/Hps data broker which wasn't respecting the type of time (effective/activity) selected.\n\n|cFFFFFF00-|r Fixed few bugs when using the key bind to toggle windows.\n\n|cFFFFFF00v3.11.5 (|cFFFFCC00Mar 18, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed an issue with overall data where max/min amount for spells was being calculated wrong.\n\n|cFFFFFF00-|r Fixed a problem while reporting enemy damage taken.\n\n|cFFFFFF00-|r Fixed an issue with damage taken by spell where some spells wasn't shown.\n\n|cFFFFFF00-|r Few improvements on tooltips.\n\n|cFFFFFF00-|r Fixed a accuracy problem with shaman's spirit link toten where its life exchange was considered healing done.\n\n|cFFFFFF00-|r Boss segments now need to have at least 30 seconds to be added on the overall data.\n\n|cFFFFFF00-|r When the segment limit is reach, segments with less combat time will be erased instead of the olders.\n\n|cFFFFFF00-|r Added item level tracker.\n\n|cFFFFFF00-|r Fixed window positioning when changing from Solo mode to Group mode.\n\n|cFFFFFF00-|r Added an option for change the amount of lines on death log.\n\n|cFFFFFF00-|r Added custom display for CC done.\n\n|cFFFFFF00v3.10.10 (|cFFFFCC00Mar 10, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): done a calibration on endurance calculation.\n\n|cFFFFFF00-|r Raid Check (plugin): now also show information for 50+ stats runes.\n\n|cFFFFFF00-|r Fixed cooldowns spell targets on overall data.\n\n|cFFFFFF00-|r Fixed report custom displays where sometimes it didn't report spell links.\n\n|cFFFFFF00-|r Replaced old report line saying 'for the last X segments' with 'overall data'.\n\n|cFFFFFF00-|r Mini-displays on statusbar are now more responsible to right button click.\n\n|cFFFFFF00-|r Added Mage's Greater Invisibility as cooldown.\n\n|cFFFFFF00v3.10.8 (|cFFFFCC00Mar 02, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Improved aura creation.\n\n|cFFFFFF00-|r Custom display 'My Spells' now also show your pets.\n\n|cFFFFFF00-|r Fixed 'Raid Check' plugin food detection.\n\n|cFFFFFF00v3.10.6 (|cFFFFCC00Feb 24, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Encounter Details (plugin): several bug fixes and improvements.\n\n|cFFFFFF00-|r Encounter Details (plugin): added new tab showing enemy spells from the encounter with an aura creation panel.\n\n|cFFFFFF00-|r Encounter Details (plugin): added phase indicators on graphic tab, hovering over shows the damage and heal for that specific phase.\n\n|cFFFFFF00-|r Segments menu now also show the encounter try number plus the elapsed combat time.\n\n|cFFFFFF00-|r Several improvements on Overall Data, also, now it has an option to not save it when the character logoff.\n\n|cFFFFFF00-|r Player Details window now closes with right click on any bar.\n\n|cFFFFFF00-|r Fixed Nature's Vigil cooldown.\n\n|cFFFFFF00v3.9.12a (|cFFFFCC00Feb 16, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Roll back on combat detection after reset data, might be causing problems.\n\n|cFFFFFF00v3.9.12 (|cFFFFCC00Feb 13, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): got report buttons for Endurance and Deaths Overall Damage.\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): the Deaths and Endurance limits can now be changed under the plugin options.\n\n|cFFFFFF00-|r Chart Viewer (plugin): has been revamped and now it's less complicated to use.\n\n|cFFFFFF00-|r Time Line (plugin): added options to change the background color and scale.\n\n|cFFFFFF00-|r Raid Check (plugin): its window is now 'always on top'.\n\n|cFFFFFF00-|r Accuracy adjustments on overheal of Divine Aegis and Illuminated Healing.\n\n|cFFFFFF00-|r Removed healthstone from cooldown list, added Nature's Vigil.\n\n|cFFFFFF00-|r Enemies display now shows damage taken instead of damage done.\n\n|cFFFFFF00-|r Tooltip for enemies display now also show damage and healing done by the enemy.\n\n|cFFFFFF00-|r Added an option under miscellaneous to show neutral and hostile creatures on damage taken display.\n\n|cFFFFFF00-|r Added an option to ignore nicknames and always use character names.\n\n|cFFFFFF00-|r Enabling the display icon on title bar now makes the title text automatically move slightly to right.\n\n|cFFFFFF00-|r Fixed issue with skin changing when the window has the statusbar enabled.\n\n|cFFFFFF00v3.9.4 (|cFFFFCC00Feb 03, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added option 'Ignore Mass Toggle', when enabled the window won't be affected when hiding, showing or toggling all windows.\n\n|cFFFFFF00-|r Added window number for slash commands 'hide', 'show' and 'toggle'. Usage: '/details hide 1' to hide window 1.\n\n|cFFFFFF00-|r Removed keybinds for Open and Close, added toggle instead.\n\n|cFFFFFF00-|r Added slash command 'toggle'.\n\n|cFFFFFF00-|r Added display icons for all skins which still didn't have they.\n\n|cFFFFFF00-|r Improved 'Align with right chat' tool, now it also supports Forced Square skin.\n\n|cFFFFFF00-|r Improvements on Bookmark panel.\n\n|cFFFFFF00-|r Improvements on spec icons with transparency.\n\n|cFFFFFF00-|r Created custom spell for Living Bomb explosion.\n\n|cFFFFFF00-|r Fixed statusbar textures and mini displays.\n\n|cFFFFFF00-|r Fixed an issue with title bar buttons when toggling the titlebar anchor from bottom to top position.\n\n|cFFFFFF00-|r Fixed an issue with title bar text when toggling the statusbar position from bottom to top.\n\n|cFFFFFF00-|r Fixed yet another bug with avoidance tab on player detail window.\n\n|cFFFFFF00-|r Fixed the window ungroup button (above the resize one).\n\n|cFFFFFF00v3.8.13 (|cFFFFCC00Jan 26, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r RaidCheck (plugin): added an option to be able to use the report panel.\n\n|cFFFFFF00-|r You Are Not Prepared (plugin): added Auto Close the window, can be disabled through its options panel.\n\n|cFFFFFF00-|r Vanguard (plugin): Added Options Panel.\n\n|cFFFFFF00-|r Details! is now using 'LibWindow-1.1' to save and restore the positioning of the windows, bug might appear, please report if something weird happen.\n\n|cFFFFFF00-|r Improved specialization detection in order to try detect spec changes." + + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v3.12.4 (|cFFFFCC00May 03, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Encounter Details (plugin): added a report button on Emotes tab.\n\n|cFFFFFF00-|r Encounter Details (plugin): improved Weakauras creation.\n\n|cFFFFFF00-|r Encounter Details (plugin): fixed the report text for interrupts and dispells.\n\n|cFFFFFF00-|r Crowd control by Pets now is merged with its owner.\n\n|cFFFFFF00-|r Truncated left text on bars now shows the entire text when hover over the bar.\n\n|cFFFFFF00-|r Added an extra option on minimap menu to disable the minimap icon.\n\n|cFFFFFF00-|r Fixed a problem when disabling the minimap icon through options panel.\n\n|cFFFFFF00-|r Fixed an issue with item level tracker feature.\n\n|cFFFFFF00v3.12.2 (|cFFFFCC00Mar 30, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Raid Check (plugin): added item level.\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): bug fixes, it's important to update it.\n\n|cFFFFFF00-|r Time Line (plugin): bug fixes.\n\n|cFFFFFF00-|r Added option to disabled th eitem level tracker.\n\n|cFFFFFF00-|r Added item level on Raid Check plugin panel.\n\n|cFFFFFF00-|r Added Spirit Link Totem damage and healing on death log.\n\n|cFFFFFF00-|r Added the total of life exchanged by the Spirit Link Totem on player detail window.\n\n|cFFFFFF00-|r Added more spells for crowd control.\n\n|cFFFFFF00-|r Added scroll on bookmark panel.\n\n|cFFFFFF00-|r Fixed issue with Dps/Hps data broker which wasn't respecting the type of time (effective/activity) selected.\n\n|cFFFFFF00-|r Fixed few bugs when using the key bind to toggle windows.\n\n|cFFFFFF00v3.11.5 (|cFFFFCC00Mar 18, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Fixed an issue with overall data where max/min amount for spells was being calculated wrong.\n\n|cFFFFFF00-|r Fixed a problem while reporting enemy damage taken.\n\n|cFFFFFF00-|r Fixed an issue with damage taken by spell where some spells wasn't shown.\n\n|cFFFFFF00-|r Few improvements on tooltips.\n\n|cFFFFFF00-|r Fixed a accuracy problem with shaman's spirit link toten where its life exchange was considered healing done.\n\n|cFFFFFF00-|r Boss segments now need to have at least 30 seconds to be added on the overall data.\n\n|cFFFFFF00-|r When the segment limit is reach, segments with less combat time will be erased instead of the olders.\n\n|cFFFFFF00-|r Added item level tracker.\n\n|cFFFFFF00-|r Fixed window positioning when changing from Solo mode to Group mode.\n\n|cFFFFFF00-|r Added an option for change the amount of lines on death log.\n\n|cFFFFFF00-|r Added custom display for CC done.\n\n|cFFFFFF00v3.10.10 (|cFFFFCC00Mar 10, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): done a calibration on endurance calculation.\n\n|cFFFFFF00-|r Raid Check (plugin): now also show information for 50+ stats runes.\n\n|cFFFFFF00-|r Fixed cooldowns spell targets on overall data.\n\n|cFFFFFF00-|r Fixed report custom displays where sometimes it didn't report spell links.\n\n|cFFFFFF00-|r Replaced old report line saying 'for the last X segments' with 'overall data'.\n\n|cFFFFFF00-|r Mini-displays on statusbar are now more responsible to right button click.\n\n|cFFFFFF00-|r Added Mage's Greater Invisibility as cooldown.\n\n|cFFFFFF00v3.10.8 (|cFFFFCC00Mar 02, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Improved aura creation.\n\n|cFFFFFF00-|r Custom display 'My Spells' now also show your pets.\n\n|cFFFFFF00-|r Fixed 'Raid Check' plugin food detection.\n\n|cFFFFFF00v3.10.6 (|cFFFFCC00Feb 24, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Encounter Details (plugin): several bug fixes and improvements.\n\n|cFFFFFF00-|r Encounter Details (plugin): added new tab showing enemy spells from the encounter with an aura creation panel.\n\n|cFFFFFF00-|r Encounter Details (plugin): added phase indicators on graphic tab, hovering over shows the damage and heal for that specific phase.\n\n|cFFFFFF00-|r Segments menu now also show the encounter try number plus the elapsed combat time.\n\n|cFFFFFF00-|r Several improvements on Overall Data, also, now it has an option to not save it when the character logoff.\n\n|cFFFFFF00-|r Player Details window now closes with right click on any bar.\n\n|cFFFFFF00-|r Fixed Nature's Vigil cooldown.\n\n|cFFFFFF00v3.9.12a (|cFFFFCC00Feb 16, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Roll back on combat detection after reset data, might be causing problems.\n\n|cFFFFFF00v3.9.12 (|cFFFFCC00Feb 13, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): got report buttons for Endurance and Deaths Overall Damage.\n\n|cFFFFFF00-|r Advanced Death Logs (plugin): the Deaths and Endurance limits can now be changed under the plugin options.\n\n|cFFFFFF00-|r Chart Viewer (plugin): has been revamped and now it's less complicated to use.\n\n|cFFFFFF00-|r Time Line (plugin): added options to change the background color and scale.\n\n|cFFFFFF00-|r Raid Check (plugin): its window is now 'always on top'.\n\n|cFFFFFF00-|r Accuracy adjustments on overheal of Divine Aegis and Illuminated Healing.\n\n|cFFFFFF00-|r Removed healthstone from cooldown list, added Nature's Vigil.\n\n|cFFFFFF00-|r Enemies display now shows damage taken instead of damage done.\n\n|cFFFFFF00-|r Tooltip for enemies display now also show damage and healing done by the enemy.\n\n|cFFFFFF00-|r Added an option under miscellaneous to show neutral and hostile creatures on damage taken display.\n\n|cFFFFFF00-|r Added an option to ignore nicknames and always use character names.\n\n|cFFFFFF00-|r Enabling the display icon on title bar now makes the title text automatically move slightly to right.\n\n|cFFFFFF00-|r Fixed issue with skin changing when the window has the statusbar enabled.\n\n|cFFFFFF00v3.9.4 (|cFFFFCC00Feb 03, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added option 'Ignore Mass Toggle', when enabled the window won't be affected when hiding, showing or toggling all windows.\n\n|cFFFFFF00-|r Added window number for slash commands 'hide', 'show' and 'toggle'. Usage: '/details hide 1' to hide window 1.\n\n|cFFFFFF00-|r Removed keybinds for Open and Close, added toggle instead.\n\n|cFFFFFF00-|r Added slash command 'toggle'.\n\n|cFFFFFF00-|r Added display icons for all skins which still didn't have they.\n\n|cFFFFFF00-|r Improved 'Align with right chat' tool, now it also supports Forced Square skin.\n\n|cFFFFFF00-|r Improvements on Bookmark panel.\n\n|cFFFFFF00-|r Improvements on spec icons with transparency.\n\n|cFFFFFF00-|r Created custom spell for Living Bomb explosion.\n\n|cFFFFFF00-|r Fixed statusbar textures and mini displays.\n\n|cFFFFFF00-|r Fixed an issue with title bar buttons when toggling the titlebar anchor from bottom to top position.\n\n|cFFFFFF00-|r Fixed an issue with title bar text when toggling the statusbar position from bottom to top.\n\n|cFFFFFF00-|r Fixed yet another bug with avoidance tab on player detail window.\n\n|cFFFFFF00-|r Fixed the window ungroup button (above the resize one).\n\n|cFFFFFF00v3.8.13 (|cFFFFCC00Jan 26, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r RaidCheck (plugin): added an option to be able to use the report panel.\n\n|cFFFFFF00-|r You Are Not Prepared (plugin): added Auto Close the window, can be disabled through its options panel.\n\n|cFFFFFF00-|r Vanguard (plugin): Added Options Panel.\n\n|cFFFFFF00-|r Details! is now using 'LibWindow-1.1' to save and restore the positioning of the windows, bug might appear, please report if something weird happen.\n\n|cFFFFFF00-|r Improved specialization detection in order to try detect spec changes." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails!:|r " diff --git a/classes/classe_custom.lua b/classes/classe_custom.lua index 38abcae0..3203b0ab 100644 --- a/classes/classe_custom.lua +++ b/classes/classe_custom.lua @@ -614,19 +614,19 @@ actor_class_color_r, actor_class_color_g, actor_class_color_b = self:GetBarColor() end end - + if (instancia.row_info.texture_class_colors) then esta_barra.textura:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) end if (instancia.row_info.texture_background_class_color) then esta_barra.background:SetVertexColor (actor_class_color_r, actor_class_color_g, actor_class_color_b) end - + if (self.classe == "UNKNOW") then esta_barra.icone_classe:SetTexture ("Interface\\LFGFRAME\\LFGROLE_BW") esta_barra.icone_classe:SetTexCoord (.25, .5, 0, 1) esta_barra.icone_classe:SetVertexColor (1, 1, 1) - + elseif (self.classe == "UNGROUPPLAYER") then if (self.enemy) then if (_detalhes.faction_against == "Horde") then @@ -1724,7 +1724,7 @@ desc = "Show the crowd control amount for each player.", source = false, target = false, - script_version = 6, + script_version = 7, script = [[ local combat, instance_container, instance = ... local total, top, amount = 0, 0, 0 @@ -1732,7 +1732,7 @@ local misc_actors = combat:GetActorList (DETAILS_ATTRIBUTE_MISC) for index, character in ipairs (misc_actors) do - if (character.cc_done) then + if (character.cc_done and character:IsPlayer()) then local cc_done = floor (character.cc_done) instance_container:AddValue (character, cc_done) total = total + cc_done diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 4f60df8a..a6205510 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -2349,6 +2349,8 @@ function _detalhes:MontaSoloOption (instancia) end -- ~menu + +local wallpaper_bg_color = {.8, .8, .8, 0.2} function _detalhes:MontaAtributosOption (instancia, func) func = func or instancia.TrocaTabela @@ -2383,14 +2385,14 @@ function _detalhes:MontaAtributosOption (instancia, func) CoolTip:AddIcon ("Interface\\AddOns\\Details\\images\\atributos_icones", 1, 1, 20, 20, p*(i-1), p*(i), 0, 1) if (i == 1) then - CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\WarlockDestruction-TopLeft]], {1, 0.22, 0, 0.55}, {1, 1, 1, .1}) + CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\WarlockDestruction-TopLeft]], {1, 0.22, 0, 0.55}, wallpaper_bg_color) elseif (i == 2) then --CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\PriestHoly-TopLeft]], {0, .8, 0, 1}, {1, 1, 1, .1}) - CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\bg-priest-holy]], {1, .6, 0, .2}, {1, 1, 1, .2}) + CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\bg-priest-holy]], {1, .6, 0, .2}, wallpaper_bg_color) elseif (i == 3) then - CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\ShamanEnhancement-TopLeft]], {0, 1, .2, .6}, {1, 1, 1, .1}) + CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\ShamanEnhancement-TopLeft]], {0, 1, .2, .6}, wallpaper_bg_color) elseif (i == 4) then - CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\WarlockCurses-TopLeft]], {.2, 1, 0, 1}, {1, 1, 1, .1}) + CoolTip:SetWallpaper (2, [[Interface\TALENTFRAME\WarlockCurses-TopLeft]], {.2, 1, 0, 1}, wallpaper_bg_color) end local options = sub_atributos [i].lista @@ -2436,7 +2438,7 @@ function _detalhes:MontaAtributosOption (instancia, func) end --> set the wallpaper on custom - GameCooltip:SetWallpaper (2, [[Interface\TALENTFRAME\WarriorArm-TopLeft]], {1, 0, 0, 1}, {1, 1, 1, 0.1}) + GameCooltip:SetWallpaper (2, [[Interface\TALENTFRAME\WarriorArm-TopLeft]], {1, 0, 0, 1}, wallpaper_bg_color) if (#_detalhes.custom == 0) then CoolTip:SetLastSelected (2, 6, 2) @@ -2465,7 +2467,7 @@ function _detalhes:MontaAtributosOption (instancia, func) end CoolTip:SetLastSelected (1, last_selected) - CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\DeathKnightBlood-TopLeft]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) + CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\DeathKnightBlood-TopLeft]], {.6, 0.1, 0, 0.64453125}, wallpaper_bg_color, true) --CoolTip:SetWallpaper (1, [[Interface\ACHIEVEMENTFRAME\UI-Achievement-Parchment-Horizontal-Desaturated]], nil, {1, 1, 1, 0.3}) return menu_principal, sub_menus diff --git a/core/parser.lua b/core/parser.lua index c6d7ba5e..cd1f4301 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -1285,6 +1285,7 @@ end end + -- ~crowd control ~ccdone function parser:add_cc_done (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname) ------------------------------------------------------------------------------------------------ @@ -1294,10 +1295,14 @@ ------------------------------------------------------------------------------------------------ --> get actors - local este_jogador = misc_cache [who_name] - if (not este_jogador) then - este_jogador = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true) - misc_cache [who_name] = este_jogador + + --> main actor + local este_jogador, meu_dono = misc_cache [who_name] + if (not este_jogador) then --> pode ser um desconhecido ou um pet + este_jogador, meu_dono, who_name = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true) + if (not meu_dono) then --> se não for um pet, adicionar no cache + misc_cache [who_name] = este_jogador + end end ------------------------------------------------------------------------------------------------ @@ -1327,6 +1332,44 @@ spell.targets [alvo_name] = (spell.targets [alvo_name] or 0) + 1 spell.counter = spell.counter + 1 + + --> add the crowd control for the pet owner + if (meu_dono) then + + if (not meu_dono.cc_done) then + meu_dono.cc_done = _detalhes:GetOrderNumber() + meu_dono.cc_done_spells = container_habilidades:NovoContainer (container_misc) + meu_dono.cc_done_targets = {} + end + + --> add amount + meu_dono.cc_done = meu_dono.cc_done + 1 + meu_dono.cc_done_targets [alvo_name] = (meu_dono.cc_done_targets [alvo_name] or 0) + 1 + + --> actor spells table + local spell = meu_dono.cc_done_spells._ActorTable [spellid] + if (not spell) then + spell = meu_dono.cc_done_spells:PegaHabilidade (spellid, true) + end + + spell.targets [alvo_name] = (spell.targets [alvo_name] or 0) + 1 + spell.counter = spell.counter + 1 + end + + --> verifica a classe + if (who_flags and _bit_band (who_flags, OBJECT_TYPE_PLAYER) ~= 0) then + if (este_jogador.classe == "UNKNOW" or este_jogador.classe == "UNGROUPPLAYER") then + local damager_object = damage_cache [who_serial] + if (damager_object and (damager_object.classe ~= "UNKNOW" and damager_object.classe ~= "UNGROUPPLAYER")) then + este_jogador.classe = damager_object.classe + else + local healing_object = healing_cache [who_name] + if (healing_object and (healing_object.classe ~= "UNKNOW" and healing_object.classe ~= "UNGROUPPLAYER")) then + este_jogador.classe = healing_object.classe + end + end + end + end end function parser:buff_refresh (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spellschool, tipo, amount) diff --git a/core/windows.lua b/core/windows.lua index fe99e7eb..eb4a612b 100644 --- a/core/windows.lua +++ b/core/windows.lua @@ -2290,7 +2290,7 @@ -- - GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, backgroundColor, _detalhes.tooltip_border_color) + GameCooltip:SetBackdrop (1, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0.64453125, 0}, {.8, .8, .8, 0.2}, true) GameCooltip:SetOwner (self, "topright", "bottomleft") diff --git a/functions/link.lua b/functions/link.lua index 67c5388d..8c366863 100644 --- a/functions/link.lua +++ b/functions/link.lua @@ -251,15 +251,18 @@ function _detalhes:CreateWeakAura (spellid, use_spellid, spellname, name, icon_texture, target, stacksize, sound, chat) + --> check if wa is installed if (not WeakAuras or not WeakAurasSaved) then return end + --> check if there is a group for our auras if (not WeakAurasSaved.displays ["Details! Aura Group"]) then local group = _detalhes.table.copy ({}, group_prototype) WeakAuras.Add (group) end + --> create the icon table local icon = _detalhes.table.copy ({}, icon_prototype) icon.id = name @@ -342,6 +345,7 @@ tinsert (icon.trigger.spellIds, spellid) end + --> if is a regular auras withour using spells ids if (not use_spellid) then icon.trigger.use_spellId = false icon.trigger.fullscan = false @@ -349,8 +353,7 @@ icon.trigger.spellIds = {} end - --print (use_spellid, icon.trigger.use_spellId, icon.trigger.fullscan) - + --> check stack size if (stacksize and stacksize >= 1) then stacksize = floor (stacksize) local add = _detalhes.table.copy ({}, stack_prototype) @@ -358,20 +361,22 @@ _detalhes.table.deploy (icon, add) end + --> using sound if (sound and sound ~= "" and sound ~= [[Interface\Quiet.ogg]]) then local add = _detalhes.table.copy ({}, sound_prototype) add.actions.start.sound = sound _detalhes.table.deploy (icon, add) end + --> chat message if (chat and chat ~= "") then local add = _detalhes.table.copy ({}, sound_prototype) add.actions.start.message = chat _detalhes.table.deploy (icon, add) end + --> check if already exists a aura with this name if (WeakAurasSaved.displays [icon.id]) then - -- already exists for i = 2, 100 do if (not WeakAurasSaved.displays [icon.id .. " (" .. i .. ")"]) then icon.id = icon.id .. " (" .. i .. ")" @@ -380,17 +385,12 @@ end end + --> add the aura on our group tinsert (WeakAurasSaved.displays ["Details! Aura Group"].controlledChildren, icon.id) + --> add the aura WeakAuras.Add (icon) - - local options_frame = WeakAuras.OptionsFrame and WeakAuras.OptionsFrame() - if (options_frame and options_frame:IsShown()) then - --WeakAuras.ToggleOptions() - --WeakAuras.ToggleOptions() - else - --WeakAuras.OpenOptions() - end + end function _detalhes:OpenAuraPanel (spellid, spellname, spellicon) diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index 5e7cf6bf..9e833915 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -59,7 +59,8 @@ function _detalhes:ScheduleUpdate (instancia) end local menu_wallpaper_tex = {.6, 0.1, 0, 0.64453125} -local menu_wallpaper_color = {1, 1, 1, 0.1} +--local menu_wallpaper_color = {1, 1, 1, 0.1} +local menu_wallpaper_color = {.8, .8, .8, 0.2} --> skins TCoords @@ -4852,7 +4853,6 @@ local build_mode_list = function (self, elapsed) CoolTip:SetType ("menu") CoolTip:SetLastSelected ("main", parameters_table [3]) CoolTip:SetFixedParameter (instancia) - CoolTip:SetColor ("main", "transparent") CoolTip:SetOption ("TextSize", _detalhes.font_sizes.menus) CoolTip:SetOption ("TextFont", _detalhes.font_faces.menus) @@ -5031,9 +5031,9 @@ local build_mode_list = function (self, elapsed) _detalhes:SetMenuOwner (self, instancia) - CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], menu_wallpaper_tex, menu_wallpaper_color, true) CoolTip:SetBackdrop (1, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) CoolTip:SetBackdrop (2, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) + CoolTip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], menu_wallpaper_tex, menu_wallpaper_color, true) show_anti_overlap (instancia, self, "top") diff --git a/images/modo_icones.tga b/images/modo_icones.tga index 508e464e8ec75b0ba6e9da2b01308f2aa83624c5..661c35fea7a77e3908174029297233472c36a7d5 100644 GIT binary patch literal 15057 zcmZ8|2YeLO`u3UG-m=-vW;dJOd#|MT-XOF6G^N5X`1umuc!EBtZRI%?ooQu!P@Qy?-p2>?qchy0k|n0q z$jqo$F-xFMvQ`92ep^!|ztaWG@3u_lcTXO(JYB-f7mJx;Y6R2UwM<9-#53qDic;r# zocOwkYGt;Tx@2G~42Jq?urOx!N239Z*<8MJ9j>eJ{GWY)nQFL)KJ+NmcdD4gVncDG zL|i{&&`f#{AHGpqRT7i^wURc@Pu5pCWy}0n3B8tVZ&k5?@0wV^56#R@$8VdMv6h->hQBCKtNMnC>qLY4A;v{5q<9Ey+j5Xz;0$(N~C4t&z?6P(kW4Gx^EP>R>D& zm@y|h7aYTw9UV1UWo1^>s1LHBYW{a{G%#ul5@9JQ%_!4Q+EC(9bjsi$CnjNRD!Wcn z7dT|&O{tRk?JDN~Z6kAFOhG6i|88bsI7VPx5x5?X?{wYquO?>OpT+zzTZBFmDT$I= z{cFzF;tLB@P(a<3sV%h%6Q;(5=`aifiV?#!Ve*U^ssY2(GH19NLshe|1T_l`(_&Kf z0HT&@fgpOG>X9VrC93^y`k)Tbe3EGCJWQj}wB+UGo$BuH7Lk#W|4^&dwRpmg-{cGU z@QHpeon@oQm;sedCus`;WW(Vc$%27eF;E8z2_Oa~1%uA}q>h!nTEVK{uVEFqCmYwI z@SE$?IuY;f6CuNCZkW zN*D_abuw3k9}AAPvam!t4+FjvAhLLfBn&8UpdJhA(~?MDq`DQ6m~lc)(tKETI$es{ zY@Rc8=+H~2PMs3?e$r?(wplEeK$FR&(Q37LSYrEdGt)sBv>2R5oAXq1YT6Iw<>lX{ zrX?T49r3s>?V`IhzFEaX*GHxtRYVhnO8Q3dmI&yWd#WAlkS^auk5dEGJ++@k(&gA? z1u;;aBTn7zfaEcc*DCZn;%q}RV;vjsfo z4i0{{sHk9|xV-#Id42npuBmgbG<0G@KovSh;>7S#up(u(a-B#^ZzOV(6m_wQs?MeAjgWnjLpH5R zmTVu^vOugH7v?wuG?M*F1sl@-Bh zEHy<$ZnVTltTaYO?9&E^uacbMH-K>JG2>Ot9X(DCaGx*+xrLwGC9E!|u(<+-!EEM| zO4W*X{88i=Xk@-w4{2QS)4CUb9DMMJw+0>7un+s`C(xb5jE?BrG&)nevabA8=n+<% zIwT~-oS2vxjlUMG$o22M^NuJjE#>&W0N3+yv;zrRAVI<$Ga!NW(*oK;6$fb5s>-H@ zO7HNo6L>>YJI~2V=P9XaKSe~x|CpUu=*cfE_9kcLc~T2X28UEP4HPyE9jIs>b**yP zxU2rb;lCsoRR5e`SpFS4h)y!iR;o1wg_bhG05Zh1s?<6Vu8tY~^q77kYpfizjtF0} zxwMiiLN7T&bj)H$u^CWI_}zrnPsIYLn3&OGB=VL5g4GIq)SACoU<0+9N3DWx)a8Ma z{-Hw2`e{82!VE_O9WhX-sb`8*!&;I<_S6(*KRLXq`ky0*wR}BsQrB1AbEY0|9+K8~ zG*_C4d)t7F3Y6Th8d%~JB~tjs63O*3IC(=dv%vJxV?h~P&b*( z72Xw5n00f_!Rn97kC*VO!{wspNR=qtUn1VOH9NID5>yAp`Y565QE5DEzR@Cy+ zhT%MYNToL+tI(TM+2k#68SSm^81HH7n&Fw;*Y9baFnb`srtM1Qh$)wcj_mq1GAim0 z^ejoC?{M@KQ-=>)cCv~LF+Y?5tbV8D?+lWHV}hjUbe9ww9|))fN`YYxlt9TH6(j{k zIkDv2xE>;f#D(BI6p#u7RKlSQg8?@eh}a*$8&Q|m$0*vrprfq10`vu4U@Ets>Go$y zX22y75FqHJp%i^o$C_4`hOeJ8zU%FY6UO~8Y24VKXHJ{;^M>_nUz{^$=(-v4+Ie3z zut|7kBuXoYs2&Qa=!068{6-av_-73ZS`yD}CN)e7N!DSM8U;3Fz37Zu0N(KZT zKxlDjR?6j;{Y`w*g^8l`m64+1#X3>Ey+|0tqXdX$4OI97sP6S4N%7}PdrQT*d%Hx# zg*q|pnKm(WQ=15MyH_;CuvQf;Ca&vKjutba6kK)Ao6SQ~NzCEEZ-A z{I2G}JKh;@U-8a<>nBg+y2Bo|&NzBEJ!*$qAi80o6e%k!%TQKU=7uUS0%TUc`R1E{ z^!4?Ly1KfR?TU%T6@tY$zH&+uE7bihEF`LcC3oae0?In@LBcoK4o28K@S8<@BC z@W8N1v#v~@GVL=c7#OxJP|*w$=#N2?En3fHiUefnva>6mTk&l7^H>aoGh@ zOhzug=U+b-NRcV|Qg~t^;8xNvg(sC7rKr?0d@BRkiosKvDA53vL$bR~;4&Ymh>w8b zwIr`0C>QBThoH%y)SN9VY%pBK!T z`Pz+R+P3s2=@-Fxo`d^uKCz?Gp(X&UE_e=ch3tE#F@08CU< zQ&Z=L4IB1fxNw2=muP8ed1>OriEF#Mx>`CqI-)8oE6oK31*)W^BnF+wtX8W6D6(o4 z76}Xra(|OoQaKo$l;ugv%;gCgSv)Z{jmM^D^PtFhZ(w*V_YaNd_Auq#6B3)|Nz5tp zM5pEsHjJO^S-$Tq(<=s+xS+|^7HCIY4>6TK8yQQRp`2bpv6q~gG;OmtV@_KRJ z3((C)9pk}Y=-GVH@T zY37z;`S-0_zVxf<)23hR?pydn_YGtB-?flFg_OGcJ3))^9xO zX-3IEU&O*9OmJ}|*$;*fc}yB+wyEJ-Xy7*J0V_L;Oif@h8DPrL&3;MlEBXC-qWyfE zXnd(&jQQILQP5u^bg>bfg(u#_B9gX&-)=WX1U{WHCrdQk+aNlg>kwTpjuN#S>z*}- z2F!(mPseDjkS=KfpUw9St)`9ip#=riz_z%Ww&Z#Ku@Jm(W<5{RFi%08+pFj~2ay!4 zU6zuPB7>kbz>uS{u`ze*)Twjcd+)s~mo8lr`}gk`D_5=*z}C63W5>=LH*Q=pNGk~U z>Whnu<@oq`1z-OD{tDswu$7dY`qhY0;|F0AUV$w>Fn(-1-@9`&A3L&B{ z(wI74Uyd-k)@6C63n#N4O+|oMiXO&7ZmyGLa zWc`FKD-BtpN28w!3M&f0YK7)K$bv!yi;5F0CQ-21qyZL}@;b@|7MD!ru|JRNq_~vF zj8a_cV<;Esixd&}sALa31z1f2W90x+A(A}^d}twy3;`ds+fO|x0)a|}0g?u0li|w- z=1)d3a1{%DWTVu8en!K2n!CC>;epNT`oCMba@F9bZQFicI<<4_z4@v+z)Uypn~VFp z|5?lC&Pp_HZ7az+{&1sn1%4y?Dh8%P19h?u1GPZs>3}CK@T3NwwD8UiEGjL4#bzb5 zxa^_Of!hsn0l&xg#)|xVb4B^{rJ~}cG7-NdNoXS7zrch#3%c3|iaV(Zw*D)0YPiV3 zeKjvviP5jNio%;qju@j{H^3xIg(YB9XpvUYpW&OQY1j&`bSjOp&sn#`n{nf#eB|y^ ze8It^ynFsQe&)n_K7Le_N8v0dDX*xgC@DWbU)|i?Yy@V)h7B9mvSi7U+rIz)d-3Cs zKZ-BD_(E*ivPDdvK3xD;hsKNUDwpIhalb{gUp9+y|aWZ=pwG|lTa(=Yv z#=e0qo7Z@H7tHcH>{d@(a~W@JYT$9H)qF@{GtbLyf}J&t4{fgWu30wI`{-j2@$%9F zPfS6LXWIJPJsa=1;2AM<@xZLUm6zjUqYh$_SqjE1G}nL^%t;;MD@HYJBtI!6HWi#T zgGIzV%zD-ew(Epox7;b%)?P^cQys)=2c=6wBq{Wx2R7>wJ)UBG7;@DSTl7DXg%xUM& z)H^o=U_$}0Y$7eEK@|W3F(am-2e`BVml{CP09;0Z%gGY*QdnYs3k!aollejRE zm!2*b4X@OSMwE>883Mo)7{wVFSVy2sj~Sz_BCb1L6rL;;&6gU*c#vD!%@uo$F(G4E zV0bDEa67Q3^bjpMvsg+pC|Y6)#(erwV+%hN+}Q6e-Sc;zRanc5B5b^T%4#0o_Z;8( z>f8L2OZ#}|$X2dILlmqLhe79QM~oO@n=)le%IMLfr{8nWJzreCdR6@P+iwC!msq`e zwE(`vv}x14_FC6sW+GQE1&5U#Q3dYL89s|haTY3cFa+jgwro7ODg!7+)Rn(3=N z8;)P}tk`$TQ$M`xa!bdUUn%H_dbNu2cJVeZo?I`5B{oT6 z2{8bi6^<2f8M%nt7qHR&7PaLZoIr`(ujY~t4MxgY;oqpqiZUj9ogRc#24@Fw=p*EG!}4&5{e#S<;Z92m&kz)b0Y*yk)0K zV0Hm&FV%_sTl0jg-YwKN(+OrUUeJa3opIF$iKNBJqTsF}qVZCb=mOMAx0Y`(MibP+ z@}X;k6<thk-`mS~(4#>F4~N4c4H+^-)85{08b5w~=%h)LN6An~sQndHq3Apx$;|=y#tK`n~rF z{qd)S;p{s?vv?Z^Aa|hdHb6T`az_V1zml&(4jsi~Df*%4^a`h>xm3aQ01m~0Lja<9 zoaf-Y3Z(;O$_F)U`Ra!JXZP;icXjV=`#i@E9~j)XXSZj=`gH@{bLU>3Ij8&AzD0|^ zo7LU@&!tNiJvF(l`WTco#VayVA`#ULG;38bp5X70M`CxY!EqWGYDN~GWP`C51#lL^ z7Z?j(Ty2Q69ZTp<;6rZD7yX4t3PeEmwoDN>J65>sg04EsT)&143l%Z5Vnx!jWRY=8 zrYJfNmON1-vU_tjYJ=>vQA-P$FB>VMFf4LE#Y9A?4kHKrWFH(A_A|?}icQGO&LV`!2 z1FHocLuPSJc!$>(QRAI5VYt`NqVqJ(+01vGd5y0=eAY8&YWLO7F=M|lXk<$M zq$;Y;!&VTD2yKedH{(JB9+>TGjApRDcaRrcNX%QdI89c0+JvkJ;h8)tT#lGO0IFWCLnhH)o3eEZ|Y1 zv+SF*M1S_p*}^~j<{Xi|En8%5%@TP#@XQ5&xqxFJ z#!L)}^rH`s#BjutPtef^ONy(y3Puf7tvkWBX3K8@cI)r!dOP^yt`wdV>)_UcS^Urg zck^#v*~+i|{vMw(YX(|N^2;xO`t;LJ#m_(g zEM9!^MX_qtDlucm3<1R~C@lZ@O!P`s+hld&R0+)VeS-h`)nokA zPv78GRb?D`n{!H#R*R8QVn_wuYXCy+AkHL&SB61PukZimmtTbKhaY|rFeVkMBm;t5$+*QV?O$HXpR0qSTn|4 zwWdrMjL&KD%%47i8y$t7@cgknscts#IG#rpP2>^9lejLd*1KfkRNmHD#>*!z=9^DE z&8MzA=ovbG`n9Et7hFO1a1v@R{x6);0@h*5OjZqoz5&2#9!RcFPRV*%fAD@`eC2bY zKk=l{EL!JLcQ5%&bIW0&z3XA2J#t!TZ$BZlx85Z*+l~kg@TfiYywHF^HH)_jb?-)@ z-grQ0b^*&{r+B2q{Pm#ZI+&NSSPyor3q7KSK5gzxQRy9e$#T9(@&^`!fhY1_2%kiH zEx6YCRiiZf$x-n;wyo&IOue%}I|g1)J)X@&iG}Oz93L+E0g>?1l$;}Z6XdoMfg|gMEfji_TQXZq3{Llo zn40+Ci`0j?d9*}SKU*zop05#A&s2%(XR1ZxGYz8Usbr(7jb)3k1P2}soK!zh9s*D*?*@gzFs%LEwgcH7l?Ge`6O zo}oO-D)C;NU;X73e)Xr<`1fDG%O_0ef*xm*LSvK=Qh_w}fTR_WjDUGrjN?2I;$r|D z|M$QDEr>Xww*{G$q|4!13uGw7=bwKr{`lh$aryFP0w#y|{Wu77S$%!|9MsW~k&%%T z6B82*6VpiTp!k4^M6lz>sJeLrF-;2wJH|}pogFP)7uoDhXwTKbb>T2?5;N!X{{CCn^D>ihx5 zM0n9-1jPYdY^&4WInHdK-Xt=Q*L-f3MK&y<2E*2RT0c zw$MKC@>SLFNe{{u?RQHB4P4c`j%!aoE!6W@48k_(M^vy1#|W61egGu02Y%%5(4=Tl z%o#S>ABoE#08ok507T^=&Q|0eI^U_0XFfDEdhhLP`aasQrvK_QPh1@M?egU-@Bic7 z&z`yKwlil&ByD@UMqY?C+2p57*>LPJX}~rFvH~dQ5e?!DninToEucoo6su6#i{XpQ zMO>#&19}q(Nan!do})HfzK$3Y=`BU%ulm7iQT<|-sCpXZ$tqEKu~Jk$0cyNhCz>8_ zL}?Pu7jQ&ryx1Vxo@*6jUKuS$Ju*TRtt>tokR7&0vN>9r&6$X0XosrMDpXBy#0>n0 zGL>Am-p^vZy5Yuge9G{A9;j!0_2Rkw+Q9Ez;P3L4D?BtTY*4|XmBxWT6SAVgz)xOL zQPFrrbGE{s9QfpuPlU(gQ80Jz+&OXZ;6br%+cvR&{d#fBEw>1=Is3^EGW_(@PvY#^ zvjVF8G7=xpfM5@|wY5#p&dweJUz^eqBrzWn1E6r2&XxUpYS+5K%*GjmH}=fsQTc6N zbIee0a?MO{Y}qWHKc=4-j$O{3pv~ngdU$ao#jxu4nR`1p`Tm36G$v zGzE=i3K~g$fu>;ZnG~c%rB=xqc`Nj%pAp*iyI+!H;@3j$cFXByi{LrlB4-r}^_G1? zbL4)ZJ^i%Me|Sx3R_}RUN*S_MN-XF{e0qbFT6Cve(=nhud+D0?t_%N$%I-xegfm6? zG*Xjne|-nC}&Pj}vV{Mv1M z_YXdG;ll49zW3JO@7cWM;DfdHrLaFK8a)Be4FdwJk+jW+4VesNM!ZxZIlE&dD|Sqg z+9u@&05D0B0BxBdawH{gM2{kY#Cjm5M`JeL8JOkb>1)$P+1WBt{WQ=BGW;JD0(s4Z z!p8`WjiTknX3_R?t7tjXEOL7D{^g$%x={`Y90gY@i}_Os#cn|T%C;)Nk8ntSj-s}2 z#yQi6g}AQXv|3S97TF93G8k## z#7RITT}mk`lXGh8<(#@%IC^j|l<*0m`}9|#UbyPG=ciBeeHBFW+0hVLAAaQFYX|r3yL$I+dp_7ZZN#33%XB?J7p2uk zqqJcARpn#FQr>HoEcrO%Q?p|vN1k1>BF94duB_Ff;ZLFPKx_-jM)GVn+~}VH9ZnR7Xw8pEz-^r{VZx2D z1A7t0>4QzU1}^h*KxzN8&p!JD{2GN4aV|D(+9Z}QU#|EwAUuI!_GUzlYOoT6(2iE2 zV}G?qJ1cI&rps}oHVu~N<_=DrFop-GHhRK~CVC4;%=gBYOyK1=tl@b>Z{P^R@s^qr zUOaw@w|2@>j(k%SYMP=5yi^f5RydY5L-tk$+sq6?b3^530a9g%>J$JzaY(jB$XV5K zQf6f}l5LZ5ZM77izFRIRnJyGW+xns+z6Zib{ z{Qajd_b;6H^}K?pqfeE|^FU_faDN9NTK~5ysdPrPlwInS6YGQIh$O2VWKv63K{-Y!t(u zXcrw%4i&>+>JYdfpCWWG)llqqs0aRh17sD zh19lF4|Jh!*VWa1U3}4$3f@>4%vbbu@@v#es2$!G(*IF#&7@Fb=HT{Vas=ED=tU9@OX0Z>*3@1g@9@Emy2JxKGe2NDlpPr)My zT|b(foO~Yp4VGf>z;GCMiKw5Hx2%w@H7={@&7)7f<-K8alV{%a(R@RHuQx0{#bb%e z^|&$`cw*fQ9#zu8TgOf3tC#ig{E7yi-_*%L$O<$u-4>OO4Hv_9M5-#N1=Zu_bwOJ6u~?2Zp^ z-@fgW=A5MG4`i`rKvWkH)eb|i=EZWUa7?(Ifz8D6krp{T)Fe9*;-Njrhyp9*PkM^l zlQ!W4d$Wi{^d=eE4cZ**+aVAV*Ce?k7wY3e{uMnbUKAY671fVch*8fC7c*X(B4)ob zLri&Ql4v{JA`(U>3w?0F70J)O8UPvrnofgi41m8tI}j-HiLs$kB1*LN|7l7k)U37n zn?D=bRN$F9x{MbkoA}zL6F^x5ys4#y{{<-OcmN1L4f~L$11MK-z4cZOaNL8aDm**4EcMRlTgpdGU&JdKC-8*gp}ct5ME>CE}fD!{FRyQ)K2MGKnJKugLv%J{Cqbv?QIwF4M{@pw10yYxDtW8u_$>McrZxGjKR`C6&xvoMcZ`j z_W|oqRk)KbYqT0wLa@vBLrX;xk9SM_#L?~iiHi^V@I+gLspqt7HUb!Eg@v>eJ7zuD zPqGALQ-jEGG!h?HM4I)86l)Rk(4pv2%=k|ETL(Oa5R@3?fa4JkNkF(R9^@1ZZ-N#a zSz59}n&#v%$3LzJ58u7(CXd7Je=#E?b=cT3LqC}^YtAoQcJBCj_4eENk-P8Zmw*4B z-+udUZnc^{3ho`sa0xrkaP%}8cuA8$I1>-4th$tjiLmAnXK*L#8Yp1VfvY60rfP zbV^?2f=QjjcXZTMEbmLV%z#(e3LCu&=qgx|B&C9QqJfrRpv7TOV%CPJAI^A5xE&RQWt3fp))KM5!iN2>ny;d1>0v6kub1959wg2tFWg{rZj#(K2!#L zsIePPi(d^WX58tA_!w=GC!mo=B!ZC?fa1jj<1vFya{}{FOjq$oo~VSa1?u$7)LW-d z>HPcY2k!g*y?5W>&9&t|;QErOTC6_2yMZtOQV1xa@eIx$frLoLms+4VRS@@vrcp9q zSUWHs(FE=Fz(iwpQlgaDpTvX4*P|1d4d3X29A-d3!<=c8ZBwJAVCT~R>;Uhz(p^p}`I#5a(K$8DhiIiI90thU!+ijF>dX+>HCAy%ogQR>7Tz5h+ z`)G-Jq`YZ^Th0Cwc!RbU*_bmd6{*zG>Y$+2@$IRHNPl)RcT5Sg z`SC!B3vL;`=t0H{#)zf}Rj7L%+VcTTnfRmhmG}#-D$`7zqG^tR1QMZHqEW~XGhn*a z2nk3yO8xj?2AIke=BFg4j5|~Sh71Eo1)W6LCcr3ccmO9%cDkIwSy`DpJ~6?onBB12 z(IuKXlb!-P-U?wIsl7ab&IDJ#3z*ni4#6-_4>Qv>MN@d0BvWy&iRQrz@tDI(M;xv;f{ zUhyKSDg>wqRdLq-^X}6B3KmPiCczxjL12D(+s-W+@G=gmK#Sc0sF+}8>2SohcRQvF z0;R!G9oHB0e}qayQE2B+$M1Xg^_# z^q#NJ*D2sdRLQ=i55+w3z20_xEHE8p-({sevTpty0Wkxi5&~9sY6l^r7Mfy}!cweq zXqZWMf!avV6H@nr9qZ)@dwzs8q)-|@&rnCPCBz1Mg literal 25884 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 Bc1!>O