From c5dab8e316f61d0b114424f63962bc52d7d51b5d Mon Sep 17 00:00:00 2001 From: Tercio Date: Fri, 3 Apr 2015 18:40:31 -0300 Subject: [PATCH] - Second round of improvements on Aura Creation. --- boot.lua | 11 +- functions/link.lua | 138 ++++++- .../Details_DungeonInfo-Pandaria.lua | 381 ------------------ .../Details_DungeonInfo-Pandaria.toc | 6 - sounds/sound_gun2.ogg | Bin 0 -> 29079 bytes sounds/sound_gun3.ogg | Bin 0 -> 5932 bytes sounds/sound_jedi1.ogg | Bin 0 -> 7348 bytes sounds/sound_whip1.ogg | Bin 0 -> 7747 bytes 8 files changed, 128 insertions(+), 408 deletions(-) delete mode 100644 plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.lua delete mode 100644 plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.toc create mode 100644 sounds/sound_gun2.ogg create mode 100644 sounds/sound_gun3.ogg create mode 100644 sounds/sound_jedi1.ogg create mode 100644 sounds/sound_whip1.ogg diff --git a/boot.lua b/boot.lua index 516800fd..aeef6cce 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.4" + _detalhes.userversion = "v3.12.5" _detalhes.realversion = 66 --core version _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" Details = _detalhes @@ -22,7 +22,7 @@ do --[[ |cFFFFFF00-|r .\n\n -|cFFFFFF00v3.12.4 (|cFFFFCC00May 03, 2015|r|cFFFFFF00)|r:\n\n +|cFFFFFF00v3.12.5 (|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 @@ -35,7 +35,7 @@ do -- - 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_VERSION_LOG"] = "|cFFFFFF00v3.12.5 (|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 " @@ -306,6 +306,11 @@ do SharedMedia:Register ("font", "TrashHand", [[Interface\Addons\Details\fonts\TrashHand.TTF]]) SharedMedia:Register ("font", "Harry P", [[Interface\Addons\Details\fonts\HARRYP__.TTF]]) SharedMedia:Register ("font", "FORCED SQUARE", [[Interface\Addons\Details\fonts\FORCED SQUARE.ttf]]) + + SharedMedia:Register ("sound", "d_gun1", [[Interface\Addons\Details\sounds\sound_gun2.ogg]]) + SharedMedia:Register ("sound", "d_gun2", [[Interface\Addons\Details\sounds\sound_gun3.ogg]]) + SharedMedia:Register ("sound", "d_jedi1", [[Interface\Addons\Details\sounds\sound_jedi1.ogg]]) + SharedMedia:Register ("sound", "d_whip1", [[Interface\Addons\Details\sounds\sound_whip1.ogg]]) --> global 'vardump' for dump table contents over chat panel function vardump (t) diff --git a/functions/link.lua b/functions/link.lua index 8c366863..cb271b52 100644 --- a/functions/link.lua +++ b/functions/link.lua @@ -189,7 +189,7 @@ } local debuff_prototype = { - ["cooldown"] = true, + ["cooldown"] = false, ["trigger"] = { ["spellId"] = "0", ["unit"] = "", @@ -199,7 +199,7 @@ }, } local buff_prototype = { - ["cooldown"] = true, + ["cooldown"] = false, ["trigger"] = { ["spellId"] = "0", ["unit"] = "", @@ -249,7 +249,24 @@ }, } - function _detalhes:CreateWeakAura (spellid, use_spellid, spellname, name, icon_texture, target, stacksize, sound, chat) + local text_prototype = { + ["fontSize"] = 20, + ["displayStacks"] = "", + ["stacksPoint"] = "BOTTOM", + ["stacksContainment"] = "OUTSIDE", + } + + local glow_prototype = { + ["actions"] = { + ["start"] = { + ["do_glow"] = true, + ["glow_frame"] = "", + ["glow_action"] = "show", + }, + }, + } + + function _detalhes:CreateWeakAura (spellid, use_spellid, spellname, name, icon_texture, target, stacksize, sound, chat, icon_text, icon_glow) --> check if wa is installed if (not WeakAuras or not WeakAurasSaved) then @@ -362,7 +379,7 @@ end --> using sound - if (sound and sound ~= "" and sound ~= [[Interface\Quiet.ogg]]) then + if (sound and sound ~= "" and not sound:find ("Quiet.ogg")) then local add = _detalhes.table.copy ({}, sound_prototype) add.actions.start.sound = sound _detalhes.table.deploy (icon, add) @@ -370,11 +387,17 @@ --> chat message if (chat and chat ~= "") then - local add = _detalhes.table.copy ({}, sound_prototype) + local add = _detalhes.table.copy ({}, chat_prototype) add.actions.start.message = chat _detalhes.table.deploy (icon, add) end + if (icon_text and icon_text ~= "") then + local add = _detalhes.table.copy ({}, text_prototype) + add.displayStacks = icon_text + _detalhes.table.deploy (icon, add) + end + --> check if already exists a aura with this name if (WeakAurasSaved.displays [icon.id]) then for i = 2, 100 do @@ -385,20 +408,38 @@ end end + --> check is is using glow effect + if (icon_glow) then + local add = _detalhes.table.copy ({}, glow_prototype) + add.actions.start.glow_frame = "WeakAuras:" .. icon.id + _detalhes.table.deploy (icon, add) + end + --> add the aura on our group tinsert (WeakAurasSaved.displays ["Details! Aura Group"].controlledChildren, icon.id) --> add the aura WeakAuras.Add (icon) + + --> check if the options panel has loaded + local options_frame = WeakAuras.OptionsFrame and WeakAuras.OptionsFrame() + if (options_frame) then + if (options_frame and not options_frame:IsShown()) then + WeakAuras.ToggleOptions() + end + WeakAuras.NewDisplayButton (icon) + end end function _detalhes:OpenAuraPanel (spellid, spellname, spellicon) + spellname = select (1, GetSpellInfo (spellid)) + if (not DetailsAuraPanel) then local f = CreateFrame ("frame", "DetailsAuraPanel", UIParent, "ButtonFrameTemplate") - f:SetSize (300, 378) + f:SetSize (300, 420) f:SetPoint ("center", UIParent, "center") f:SetFrameStrata ("HIGH") f:SetToplevel (true) @@ -440,11 +481,14 @@ local spellname_textentry = fw:CreateTextEntry (f, _detalhes.empty_function, 150, 20, "SpellName", "$parentSpellName") spellname_textentry:SetPoint ("left", spellname_label, "right", 2, 0) f.spellname = spellname_textentry + spellname_textentry.tooltip = "Spell/Debuff/Buff to be tracked." + --spellid local auraid_label = fw:CreateLabel (f, "Spell Id: ", nil, nil, "GameFontNormal") local auraid_textentry = fw:CreateTextEntry (f, _detalhes.empty_function, 150, 20, "AuraSpellId", "$parentAuraSpellId") auraid_textentry:Disable() auraid_textentry:SetPoint ("left", auraid_label, "right", 2, 0) + --use spellid local usespellid_label = fw:CreateLabel (f, "Use SpellId: ", nil, nil, "GameFontNormal") local aura_use_spellid = fw:CreateSwitch (f, function(_, _, state) if (state) then auraid_textentry:Enable() else auraid_textentry:Disable() end end, false, nil, nil, nil, nil, "UseSpellId") @@ -490,28 +534,71 @@ local stack_slider = fw:NewSlider (f, f, "$parentStackSlider", "StackSlider", 150, 20, 0, 30, 1, 0) local stack_label = fw:CreateLabel (f, "Stack Size: ", nil, nil, "GameFontNormal") stack_slider:SetPoint ("left", stack_label, "right", 2, 0) + stack_slider.tooltip = "Minimum amount of stacks to trigger the aura." --sound effect local play_sound = function (self, fixedParam, file) - print (file) PlaySoundFile (file, "Master") end + + local sort = function (t1, t2) + return t1.name < t2.name + end + local titlecase = function (first, rest) + return first:upper()..rest:lower() + end + local iconsize = {14, 14} + local sound_options = function() - local t = {{label = "No Sound", value = "", icon = [[Interface\Buttons\UI-GuildButton-MOTD-Disabled]]}} + local t = {{label = "No Sound", value = "", icon = [[Interface\Buttons\UI-GuildButton-MOTD-Disabled]], iconsize = iconsize}} + local sounds = {} for name, soundFile in pairs (LibStub:GetLibrary("LibSharedMedia-3.0"):HashTable ("sound")) do - tinsert (t, {label = name, value = soundFile, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound}) + name = name:gsub ("(%a)([%w_']*)", titlecase) + sounds [#sounds+1] = {name = name, file = soundFile} + end + table.sort (sounds, sort) + for _, sound in ipairs (sounds) do + tinsert (t, {label = sound.name, value = sound.file, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) end return t end local sound_effect = fw:CreateDropDown (f, sound_options, 1, 150, 20, "SoundEffectDropdown", "$parentSoundEffectDropdown") local sound_effect_label = fw:CreateLabel (f, "Play Sound: ", nil, nil, "GameFontNormal") sound_effect:SetPoint ("left", sound_effect_label, "right", 2, 0) + sound_effect.tooltip = "Sound played when the aura triggers." --say something local say_something_label = fw:CreateLabel (f, "/Say: ", nil, nil, "GameFontNormal") local say_something = fw:CreateTextEntry (f, _detalhes.empty_function, 150, 20, "SaySomething", "$parentSaySomething") say_something:SetPoint ("left", say_something_label, "right", 2, 0) + say_something.tooltip = "Your character /say this phrase when the aura triggers." + --aura text + local aura_text_label = fw:CreateLabel (f, "Icon Text: ", nil, nil, "GameFontNormal") + local aura_text = fw:CreateTextEntry (f, _detalhes.empty_function, 150, 20, "AuraText", "$parentAuraText") + aura_text:SetPoint ("left", aura_text_label, "right", 2, 0) + aura_text.tooltip = "Text shown at aura's icon right side." + + --apply glow + local useglow_label = fw:CreateLabel (f, "Glow Effect: ", nil, nil, "GameFontNormal") + local useglow = fw:CreateSwitch (f, function(self, _, state) + if (state and self.glow_test) then + self.glow_test:Show() + self.glow_test.animOut:Stop() + self.glow_test.animIn:Play() + elseif (self.glow_test) then + self.glow_test.animIn:Stop() + self.glow_test.animOut:Play() + end + end, false, nil, nil, nil, nil, "UseGlow") + useglow:SetPoint ("left", useglow_label, "right", 2, 0) + useglow.tooltip = "Do not rename the aura on WeakAuras options panel or the glow effect may not work." + + useglow.glow_test = CreateFrame ("frame", "DetailsAuraTextGlowTest", useglow.widget, "ActionBarButtonSpellActivationAlert") + useglow.glow_test:SetPoint ("topleft", useglow.widget, "topleft", -20, 2) + useglow.glow_test:SetPoint ("bottomright", useglow.widget, "bottomright", 20, -2) + useglow.glow_test:Hide() + --aura addon local addon_options = function() local t = {} @@ -537,9 +624,12 @@ local sound = f.SoundEffectDropdown.value local chat = f.SaySomething.text local addon = f.AuraAddonDropdown.value + + local icon_text = f.AuraText.text + local icon_glow = f.UseGlow.value if (addon == "WA") then - _detalhes:CreateWeakAura (spellid, use_spellId, spellname, name, icon, target, stacksize, sound, chat) + _detalhes:CreateWeakAura (spellid, use_spellId, spellname, name, icon, target, stacksize, sound, chat, icon_text, icon_glow) else _detalhes:Msg ("No Aura Addon selected. Addons currently supported: WeakAuras 2.") end @@ -560,21 +650,23 @@ local y_start = 21 name_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*1) + (50)) * -1) + aura_on_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*2) + (50)) * -1) - spellname_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*2) + (60)) * -1) - auraid_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*3) + (60)) * -1) - usespellid_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*4) + (60)) * -1) + spellname_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*3) + (60)) * -1) + auraid_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*4) + (60)) * -1) + usespellid_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*5) + (60)) * -1) - icon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*5) + (70)) * -1) - aura_on_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*6) + (70)) * -1) + icon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*6) + (70)) * -1) stack_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*7) + (70)) * -1) sound_effect_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*8) + (70)) * -1) say_something_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*9) + (70)) * -1) + aura_text_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*10) + (70)) * -1) + useglow_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*11) + (70)) * -1) - aura_addon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*11) + (60)) * -1) + aura_addon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*13) + (60)) * -1) - create_button:SetPoint ("topleft", f, "topleft", x_start, ((y_start*13) + (60)) * -1) - cancel_button:SetPoint ("topright", f, "topright", x_start*-1, ((y_start*13) + (60)) * -1) + create_button:SetPoint ("topleft", f, "topleft", x_start, ((y_start*15) + (60)) * -1) + cancel_button:SetPoint ("topright", f, "topright", x_start*-1, ((y_start*15) + (60)) * -1) end @@ -584,6 +676,16 @@ DetailsAuraPanel.spellname.text = spellname DetailsAuraPanel.AuraSpellId.text = tostring (spellid) DetailsAuraPanel.icon.texture = spellicon + + DetailsAuraPanel.UseGlow.glow_test.animIn:Stop() + DetailsAuraPanel.UseGlow.glow_test.animOut:Play() + DetailsAuraPanel.UseGlow:SetValue (false) + + DetailsAuraPanel.AuraOnDropdown:Select (1, true) + DetailsAuraPanel.StackSlider:SetValue (0) + DetailsAuraPanel.SoundEffectDropdown:Select (1, true) + DetailsAuraPanel.AuraText:SetText ("") + DetailsAuraPanel.SaySomething:SetText ("") DetailsAuraPanel:Show() end diff --git a/plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.lua b/plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.lua deleted file mode 100644 index f097370a..00000000 --- a/plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.lua +++ /dev/null @@ -1,381 +0,0 @@ - -local MoguShanPalace = { - - id = 994, - ej_id = 321, - - name = "Mogu'Shan Palace", - - boss_names = { - "Trial of the King", - "Gekkan", - "Xin the Weaponmaster", - }, - - boss_ids = { - - --debug - --[61945] = 2, - - [61445] = 1, --haiayn - [61442] = 1, --kuai - [61453] = 1, --mushiba - [61444] = 1, --ming - --[61337] = 2, --ironhide - --[61340] = 2, --hexxer - --[61339] = 2, --oracle - [61243] = 2, --gekkan - --[61338] = 2, --skulker - [61398] = 3, --xin - }, - - encounters = { - [1] = { - boss = "Trial of the King", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Ming the Cunning]], - }, - [2] = { - boss = "Gekkan", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Gekkan]], - }, - [3] = { - boss = "Xin the Weaponmaster", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Xin the Weaponmaster]], - }, - }, - -} -_detalhes:InstallEncounter (MoguShanPalace) - -local TempleOfJadeSerpent = { - - id = 960, - ej_id = 313, - - name = "Temple of the Jade Serpent", - - boss_names = { - "Wise Mari", - "Lorewalker Stonestep", - "Liu Flameheart", - "Sha of Doubt", - }, - - boss_ids = { - [56448] = 1, --wise mary - [56843] = 2, --lorewalker stonestep - [59051] = 2, --strife - [59726] = 2, --peril - [56915] = 2, --sun - [58826] = 2, --zao sunseeker - [56872] = 2, --osong - [56732] = 3, --liu framehearth - [56762] = 3, --yulon - [56439] = 4, --sha of doubt - [56792] = 4, --add - }, - - encounters = { - [1] = { - boss = "Wise Mari", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Wise Mari]], - }, - [2] = { - boss = "Lorewalker Stonestep", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Lorewalker Stonestep]], - }, - [3] = { - boss = "Liu Flameheart", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Liu Flameheart]], - }, - [4] = { - boss = "Sha of Doubt", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Sha of Doubt]], - }, - }, -} - -_detalhes:InstallEncounter (TempleOfJadeSerpent) - -local StormsStoutBrewery = { - - id = 961, - ej_id = 302, - - name = "Stormstout Brewery", - boss_names = { - "Ook-Ook", - "Hoptallus", - "Yan-Zhu the Uncasked", - }, - - boss_ids = { - [56637] = 1, --ook-ook - [56717] = 2, --hoptallus - [59479] = 3, --yan-zhu - }, - - encounters = { - [1] = { - boss = "Ook-Ook", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Ook Ook]], - }, - [2] = { - boss = "Hoptallus", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Hoptallus]], - }, - [3] = { - boss = "Yan-Zhu the Uncasked", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Yan Zhu the Uncasked]], - }, - }, -} - -_detalhes:InstallEncounter (StormsStoutBrewery) - -local ScarletHalls = { - - id = 1001, - ej_id = 311, - - name = "Scarlet Halls", - boss_names = { - "Houndmaster Braun", - "Armsmaster Harlan", - "Flameweaver Koegler", - }, - - boss_ids = { - [59303] = 1, --Houndmaster Braun - [58632] = 2, --Armsmaster Harlan - [59150] = 3, --Flameweaver Koegler - }, - - encounters = { - [1] = { - boss = "Houndmaster Braun", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Houndmaster Braun]], - }, - [2] = { - boss = "Armsmaster Harlan", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Armsmaster Harlan]], - }, - [3] = { - boss = "Flameweaver Koegler", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Flameweaver Koegler]], - }, - }, -} - -_detalhes:InstallEncounter (ScarletHalls) - -local ScarletMonastery = { - - id = 1004, - ej_id = 316, - - name = "Scarlet Monastery", - boss_names = { - "Thalnos the Soulrender", - "Brother Korloff", - "High Inquisitor Whitemane", - }, - - boss_ids = { - [59789] = 1, --Thalnos the Soulrender - [60040] = 2, --Commander Durand - [3977] = 2, --High Inquisitor Whitemane - }, - - encounters = { - [1] = { - boss = "Thalnos the Soulrender", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Thalnos the Soulrender]], - }, - [2] = { - boss = "Brother Korloff", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Brother Korloff]], - }, - [3] = { - boss = "High Inquisitor Whitemane", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-High Inquisitor Whitemane]], - }, - }, -} - -_detalhes:InstallEncounter (ScarletMonastery) - -local ShadoPanMonastery = { - - id = 959, - ej_id = 312, - - name = "Shado-Pan Monastery", - boss_names = { - "Gu Cloudstrike", - "Master Snowdrift", - "Sha of Violence", - "Taran Zhu", - }, - - boss_ids = { - [56747] = 1, --Gu Cloudstrike - [56541] = 2, --Master Snowdrift - [56719] = 3, --Sha of Violence - [56884] = 4, --Taran Zhu - }, - - encounters = { - [1] = { - boss = "Gu Cloudstrike", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Gu Cloudstrike]], - }, - [2] = { - boss = "Master Snowdrift", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Master Snowdrift]], - }, - [3] = { - boss = "Sha of Violence", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Sha of Violence]], - }, - [4] = { - boss = "Taran Zhu", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Taran Zhu]], - }, - }, -} - -_detalhes:InstallEncounter (ShadoPanMonastery) - -local SiegeOfNiuzaoTemple = { - - id = 1011, - ej_id = 324, - name = "Siege of Niuzao Temple", - boss_names = { - "Vizier Jin'bak", - "Commander Vo'jak", - "General Pa'valak", - "Wing Leader Ner'onok", - }, - - boss_ids = { - [61567] = 1, --Vizier Jin'Bak - [61634] = 2, --commander Vojak - [61485] = 3, --General Pa'valak - [62205] = 4, --Wing Leader Neronok - }, - - encounters = { - [1] = { - boss = "Vizier Jin'bak", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Vizier Jinbak]], - }, - [2] = { - boss = "Commander Vo'jak", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Commander Vojak]], - }, - [3] = { - boss = "General Pa'valak", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-General Pavalak]], - }, - [4] = { - boss = "Wing Leader Ner'onok", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Wing Leader Neronok]], - }, - }, -} - -_detalhes:InstallEncounter (SiegeOfNiuzaoTemple) - -local GateOfSettingSun = { - - id = 962, - ej_id = 303, - - name = "Gate of the Setting Sun", - boss_names = { - "Saboteur Kip'tilak", - "Striker Ga'dok", - "Commander Ri'mok", - "Raigonn", - }, - - boss_ids = { - [56906] = 1, --Saboteur Kiptilak - [56589] = 2, --Striker Ga'dok - [56636] = 3, --Commander Rimok - [56877] = 4, --Raigonn - [56895] = 4, --Weak Spot (Raigonn) - }, - - encounters = { - [1] = { - boss = "Saboteur Kip'tilak", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Saboteur Kiptilak]], - }, - [2] = { - boss = "Striker Ga'dok", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Striker Gadok]], - }, - [3] = { - boss = "Commander Ri'mok", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Commander Rimok]], - }, - [4] = { - boss = "Raigonn", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Raigonn]], - }, - }, -} - -_detalhes:InstallEncounter (GateOfSettingSun) - -local Scholomance = { - - id = 1007, - ej_id = 246, - - name = "Scholomance", - boss_names = { - "Instructor Chillheart", - "Jandice Barov", - "Rattlegore", - "Lilian Voss", - "Darkmaster Gandling", - }, - - boss_ids = { - [58633] = 1, --Instructor Chillheart - [58664] = 1, --Instructor Chillheart Phylactery - [59184] = 2, --Jandice Barov - [59153] = 3, --Rattlegore - [58722] = 4, --Lilian Voss - [59080] = 5, --Darkmaster Gandling - }, - - encounters = { - [1] = { - boss = "Instructor Chillheart", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Instructor Chillheart]], - }, - [2] = { - boss = "Jandice Barov", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Jandice Barov]], - }, - [3] = { - boss = "Rattlegore", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Rattlegore]], - }, - [4] = { - boss = "Lilian Voss", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Lillian Voss]], - }, - [5] = { - boss = "Darkmaster Gandling", - portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Darkmaster Gandling]], - }, - }, -} - -_detalhes:InstallEncounter (Scholomance) diff --git a/plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.toc b/plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.toc deleted file mode 100644 index 88fd02bb..00000000 --- a/plugins/Details_DungeonInfo-Pandaria/Details_DungeonInfo-Pandaria.toc +++ /dev/null @@ -1,6 +0,0 @@ -## Interface: 60100 -## Title: Details: Mists of Pandaria Dungeons -## Notes: Plugin for Details -## RequiredDeps: Details - -Details_DungeonInfo-Pandaria.lua \ No newline at end of file diff --git a/sounds/sound_gun2.ogg b/sounds/sound_gun2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..de3ff25121bcff09c3f6410e608d503ec5d87e73 GIT binary patch literal 29079 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 literal 0 HcmV?d00001 diff --git a/sounds/sound_gun3.ogg b/sounds/sound_gun3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..53e6ba26ba270f51605802f34802abd8b444e818 GIT binary patch literal 5932 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 literal 0 HcmV?d00001 diff --git a/sounds/sound_jedi1.ogg b/sounds/sound_jedi1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8b646a755aa9c65cc371a91e4631159ba88e98f6 GIT binary patch literal 7348 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 P71EXC5M^1f literal 0 HcmV?d00001 diff --git a/sounds/sound_whip1.ogg b/sounds/sound_whip1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09d7e613177790400f77132e4cdd76b8ddc1e4cb GIT binary patch literal 7747 zcmeHMXIN9sw%&k95ilr75iwxE1Q7{Rq$va`2?Qh%rHDusREmUvCX4b6PF}iTU1Y(AM zrxsQgONLl>>m0-+%H-wdVe3p{6fmEB1VMC=p!Hw(3ML~)%fAw%B@=kE9eMPfmu|;^ z{w+OY`K5^)01Rxr92FF0(8@AsS=k++U_badxZ1hdJ9wyrN;^;~hh|j5FFV`*YR3T} z_BNgl>T9!(aU;9h!?hh99qc>>8LCd2>Tc;hEUSDNt!RptQ&EstK`Sz}+IV<6lRVYE zy}e~jyd4}ox7z+{N|Ld2bCCcTO#=)OuSqb)nwb7$pf~^myt^9-bn+jn<7b$>Y)f`g zKjY-)Msk9i=$OGz+1OnY1r?@PQ}jP>%EbDMDKU)JX)p{-kf5C@O6NYI2X{w^L`Cb| zw~fZ#$)N1P=p~W(OmdV56E8h_S_-GYgiTJNSnm_U3C==xkqil@kCpJ;rE)OI4rYmc zHV}U)RI^Nk!c8L>pk7i5AsBWclQ7gPDglRKlkntGnHDh#$00Q<5=nWbadCE`IiAtD z8HBw7Mh|r>8poDlVu;aGh#MfF_K^sLi<%#RNlY1>!hN$VlE`?^dJULxF(-5if?y%3 zf+5V5phwJ*90YAkL59CYh96Llw!`k(f`C~HgP?kMK5P_Ua}h$nM_Rx4q%qO2Uy(>$ zAzKYHGF;vskjMmS=w;o{5QabJvKM6MHfM$4fIuDOa~R8?^gy;qu{%Q&;23^U5>pgh*hoE+_b5lCo_`??nCoT`p9NmWxqX@Hbs%Zlj zmGrCU><}bI;UnmY-THkA77G%zZ9-)w-sF_ZNly!rYmt7^CfCZi%oRTAQ28YL5~juV zxMY_;zO>)W?(x%^#7jIq7S4}L2XLqiFv_Sc{sO@8unXBoYU(gF2a9DUdbFUjQ<%5t z1eFX2qSj10sq6W-+(=T>rJlrsTw>7LXJEun?2omw9B>$4aj_Bb8eb((tdge&Z`qi~ zIsC8utLvaA0Wb{vua0C0+O?r)QesYF{_G|k7_2uId36P$>w##Fmd3`&>pxLz?^VMu zoiygd_nK;-@zfqK(H^Ga2R-q_o<#FfEAuj!;Q<%xIG2f4zrV}meOq1BgP;$3;puuI z>3ZQ)$D$ETsbYB$B*d6a$dHG}!l(425!kqNZ1Q{aG{=jX7p~=IGjBmO7!XE6(%zyn z-=fmqDyJR5r8!unWnRojCKS(A=KrfKvo*mZA*d@#q&Z3iOmHj^n6}sjYk?VZ=W2`u zlOD|Y-+eS%0)$$1v;O@6K#(lr1wmSuB#)(<>X(}0OHK9piAKbKl@##3@_0b31O#J+ zAQkGE=r1?k_Lt9vyZJTDBCK-ltu4!yTZ+|>(hNi^7G&_2mFR%yD zaA;dV7Z((WV2aLUGO$vS|Ux+`nu|0z>dz$^V3{|LXWJ1OJ?X0N@!R zHt^e#+7-#qq>%^(Ji8(dA}JAUk2D0iBlLTLZ|spb-UdNnhvfa|+WvK|2GAD30%-(r zIHYt%#zGo=P=F>{jr+Vg)XMB6tkDZ4vwc+y0ILJ6dsZIc4Hcbm(mbb}ns5-D6RJ-^ z0tcVW2AqsBCDWOP#PrG=@ufP`Btu}@ok#Ik(`N2V8kq3mcL%3Aa{@2w4ngdNnkKea z0)TU4hQyel?Yc$MMvH2lyR~~wiB7bcJ88&}Oy^uF`S!&vXD?6Wr%n4X3UhLEIq{2X z#(WGU@fHI~1IXOD=YJym$zmaCPBaE`u2KW+6!O45S_uH#w9MSfd}$VAd9ZsB2V))1 z({e$Yt1RX^g$Ec=5|CR7o&m;`2!f4R2cb8>wYL;s9)->hk{yQ2fcF$R20|A>&4WV3 zJvI+H1VkBq*ajJcAwwIWGO0EO7^Ikd2$mg1F~H$+Vof#mBr*t6>^bSCIGqfz-?qT1 z1cDSl#S|x%0YQZ9;xLM5=HGGHKjmwf|5kn^ZMai@l5|?XtM^ z7!!=1L6lH!JL5?(ob%zbWOO5(8f_6;L+!v~AD0SVm)iF*nxKzfd99C<$QZKyRFf5n z2|wI0biEUuvBxs6X!V>OuBczoZoXz!&@QiN;Pv%+blK@k;jGYk#bb~LVyIB%IkwyE zJcvV>0zee?T#ykkG8TX#u33=Op~)^rf#Fa>po}45P!eF>u!&JlVUQX2ZOY(G!jQlk zVcQ34IWnlx=o!X21xN&yEeV+cRwODZ5C)bng@D7NKrMSJ1CvYY0EIgoWCz-%p{}q!7vF)SA?G1?Z=(D&jLgBOA5v9dt5tif;rinw@N1_|jW1}&R zg6Vy>`l*3@*E^ra_JObn&JMB5GHu(=&RGj%w&j8}VB$wlVr=-OWs!l~Z~H)BAzm?F z2qB5=k&#Jhg# z)ppxtp`oVImj3;_d7+@#mp=WC__WUzbrW^-KK!3IW!5<@v6$${%%6JEhTHURBBJ&3 zh>}=n?9+bs4X^Qud7Y_M$uDwus}b0J-|v}b!MDfw7laPTnH_?&W*TlD=D8r+t(UL~ zAK%ok-jUZGPVZizPXt>F?mEN`B{z+`&a5I?xDlG-tCdSfw!QDM;hpl#CK)f&1ACRc zC%#&?RttZgSu6Yb!{49YUDsZou--Cxc}8GkXs7@8ug}=rbo_`H_WDZb#UMgf4a)U@ z+OW-gz^}6dm-Ts)1hW&Z(ZNl2n(b}ZsGj#dSsx^j|nO^gC z^Pk#E%jRO8Ql`gi=2cYiYoc>r84HV9Luaieyi~_eG{2gqN=SeE(U;I!DYSjp7qzkR zLK`E@*k;6Oz37{A)rjUFH+Iu&QPJt!ntPY(V#nIK@5kxT=S?I0r-C-pxV0j`ZP?9b zpTSEF1br*7OR<=ks)d)j<|Mj5tDtyJ;_95v-;&2}YbC(_(>W89UiVYj5{4X&g{NE# zGZ%v@UA5Si(wp-z%zW4@55-Wf_7~5DM+dWA@^WjuPMMWxJSf^!5LYNHe28BSAMmyK z9lSrTmkp&B;4DS=nle9Li<@aKYZx(%iC{Ir2hd}-X&|$bhFApSu1;NEFwsmZP+zVp zk{MF|e!Cs3b%;$G?8`M(>B!RG(1;_o*5<^ZD91Fv*{}o`I!KUurq7(DY2|+SPHF zv%0L-ozKO{UtGQ{t*u^t%R#%aQ3ZWXtX^(TGg3(zGqCtLRCK>d2ZyCW#neGr@yt? zY_(u5_i#|(yoLWymBA5@YxfKj?XB}eeLE&vPWa!ScvjS2-C8yf9YM+K+asBY|lN-28V!BD9Sg?^%&JZ!X` zxy&4au;2u{3uHrZJ;9P{c zphSgdU$oc5q6vJ%;>ING%cJzc(RnX>G5$6mgtYa8HnydAkuRUFr2M#BZnu~-Ire4W z@?Nr|y?>SJe_ZxQgp|`P6HaI_RIXfQI*+Lu?F$C)t{96<2zp=mW|_IkA{6ak5KjR zXpTv$GC60?YhI|3xBOgUrdMI_T|{tK7z`K0W!Bz*D(uFL+voUA4sSQ-@hI&6eyL#v z;tW|tA^zvgfZfWNg1y@{)6@mBJhe(6XVb^;)5!Hv>1Hsoxu|$&G4ykowfIr1UirOD zBVR|AO-}2wP(AAhA;Q8!f#uv3GVu(Zp8JZu{{CXs^AdfRc5~5QtQvgrwZ4({jp6!( z@9z`|>v-#mf6FUALQ&`tn|SW=!8h#jpu4k3y{mG#bf`58_u_!e2(0MJi$UMS=&}pv zTw>PzuIMT~n)zttX({gD!c*Mng2z;wn~!|E+IOPCbtR${bBFe#zt%hGSQ2;j>=`mI zg-zsql+kS!^l4od(fiuPE@zT;HmFOfXamQbBb^ziwYAs|Wck&s@2B6Jd|T*T8{Rz@ zeMW?wAIPhZS3IY)-*-`9uuj_Fqsvcz&wbu|LdvX%8cXI){Y7?WtV=hpsBqUye~5H$ zHSPT3XFgvw_=W1K+^B&%rB$<}6!+c3*S{*1d~R^bnC5-Ua|UJ}lTB%Cewzr9{x*v1MIOa2@m{qut{>r}v#a zsQf~B>9pF!*A-s{`(Yuyy>}iyVP`r(gnG7xc}1nsd0a9|zCW)h7x{EGo3v=9{K<#K zZ&p#HH~3z1;pmY6fUa)%S_ilPPAUoc{KWb*s>??eGRIq8{zHSb(Aps6P)n&}>Pr`& zIFYkIoBGLq)}dv7oD_+as6(^YtV+u^nd`yv<0qZ|^7E~RHOoBvf$w*3WgY+eX6^gt z`qZkmB5`NTYU8bMexv73?;A81y|>#7?xTN4(!X_d;*)V^S?guGY9hRz>3UtZmcM8c z^^d0%e0Jy9N0;>}V~irv_wB5Rcl*auRUfqy*JBOlmw)oU9z^rS@bpifGEwry_j~$^ z%4a-yta`{@bs2wV?JNf`3b`X4$yH=QGY-1?LIp$w3VwCgr3))v(4MDPR1npB?ifMU zDKE2gEjIlZI$?*`$nup@w{K@uHL4aoP?=k}qhzv3U#A{S>JY3euO6zE5ZHI`>D}tH zZp=^8C7W012l_veMy_tZ$RgKrsY5H9-bEAdX$T0GPu$&hrwewd^M=gTmkA4O``T?i z4M+Jp6ZuWJ#6+q-TJ31X<|)4q{gyl~Iax`T{7@UmzG+dfTQ4EJx;-_NEW7hY)8o0d z+NG2q+cm_?k2G$yBrWMP{jg#Uw!gR5Pxm(yZth>d-rN19>gmUl)env%%S8!I$2VeS z#)@dxWnX6_PG3n?vb!4~QcMlC z)Y*Y(WAVJp&;2FF=8c(H`i|Nrt5vJ#E}_EE8~u0ri$6QYD|d?rbnXy6SoIeCkJV=R zMRaM$;?)zS@jkQO^NORj6Chn}doAswX$xZ5Ra~DRrj$jG53nHuBB09^c z->by`=yaa>L7#$PpGS{;`IxmfH$%Un?$J>+q#PazzC8GD7LN@xZjRP}JK1!3em*o}fH^t7#_Hbu zP~yUl-Ql;!=2ot{(cZ9dR~v3T{b|Go*^0jJdEpvXd;LnKOtt0sH@1l6{mWP`Q}%TmQH-<-H2gwst_$|5J4N+NG(F=m>^aE5 znyIzng#DM2X-_Y-?jH_R&(e83Ua|h|wVhof@)B2YkG!$fEj{ocXIvY#u~kDFq@gnvXrU% zQC&GLGxOqSE!JDDO*vL#w|Uh#%;Z@0G~LO6*$#I?A^nC6GOx`3pyD#^2d};LeZ%S? zPxeLi;i*Tbwdb60lEh2n?`m!rojXw6F)UZPHZ$71oO;dsc-7ts;#nkgu4z-b;rgw& z0*a@aHfvU^Zoj?7?f!86;ByN2E|=b$$d~!a%G$MN|B9>cWNlatKHRHkya{bcbge2% z3U_dL?^>xeuuwZKJX=!Sud&n4ssaGUOj^D+f6jzC{Ene4I>B<9A;BOTX0ULeaW`@~w*H%7R-J-sRv vYy&ij=Zk<7`gL-0g-2~nnAdtTje&C$d=~`XbSvp`aUlP~{4V?R#>4YJ5&Hrl literal 0 HcmV?d00001