From cb09a6dc82bd30c523bd6719a1c84aa3fbbb2a39 Mon Sep 17 00:00:00 2001 From: Tercio Date: Thu, 19 Feb 2015 15:20:44 -0200 Subject: [PATCH] - Encounter Details plugin updates. --- boot.lua | 14 +- core/control.lua | 2 +- functions/classes.lua | 5 +- functions/events.lua | 6 +- functions/link.lua | 327 +++++++++++++++++- functions/profiles.lua | 4 +- functions/spells.lua | 3 +- gumps/janela_info.lua | 30 +- images/TrainerGossipIcon.tga | Bin 948 -> 0 bytes images/bar_down_left_snap.tga | Bin 2356 -> 0 bytes images/bar_topdown_center.tga | Bin 31956 -> 0 bytes images/consolidate_frame.tga | Bin 7811 -> 0 bytes images/modo_icone.tga | Bin 740 -> 0 bytes images/monster.tga | Bin 12759 -> 0 bytes images/reset_button.tga | Bin 697 -> 0 bytes images/segmentos_icone.tga | Bin 588 -> 0 bytes images/sword.tga | Bin 1774 -> 0 bytes plugins/Details_DmgRank/solo_bgtimeattack.tga | Bin 262188 -> 0 bytes .../Details_EncounterDetails.lua | 21 +- plugins/Details_EncounterDetails/frames.lua | 260 +++++++++++++- .../images/boss_bg.tga | Bin 135123 -> 140602 bytes startup.lua | 3 + 22 files changed, 603 insertions(+), 72 deletions(-) delete mode 100644 images/TrainerGossipIcon.tga delete mode 100644 images/bar_down_left_snap.tga delete mode 100644 images/bar_topdown_center.tga delete mode 100644 images/consolidate_frame.tga delete mode 100644 images/modo_icone.tga delete mode 100644 images/monster.tga delete mode 100644 images/reset_button.tga delete mode 100644 images/segmentos_icone.tga delete mode 100644 images/sword.tga delete mode 100644 plugins/Details_DmgRank/solo_bgtimeattack.tga diff --git a/boot.lua b/boot.lua index 73bbe9e9..17a540d6 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 = 570 --it's 570 for release - _detalhes.userversion = "v3.10.0" + _detalhes.userversion = "v3.10.1" _detalhes.realversion = 60 --core version _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" @@ -20,13 +20,17 @@ do local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) --[[ -|cFFFFFF00v3.10.0 (|cFFFFCC00Feb 17, 2015|r|cFFFFFF00)|r:\n\n -|cFFFFFF00-|r Several improvements on Encounter Details plugin.\n\n +|cFFFFFF00v3.10.1 (|cFFFFCC00Feb 19, 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 Player Details window now closes with right click on any bar.\n\n +|cFFFFFF00-|r Fixed Nature's Vigil cooldown.\n\n --]] --- |cFFFFFF00v3.10.0 (|cFFFFCC00Feb 17, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Several improvements on Encounter Details plugin.\n\n +-- |cFFFFFF00v3.10.1 (|cFFFFCC00Feb 19, 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 the 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 Player Details window now closes with right click on any bar.\n\n|cFFFFFF00-|r Fixed Nature's Vigil cooldown.\n\n - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v3.10.0 (|cFFFFCC00Feb 17, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Several improvements on Encounter Details plugin.\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.\n\n|cFFFFFF00-|r Added options to change the brackets and the separator for dps/percent block.\n\n|cFFFFFF00-|r Added options for show (or hide) totals, dps and percent amount.\n\n|cFFFFFF00-|r Added Segments shortcut menu pressing Shift + Right click.\n\n|cFFFFFF00-|r Fixed positioning after reopen a window previously closed on last logon.\n\n|cFFFFFF00-|r Fixed enemies display where sometimes the bars were black instead of red.\n\n|cFFFFFF00-|r Fixed few places where spec icons wasn't being used on.\n\n|cFFFFFF00-|r Fixed avoidance panel on Player Details Window where sometimes was giving errors.\n\n|cFFFFFF00-|r Fixed priest shadow and holy detection.\n\n|cFFFFFF00-|r Fixed blood and unholy spec icons.\n\n|cFFFFFF00-|r Fixed an issue with 'Always Show me' feature where it was showing the player on Enemies display.\n\n|cFFFFFF00v3.8.1 (|cFFFFCC00Jan 17, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Plugin Vanguard: got full rewrite and now it is more easy to use.\n\n|cFFFFFF00-|r Plugin TimeAttack: fixed problem where sometimes required a reload to start a new time.\n\n|cFFFFFF00-|r Plugin Damage the Game!: fixed a problem where sometimes the time didn't started after level 2.\n\n|cFFFFFF00-|r Added specialization icons.\n\n|cFFFFFF00-|r Fixed Auto-Hide where it wasn't hiding the wallpaper of the window.\n\n|cFFFFFF00-|r Added 'Editing Group' check box on option panel, when enabled, settings changed also are modified on all windows in the group.\n\n|cFFFFFF00-|r Changing window's skin, doesn't change any more settings not related with appearance, for example, Auto-Hide, Switches.\n\n|cFFFFFF00-|r Custom display 'Health Potion & Stone' now also track Healing Tonic.\n\n|cFFFFFF00-|r Custom display 'Damage Taken by Spell' now tracks more spells and also melee hits.\n\n|cFFFFFF00-|r Menus now uses 'Friz Quadrata TT' font as default, also added an option to change it on options panel -> miscellaneous.\n\n|cFFFFFF00-|r 'Switch to Current' feature now switches all windows which have this option enabled.\n\n|cFFFFFF00-|r The message telling to use '/details reinstall' now only shows if a problem happen during the addon load process.\n\n|cFFFFFF00-|r Segments Saved option now can be set to 25, up from 5.\n\n|cFFFFFF00-|r Attempt to fix the bug with the monk spell 'Storm, Earth, and Fire'.\n\n|cFFFFFF00-|r Fixed 'Icon Pick' panel.\n\n|cFFFFFF00-|r Fixed bug when reporting friendly fire through player detail window.\n\n|cFFFFFF00-|r Fixed bug with report window where sometimes it was reporting on a wrong channel.\n\n|cFFFFFF00v3.7.1 (|cFFFFCC00Jan 08, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Plugin 'Damage Rank': is now called 'Damage, the Game!' and had its levels adjusted for WoD.\n\n|cFFFFFF00-|r Plugin 'Tiny Threat': fixed player name where it was showing the realm name too.\n\n|cFFFFFF00-|r Plugin 'Vanguard': fixed frame details (clicking on a bar) shown behind the Vanguard panel.\n\n|cFFFFFF00-|r Plugin 'Vanguard': fixed a problem when clicking with right button wasn't opening the bookmark panel.\n\n|cFFFFFF00-|r Plugin 'Vanguard': incoming heals now count shield amount on the player too.\n\n|cFFFFFF00-|r Plugin 'Vanguard' Known Bug: incoming damage and melee vs avoidance seems to be inaccurate by now, we need more time to study and fix it.\n\n|cFFFFFF00-|r Added Twins Ogron's Charge as custom spells, one for the charge by him self and other for the copies (mythic only).\n\n|cFFFFFF00-|r Added option panel for Raid Check plugin.\n\n|cFFFFFF00-|r Added key bindings for open a window, close a window and select a bookmark.\n\n|cFFFFFF00-|r Added 'CTRL + RightClick' closes a window.\n\n|cFFFFFF00-|r Fixed wallpaper transparency after releasing the window from a stretch.|cFFFFFF00-|r Fixed few issues when using class text colors.\n\n|cFFFFFF00-|r Fixed characters name outside instances, now it replaces the realm name with a * and show the complete name on tooltip.\n\n|cFFFFFF00-|r Fixed damage mitigation on damage taken, this affects only specific classes like monk tank.\n\n|cFFFFFF00-|r Fixed auto erase poping up when the player enters on its garrison.\n\n|cFFFFFF00-|r Fixed combat on garrison training dummies which was being marked as Trash Segment." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v3.10.1 (|cFFFFCC00Feb 19, 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 the 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 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.\n\n|cFFFFFF00-|r Added options to change the brackets and the separator for dps/percent block.\n\n|cFFFFFF00-|r Added options for show (or hide) totals, dps and percent amount.\n\n|cFFFFFF00-|r Added Segments shortcut menu pressing Shift + Right click.\n\n|cFFFFFF00-|r Fixed positioning after reopen a window previously closed on last logon.\n\n|cFFFFFF00-|r Fixed enemies display where sometimes the bars were black instead of red.\n\n|cFFFFFF00-|r Fixed few places where spec icons wasn't being used on.\n\n|cFFFFFF00-|r Fixed avoidance panel on Player Details Window where sometimes was giving errors.\n\n|cFFFFFF00-|r Fixed priest shadow and holy detection.\n\n|cFFFFFF00-|r Fixed blood and unholy spec icons.\n\n|cFFFFFF00-|r Fixed an issue with 'Always Show me' feature where it was showing the player on Enemies display.\n\n|cFFFFFF00v3.8.1 (|cFFFFCC00Jan 17, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Plugin Vanguard: got full rewrite and now it is more easy to use.\n\n|cFFFFFF00-|r Plugin TimeAttack: fixed problem where sometimes required a reload to start a new time.\n\n|cFFFFFF00-|r Plugin Damage the Game!: fixed a problem where sometimes the time didn't started after level 2.\n\n|cFFFFFF00-|r Added specialization icons.\n\n|cFFFFFF00-|r Fixed Auto-Hide where it wasn't hiding the wallpaper of the window.\n\n|cFFFFFF00-|r Added 'Editing Group' check box on option panel, when enabled, settings changed also are modified on all windows in the group.\n\n|cFFFFFF00-|r Changing window's skin, doesn't change any more settings not related with appearance, for example, Auto-Hide, Switches.\n\n|cFFFFFF00-|r Custom display 'Health Potion & Stone' now also track Healing Tonic.\n\n|cFFFFFF00-|r Custom display 'Damage Taken by Spell' now tracks more spells and also melee hits.\n\n|cFFFFFF00-|r Menus now uses 'Friz Quadrata TT' font as default, also added an option to change it on options panel -> miscellaneous.\n\n|cFFFFFF00-|r 'Switch to Current' feature now switches all windows which have this option enabled.\n\n|cFFFFFF00-|r The message telling to use '/details reinstall' now only shows if a problem happen during the addon load process.\n\n|cFFFFFF00-|r Segments Saved option now can be set to 25, up from 5.\n\n|cFFFFFF00-|r Attempt to fix the bug with the monk spell 'Storm, Earth, and Fire'.\n\n|cFFFFFF00-|r Fixed 'Icon Pick' panel.\n\n|cFFFFFF00-|r Fixed bug when reporting friendly fire through player detail window.\n\n|cFFFFFF00-|r Fixed bug with report window where sometimes it was reporting on a wrong channel.\n\n|cFFFFFF00v3.7.1 (|cFFFFCC00Jan 08, 2015|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Plugin 'Damage Rank': is now called 'Damage, the Game!' and had its levels adjusted for WoD.\n\n|cFFFFFF00-|r Plugin 'Tiny Threat': fixed player name where it was showing the realm name too.\n\n|cFFFFFF00-|r Plugin 'Vanguard': fixed frame details (clicking on a bar) shown behind the Vanguard panel.\n\n|cFFFFFF00-|r Plugin 'Vanguard': fixed a problem when clicking with right button wasn't opening the bookmark panel.\n\n|cFFFFFF00-|r Plugin 'Vanguard': incoming heals now count shield amount on the player too.\n\n|cFFFFFF00-|r Plugin 'Vanguard' Known Bug: incoming damage and melee vs avoidance seems to be inaccurate by now, we need more time to study and fix it.\n\n|cFFFFFF00-|r Added Twins Ogron's Charge as custom spells, one for the charge by him self and other for the copies (mythic only).\n\n|cFFFFFF00-|r Added option panel for Raid Check plugin.\n\n|cFFFFFF00-|r Added key bindings for open a window, close a window and select a bookmark." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails!:|r " diff --git a/core/control.lua b/core/control.lua index b135c835..8336cb4f 100644 --- a/core/control.lua +++ b/core/control.lua @@ -331,7 +331,7 @@ _detalhes:InstanceCall (_detalhes.CheckPsUpdate) - _detalhes:SendEvent ("COMBAT_PLAYER_ENTER", nil, _detalhes.tabela_vigente) + _detalhes:SendEvent ("COMBAT_PLAYER_ENTER", nil, _detalhes.tabela_vigente, _detalhes.encounter_table and _detalhes.encounter_table.id) _detalhes:CheckSwitchToCurrent() end diff --git a/functions/classes.lua b/functions/classes.lua index b326a3b0..fd972604 100644 --- a/functions/classes.lua +++ b/functions/classes.lua @@ -99,7 +99,10 @@ do CONTAINER_MISCTARGET_CLASS = 10, CONTAINER_ENEMYDEBUFFTARGET_CLASS = 11 } - + + function _detalhes:name (actor) + return self.nome or actor.nome + end function _detalhes:Name (actor) return self.nome or actor.nome end diff --git a/functions/events.lua b/functions/events.lua index e0c1e64a..fc107213 100644 --- a/functions/events.lua +++ b/functions/events.lua @@ -220,15 +220,15 @@ local common_events = { elseif (not object) then for _, PluginObject in ipairs (_detalhes.RegistredEvents[event]) do - if (PluginObject.__eventtable) then + if (PluginObject.__eventtable) then --if passed a function to callback if (PluginObject [1].Enabled and PluginObject [1].__enabled) then if (type (PluginObject [2]) == "function") then PluginObject [2] (event, ...) else - PluginObject [1] [PluginObject [2]] (event, ...) + PluginObject [1] [PluginObject [2]] (PluginObject, event, ...) end end - else + else --if no function (only registred the event) sent the event to OnDetailsEvent if (PluginObject.Enabled and PluginObject.__enabled) then PluginObject:OnDetailsEvent (event, ...) end diff --git a/functions/link.lua b/functions/link.lua index dcf8ec14..3e5748df 100644 --- a/functions/link.lua +++ b/functions/link.lua @@ -188,7 +188,67 @@ ["finish"] = {}, } - function _detalhes:CreateWeakAura (spellid, name, icon_texture, glow, sound) + local debuff_prototype = { + ["cooldown"] = true, + ["trigger"] = { + ["spellId"] = "0", + ["unit"] = "", + ["spellIds"] = {}, + ["debuffType"] = "HARMFUL", + }, + } + local buff_prototype = { + ["cooldown"] = true, + ["trigger"] = { + ["spellId"] = "0", + ["unit"] = "", + ["spellIds"] = {}, + ["debuffType"] = "HELPFUL", + }, + } + local cast_prototype = { + ["trigger"] = { + ["type"] = "event", + ["spellId"] = "0", + ["subeventSuffix"] = "_CAST_SUCCESS", + ["unevent"] = "timed", + ["duration"] = "4", + ["event"] = "Combat Log", + ["subeventPrefix"] = "SPELL", + ["use_spellId"] = true, + } + } + + local stack_prototype = { + ["trigger"] = { + ["countOperator"] = ">=", + ["count"] = "0", + ["useCount"] = true, + }, + } + + local sound_prototype = { + ["actions"] = { + ["start"] = { + ["do_sound"] = true, + ["sound"] = "Interface\\Quiet.ogg", + ["sound_channel"] = "Master", + }, + }, + } + + local chat_prototype = { + ["actions"] = { + ["start"] = { + ["message"] = "", + ["message_type"] = "SAY", + ["do_message"] = true, + }, + }, + } + + function _detalhes:CreateWeakAura (spellid, name, icon_texture, target, stacksize, sound, chat) + if (not WeakAuras or not WeakAurasSaved) then return end @@ -202,20 +262,105 @@ icon.id = name icon.displayIcon = icon_texture - icon.trigger.spellId = spellid + + if (target) then + if (target == 1) then --Debuff on Player + local add = _detalhes.table.copy ({}, debuff_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.spellIds[1] = spellid + add.trigger.unit = "player" + _detalhes.table.deploy (icon, add) + + elseif (target == 2) then --Debuff on Target + local add = _detalhes.table.copy ({}, debuff_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.spellIds[1] = spellid + add.trigger.unit = "target" + _detalhes.table.deploy (icon, add) + + elseif (target == 3) then --Debuff on Focus + local add = _detalhes.table.copy ({}, debuff_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.spellIds[1] = spellid + add.trigger.unit = "focus" + _detalhes.table.deploy (icon, add) + + elseif (target == 11) then --Buff on Player + local add = _detalhes.table.copy ({}, buff_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.spellIds[1] = spellid + add.trigger.unit = "player" + _detalhes.table.deploy (icon, add) + + elseif (target == 12) then --Buff on Target + local add = _detalhes.table.copy ({}, buff_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.spellIds[1] = spellid + add.trigger.unit = "target" + _detalhes.table.deploy (icon, add) + + elseif (target == 13) then --Buff on Focus + local add = _detalhes.table.copy ({}, buff_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.spellIds[1] = spellid + add.trigger.unit = "focus" + _detalhes.table.deploy (icon, add) + + elseif (target == 21) then --Spell Cast Started + local add = _detalhes.table.copy ({}, cast_prototype) + add.trigger.spellId = tostring (spellid) + add.trigger.subeventSuffix = "_CAST_START" + _detalhes.table.deploy (icon, add) + + elseif (target == 22) then --Spell Cast Successful + local add = _detalhes.table.copy ({}, cast_prototype) + add.trigger.spellId = tostring (spellid) + _detalhes.table.deploy (icon, add) + end + else + icon.trigger.spellId = tostring (spellid) + tinsert (icon.trigger.spellIds, spellid) + end + + if (stacksize and stacksize >= 1) then + stacksize = floor (stacksize) + local add = _detalhes.table.copy ({}, stack_prototype) + add.trigger.count = tostring (stacksize) + _detalhes.table.deploy (icon, add) + end - tinsert (icon.trigger.spellIds, spellid) + 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 + + if (chat and chat ~= "") then + local add = _detalhes.table.copy ({}, sound_prototype) + add.actions.start.message = chat + _detalhes.table.deploy (icon, add) + end + + 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 .. ")" + break + end + end + end + + tinsert (WeakAurasSaved.displays ["Details! Aura Group"].controlledChildren, icon.id) WeakAuras.Add (icon) - tinsert (WeakAurasSaved.displays ["Details! Aura Group"].controlledChildren, name) - local options_frame = WeakAuras.OptionsFrame and WeakAuras.OptionsFrame() if (options_frame and options_frame:IsShown()) then - WeakAuras.ToggleOptions() - WeakAuras.ToggleOptions() + --WeakAuras.ToggleOptions() + --WeakAuras.ToggleOptions() else - WeakAuras.OpenOptions() + --WeakAuras.OpenOptions() end end @@ -224,7 +369,7 @@ if (not DetailsAuraPanel) then local f = CreateFrame ("frame", "DetailsAuraPanel", UIParent, "ButtonFrameTemplate") - f:SetSize (300, 250) + f:SetSize (300, 350) f:SetPoint ("center", UIParent, "center") f:SetFrameStrata ("HIGH") f:SetToplevel (true) @@ -257,10 +402,15 @@ --aura name local name_label = fw:CreateLabel (f, "Name: ", nil, nil, "GameFontNormal") - local name_textentry = fw:CreateTextEntry (f, _detalhes.empty_function, 150, 20) + local name_textentry = fw:CreateTextEntry (f, _detalhes.empty_function, 150, 20, "AuraName", "$parentAuraName") name_textentry:SetPoint ("left", name_label, "right", 2, 0) f.name = name_textentry + --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:SetPoint ("left", auraid_label, "right", 2, 0) + --aura icon local icon_label = fw:CreateLabel (f, "Icon: ", nil, nil, "GameFontNormal") local icon_button_func = function (texture) @@ -275,13 +425,86 @@ f.icon = icon_button_icon + --target + local aura_on_icon = [[Interface\Buttons\UI-GroupLoot-DE-Down]] + local aura_on_table = { + {label = "Debuff on You", value = 1, icon = aura_on_icon}, + {label = "Debuff on Target", value = 2, icon = aura_on_icon}, + {label = "Debuff on Focus", value = 3, icon = aura_on_icon}, + + {label = "Buff on You", value = 11, icon = aura_on_icon}, + {label = "Buff on Target", value = 12, icon = aura_on_icon}, + {label = "Buff on Focus", value = 13, icon = aura_on_icon}, + + {label = "Spell Cast Started", value = 21, icon = aura_on_icon}, + {label = "Spell Cast successful", value = 22, icon = aura_on_icon}, + } + local aura_on_options = function() + return aura_on_table + end + local aura_on = fw:CreateDropDown (f, aura_on_options, 1, 150, 20, "AuraOnDropdown", "$parentAuraOnDropdown") + local aura_on_label = fw:CreateLabel (f, "Target: ", nil, nil, "GameFontNormal") + aura_on:SetPoint ("left", aura_on_label, "right", 2, 0) + + --stack + 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) + + --sound effect + local play_sound = function (self, fixedParam, file) + print (file) + PlaySoundFile (file, "Master") + end + local sound_options = function() + local t = {{label = "No Sound", value = "", icon = [[Interface\Buttons\UI-GuildButton-MOTD-Disabled]]}} + 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}) + 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) + + --say something + local say_something_label = fw:CreateLabel (f, "Chat Message: ", 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) + + --aura addon + local addon_options = function() + local t = {} + if (WeakAuras) then + tinsert (t, {label = "Weak Auras 2", value = "WA", icon = [[Interface\AddOns\WeakAuras\icon]]}) + end + return t + end + local aura_addon = fw:CreateDropDown (f, addon_options, 1, 150, 20, "AuraAddonDropdown", "$parentAuraAddonDropdown") + local aura_addon_label = fw:CreateLabel (f, "Addon: ", nil, nil, "GameFontNormal") + aura_addon:SetPoint ("left", aura_addon_label, "right", 2, 0) + --create local create_func = function() - _detalhes:CreateWeakAura (f.spellid, f.name.text, DetailsAuraPanel.icon.texture, nil, nil) + local name = f.AuraName.text + local spellid = f.AuraSpellId.text + local icon = f.IconButton.icon.texture + local target = f.AuraOnDropdown.value + local stacksize = f.StackSlider.value + local sound = f.SoundEffectDropdown.value + local chat = f.SaySomething.text + local addon = f.AuraAddonDropdown.value + + if (addon == "WA") then + _detalhes:CreateWeakAura (spellid, name, icon, target, stacksize, sound, chat) + else + _detalhes:Msg ("No Aura Addon selected. Addons currently supported: WeakAuras 2.") + end f:Hide() end + local create_button = fw:CreateButton (f, create_func, 106, 16, "Create Aura") create_button:InstallCustomTexture() @@ -292,19 +515,26 @@ cancel_button:SetIcon ([[Interface\Buttons\UI-GroupLoot-Pass-Down]], nil, nil, nil, {0.125, 0.875, 0.125, 0.875}, nil, 4, 2) local x_start = 20 - local y_start = 20 + local y_start = 21 name_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*1) + (50)) * -1) - icon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*2) + (50)) * -1) + auraid_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*2) + (50)) * -1) + icon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*3) + (50)) * -1) + aura_on_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*4) + (50)) * -1) + stack_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*5) + (50)) * -1) + sound_effect_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*6) + (50)) * -1) + say_something_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*7) + (50)) * -1) + aura_addon_label:SetPoint ("topleft", f, "topleft", x_start, ((y_start*10) + (50)) * -1) - create_button:SetPoint ("topleft", f, "topleft", x_start, ((y_start*4) + (50)) * -1) - cancel_button:SetPoint ("left", create_button, "right", 20, 0) + create_button:SetPoint ("topleft", f, "topleft", x_start, ((y_start*12) + (50)) * -1) + cancel_button:SetPoint ("topright", f, "topright", x_start*-1, ((y_start*12) + (50)) * -1) end DetailsAuraPanel.spellid = spellid DetailsAuraPanel.name.text = spellname + DetailsAuraPanel.AuraSpellId.text = tostring (spellid) DetailsAuraPanel.icon.texture = spellicon DetailsAuraPanel:Show() @@ -426,4 +656,71 @@ BigWigs.RegisterMessage (_detalhes, "BigWigs_Message") end end + +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> details auras + + local aura_prototype = { + name = "", + type = "DEBUFF", + target = "player", + boss = "0", + icon = "", + stack = 0, + sound = "", + sound_channel = "", + chat = "", + chat_where = "SAY", + chat_extra = "", + } + + function _detalhes:CreateDetailsAura (name, auratype, target, boss, icon, stack, sound, chat) + + local aura_container = _detalhes.details_auras + + --already exists + if (aura_container [name]) then + _detalhes:Msg ("Aura name already exists.") + return + end + + --create the new aura + local new_aura = _detalhes.table.copy ({}, aura_prototype) + new_aura.type = auratype or new_aura.type + new_aura.target = auratype or new_aura.target + new_aura.boss = boss or new_aura.boss + new_aura.icon = icon or new_aura.icon + new_aura.stack = math.max (stack or 0, new_aura.stack) + new_aura.sound = sound or new_aura.sound + new_aura.chat = chat or new_aura.chat + + _detalhes.details_auras [name] = new_aura + + return new_aura + end + + function _detalhes:CreateAuraListener() + + local listener = _detalhes:CreateEventListener() + + function listener:on_enter_combat (event, combat, encounterId) + + end + + function listener:on_leave_combat (event, combat) + + end + + listener:RegisterEvent ("COMBAT_PLAYER_ENTER", "on_enter_combat") + listener:RegisterEvent ("COMBAT_PLAYER_LEAVE", "on_leave_combat") + + end + + + + + + + + \ No newline at end of file diff --git a/functions/profiles.lua b/functions/profiles.lua index 6a260364..0a849179 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -1048,7 +1048,9 @@ local default_global_data = { ["Battleground40"] = {enabled = false, update_speed = 1, use_row_animations = false, damage = true, heal = true, aura = true, energy = false, miscdata = true}, ["Arena"] = {enabled = false, update_speed = 1, use_row_animations = false, damage = true, heal = true, aura = true, energy = false, miscdata = true}, ["Dungeon"] = {enabled = false, update_speed = 1, use_row_animations = false, damage = true, heal = true, aura = true, energy = false, miscdata = true}, - } + }, + --> auras + details_auras = {}, } _detalhes.default_global_data = default_global_data diff --git a/functions/spells.lua b/functions/spells.lua index 34b46ccd..5f3afdd3 100644 --- a/functions/spells.lua +++ b/functions/spells.lua @@ -1565,7 +1565,8 @@ do --["DRUID"] = {}, [740] = {480, 8, 0}, --Tranquility [22842] = {0, 0, 1}, --Frenzied Regeneration - [124988] = {90, 30, 0}, --Nature's Vigil + --[124988] = {90, 30, 0}, --Nature's Vigil + [124974] = {90, 30, 0}, --Nature's Vigil --["HUNTER"] = {}, [172106] = {180, 6}, -- "Aspect of the Fox" diff --git a/gumps/janela_info.lua b/gumps/janela_info.lua index 9dc7ae69..861dec3e 100644 --- a/gumps/janela_info.lua +++ b/gumps/janela_info.lua @@ -3363,7 +3363,7 @@ local row_on_leave = function (self) end end -local row_on_mousedown = function (self) +local row_on_mousedown = function (self, button) if (self.fading_in) then return end @@ -3373,18 +3373,21 @@ local row_on_mousedown = function (self) self.x = _math_floor (x) self.y = _math_floor (y) - if ((not info.isLocked) or (info.isLocked == 0)) then + if (button == "RightButton" and not info.isMoving) then + _detalhes:FechaJanelaInfo() + + elseif (not info.isMoving and button == "LeftButton" and not self.isDetalhe) then info:StartMoving() info.isMoving = true - end + end end -local row_on_mouseup = function (self) +local row_on_mouseup = function (self, button) if (self.fading_in) then return end - if (info.isMoving) then + if (info.isMoving and button == "LeftButton" and not self.isDetalhe) then info:StopMovingOrSizing() info.isMoving = false end @@ -3403,12 +3406,12 @@ local row_on_mouseup = function (self) barra_antiga.textura:SetStatusBarColor (1, 1, 1, 1) --> volta a textura normal barra_antiga.on_focus = false --> não esta mais no foco - --> CLICOU NA MESMA BARRA + --> clicou na mesma barra if (barra_antiga == self) then --> info.mostrando_mouse_over = true return - --> CLICOU EM OUTRA BARRA + --> clicou em outra barra else --> clicou em outra barra e trocou o foco barra_antiga:SetAlpha (.9) --> volta a alfa antiga @@ -3425,8 +3428,7 @@ local row_on_mouseup = function (self) end end - --> NÃO TINHA BARRAS PRECIONADAS - -- info.mostrando = self + --> nao tinha barras pressionadas info.mostrando_mouse_over = false self:SetAlpha (1) self.textura:SetStatusBarColor (129/255, 125/255, 69/255, 1) @@ -3730,11 +3732,11 @@ function gump:CriaNovaBarraInfo3 (instancia, index) local janela = info.container_detalhes local esta_barra = CreateFrame ("Button", "Details_infobox3_bar_"..index, janela) - esta_barra:SetWidth (220) --> tamanho da barra de acordo com o tamanho da janela - esta_barra:SetHeight (16) --> altura determinada pela instância + esta_barra:SetWidth (220) + esta_barra:SetHeight (16) - local y = (index-1)*17 --> 17 é a altura da barra - y = y*-1 --> baixo + local y = (index-1) * 17 + y = y*-1 esta_barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0) esta_barra:SetPoint ("RIGHT", janela, "RIGHT", 59, 0) @@ -3754,7 +3756,7 @@ function gump:CriaNovaBarraInfo3 (instancia, index) esta_barra.icone:SetAlpha (1) esta_barra.isDetalhe = true - + SetBarraScripts (esta_barra, instancia, index) info.barras3 [index] = esta_barra --> barra adicionada diff --git a/images/TrainerGossipIcon.tga b/images/TrainerGossipIcon.tga deleted file mode 100644 index 098ac9273314cc66d11851473beb1ee70e27d877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmXw&-%C?r7{}kaGd5?NhU8YRJY&k%)V5%Y!8&XS8=E*AZi^F|2|}$>*ziY2mOE!5 zbg{^ryjT}P2zuv5fq`H*T?G+DQ8(QMUZwxR)Au>D0}t;x56|cMKF@QWR|vakJzb(p z$Tpon+hI0XC#=IPNe;Wy={)E0oH_6HdT{c$4Stgm?ZBIWM{tB^VBkVuFzAK({gH?- zl1}?aXJ`HSxw&k5dO8=3#d^=WToN-H(hJVjhUh?|R9Y%ltLt~y*6zV3A2b^3^WEJI zx98&5a4dcdBluU5ApoYspe5+JkiVi%%}`uPk~}c@PY=hEq-BaKSr|fspO7C%sGDW^ zF(Jzk6h3J2ghF~$$&knw^Q0xm3Z%^}J|pwvt*yq@k&zIzj3JrP$_+%HFd-xx)fupI ztlS?UK5K7x$ai`01Z_+}?Glejf>HuXKla}5(9)9yVl7>C#ZF}`EXZ7WwMLNq49QVQ zwsU7ubXH?IW?4<|^(V>7a*XlWLQ{njK~@LVX93SY;65CiuMQ6n+ zl1FikQiuezvTN-Qt diff --git a/images/bar_down_left_snap.tga b/images/bar_down_left_snap.tga deleted file mode 100644 index 3ce5a458a0fb38648344bb8c5b9539a3dda012f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2356 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 diff --git a/images/monster.tga b/images/monster.tga deleted file mode 100644 index 2204e785a5e597908421c31850111efd2e86bf26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12759 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 diff --git a/images/segmentos_icone.tga b/images/segmentos_icone.tga deleted file mode 100644 index 7d618bdbe0327ff9e32178e90ced9433d34ca5ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmYL{%SyvQ6o$_vX{LDOf>4p-I&)wd?u- zU3TG0T)1=dKY)+mV>o9*F_3d+Cja-(oHHRBpx%?91f}9HJXN8|BW+|n`LMFNg>2r! zBd-K%*}tg3vK>s%r4eTH4g$C2L$FE`tp%Mnzb9W6k4k?k3JT-P_pn6}I z%Ml=>&<1$}hS)!xT5=HM4Oq{)#}vFWRFMkSWCb)alY@J4g@6Zr^Olcz$^~ct>K66R z7tU)94E39{nh=_*ibf|_Wm6=i=zzts9@Qh(EeE^Y#b$8iU`@>;KSscf;x<8=z=fcNxmeOGt20HcG0L*s}Sw>D-I6asLE#+ u(AvgYG}XtF$=kEbOZ@)+fQ70R|9^#2%TPKg7fy>_@#t{X-z)AHGV})_eyThG diff --git a/images/sword.tga b/images/sword.tga deleted file mode 100644 index 2c73a0de33900b3d05b70f627acfee804a20d422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1774 zcmYk7eN0nV7{>2s@9mcqTBNPCRN7)G6|{f?f>cYPr2fDpX#1GswZcCgqGut2AvhB~^bIsH??@4dY`}}&&d!G9q zic(Ske{7WW6_1d|SHl+a$cZ)|bgm$DGyG8L6UrHeQI3)sd739vk?s*R?K*_;vPQ&P zETCyx-2XB~5j~?2Ekh^Kd+HKuR&9XI?gq;#W=k3DW|GFz497E^AkeIWqZytZeks~dSZ_U$KydkA=W|}h2lgJ86ap)yt3d5)o zYjne6_aV;Jgeb=v2@{4wX@n%#3wkR|xo^Vp#(S`nSiBDA%z{!;7pot9iHV{p(N0lH zAIlq{jtfedE=1Ytp*ChiWpcsjYr?Fxr;)p54D&XfM$X1l$m!Y-d!QPeQmy*nbrh$U zO6#N4SpC>%HS^RKzh?KJaq$@9;n5%>@t|MN@4R=z%<)e!KQs*wn`D%c@$aU2z=Qdlq~RISxE*my)z&R3j3>?=p+oy^5S%@#f!M~ zCCKXNN9|`fQ8{=JwcB>1^}sQN8aj|4T!eyfF{)}JSk+RBoH;X~5?M3H(wYIX7hQhdm0*@5z-U%}sZ2sTd!a^~lty0aCG+7I~JoA@cDxq&IFtjBYA?h52}EbsJXf+KXAs`(Q5Yg0bLjEb^ydWsOh9 z*(`d_-pMbZ%TgHSVWmr492g5hNM$gr|(uobg6j+U5z6+5OFS?qG zv0|AY?&Jh;9IM|+Ho1)q(YpAA`2`z?FsETPIE9dG(Cg5>ZY2(n_Tb$4QQZ6C8pbXh zLS~v18EFnwF7czSA&k!YB4oIXh|%!r5{K?5G#MGg38Fg2=E&8W;(av3D9DV}VnT0k zCypNJ$BC1J7{7W7C(rCdxM&_0Gn~FuJb?pI$tIqaO{Uxv2tyTn~!pyU|>;04=pe@TMk0r4mvZh9-Yc%cXmP5qQSt za$3-{bvjI=IW9NJr} zaOUiX`0e>^{PX8SJer)qo}KSX2R>K!PF+<#>}#&fBlG`9$v%l?UIu#C5JDbi-q%&5vNx}$x{YN!%4vtG4%o=HDAWzux0i1 ztiknbpX1l3ck%nPJHXY`*xA#F>asZ~4`;xcV1P%pXT-jH*mHbPVN<+nx U%0MJk9x5xHSydQX6iB8112hIDzW@LL diff --git a/plugins/Details_DmgRank/solo_bgtimeattack.tga b/plugins/Details_DmgRank/solo_bgtimeattack.tga deleted file mode 100644 index a86012247b40724a35cab27a4a68e09f49027ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262188 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 ~emotes + local emote_lines = {} local emote_search_table = {} @@ -1334,14 +1360,18 @@ do end end end + BossFrame.EmoteWidgets = {} + local bar_div_emotes = DetailsFrameWork:CreateImage (BossFrame, "Interface\\AddOns\\Details_EncounterDetails\\images\\boss_bg", 4, 240, "artwork", {724/1024, 728/1024, 0, 245/512}) + bar_div_emotes:SetPoint ("TOPLEFT", BossFrame, "TOPLEFT", 244, -74) + bar_div_emotes:Hide() + tinsert (BossFrame.EmoteWidgets, bar_div_emotes) + scrollframe = CreateFrame ("ScrollFrame", "EncounterDetails_EmoteScroll", BossFrame, "FauxScrollFrameTemplate") scrollframe:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_emotes) end) - scrollframe:SetPoint ("topleft", BossFrame, "topleft", 200, -75) + scrollframe:SetPoint ("topleft", BossFrame, "topleft", 249, -75) scrollframe:SetPoint ("bottomright", BossFrame, "bottomright", -33, 42) - --scrollframe:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16}) - --scrollframe:SetBackdropColor (1, 0, 0, 1) scrollframe.Update = refresh_emotes scrollframe:Hide() -- @@ -1382,9 +1412,7 @@ do end -- remove the left space text = text:gsub ("^%s$", "") - --- |TINTERFACE\\ICONS\\ability_socererking_arcanewrath.blp:20|t You have been branded by |cFFF00000|Hspell:156238|h[Arcane Wrath]|h|r! - + EncounterDetails:SendReportLines ({"Details! Encounter Emote at " .. time, "\"" .. text .. "\""}) end @@ -1507,18 +1535,214 @@ do BossFrame.titulo:SetPoint ("top", BossFrame, "top", 0, -18) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + + BossFrame.EnemySpellsWidgets = {} + --> spells and auras + + -- actor dropdown - local segment = EncounterDetails._segment - local combat = EncounterDetails:GetCombat (segment) + local EnemyActorSpells_label = DetailsFrameWork:CreateLabel (BossFrame, "Enemy Actor:", 11, nil, "GameFontHighlightSmall") + EnemyActorSpells_label:SetPoint ("topleft", BossFrame, "topleft", 25, -85) + + local spell_blocks = {} + local on_focus_gain = function (self) + self:HighlightText() + end + local on_focus_lost = function (self) + self:HighlightText (0, 0) + end - --spell cast by enemy actor + local on_enter_spell = function (self) + + GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetSpellByID (self.MyObject._spellid) + GameTooltip:Show() + + end + local on_leave_spell = function (self, capsule) + GameTooltip:Hide() + end - --debuff applied on players + local create_aura_func = function (spellid, _, self) + local name, _, icon = EncounterDetails.getspellinfo (spellid) + EncounterDetails:OpenAuraPanel (spellid, name, self and self.MyObject._icon.texture) + end + for i = 1, 10 do + local anchor_frame = CreateFrame ("frame", "BossFrameSpellAnchor" .. i, BossFrame) + + local icon_button_func = function (texture) + anchor_frame.icon.texture = texture + end + + local spellicon_button = DetailsFrameWork:NewButton (anchor_frame, nil, "$parentIconButton", "IconButton", 20, 20, function() DetailsFrameWork:IconPick (icon_button_func, true) end) + local spellicon = DetailsFrameWork:NewImage (spellicon_button, [[Interface\ICONS\TEMP]], 19, 19, "background", nil, "icon", "$parentIcon") + spellicon_button:InstallCustomTexture() + + local spellid = DetailsFrameWork:CreateTextEntry (anchor_frame, EncounterDetails.empty_function, 80, 20) + spellid:SetHook ("OnEditFocusGained", on_focus_gain) + spellid:SetHook ("OnEditFocusLost", on_focus_lost) + spellid:SetHook ("OnEnter", on_enter_spell) + spellid:SetHook ("OnLeave", on_leave_spell) + + local spellname = DetailsFrameWork:CreateTextEntry (anchor_frame, EncounterDetails.empty_function, 160, 20) + spellname:SetHook ("OnEditFocusGained", on_focus_gain) + spellname:SetHook ("OnEditFocusLost", on_focus_lost) + spellname:SetHook ("OnEnter", on_enter_spell) + spellname:SetHook ("OnLeave", on_leave_spell) + + spellicon_button:SetPoint ("topleft", BossFrame, "topleft", 255, -65 + (i * 21 * -1)) + spellicon:SetAllPoints() + spellid:SetPoint ("left", spellicon_button, "right", 4, 0) + spellname:SetPoint ("left", spellid, "right", 4, 0) + + local create_aura = DetailsFrameWork:NewButton (anchor_frame, nil, "$parentCreateAuraButton", "AuraButton", 105, 18, create_aura_func, nil, nil, nil, "Create Aura") + create_aura:SetPoint ("left", spellname, "right", 4, 0) + create_aura:InstallCustomTexture() + + anchor_frame.icon = spellicon + anchor_frame.spellid = spellid + anchor_frame.spellname = spellname + anchor_frame.aurabutton = create_aura + anchor_frame.aurabutton._icon = spellicon + + tinsert (spell_blocks, anchor_frame) + tinsert (BossFrame.EnemySpellsWidgets, anchor_frame) + + anchor_frame:Hide() + end + + local last_npc_name + + local update_enemy_spells = function (npc_name) + npc_name = npc_name or last_npc_name + last_npc_name = npc_name + + local combat = EncounterDetails:GetCombat (EncounterDetails._segment) + + if (combat and npc_name) then + + local spell_list = {} + + --damage + local npc = combat (1, npc_name) + if (npc) then + for spellid, spell in pairs (npc.spells._ActorTable) do + if (spellid > 10) then + local name, _, icon = EncounterDetails.getspellinfo (spellid) + tinsert (spell_list, {spellid, name, icon}) + end + end + end + + --heal + local npc = combat (2, npc_name) + if (npc) then + for spellid, spell in pairs (npc.spells._ActorTable) do + if (spellid > 10) then + local name, _, icon = EncounterDetails.getspellinfo (spellid) + tinsert (spell_list, {spellid, name, icon, true}) + end + end + end + + EncounterDetails_SpellAurasScroll.spell_pool = spell_list + EncounterDetails_SpellAurasScroll:Update() + end + end + + local refresh_spellauras = function (self) + + local pool = EncounterDetails_SpellAurasScroll.spell_pool + local offset = FauxScrollFrame_GetOffset (self) + + for bar_index = 1, 10 do + local data = pool [bar_index + offset] + local bar = spell_blocks [bar_index] + + if (data) then + bar:Show() + + bar.icon.texture = data [3] + bar.spellid.text = data [1] + bar.spellname.text = data [2] + + bar.spellid._spellid = data [1] + bar.spellname._spellid = data [1] + + local is_heal = data [4] + if (is_heal) then + bar.spellid:SetBackdropBorderColor (0, 1, 0) + bar.spellname:SetBackdropBorderColor (0, 1, 0) + else + bar.spellid:SetBackdropBorderColor (1, 1, 1) + bar.spellname:SetBackdropBorderColor (1, 1, 1) + end + + bar.aurabutton:SetClickFunction (create_aura_func, data [1]) + + else + bar:Hide() + end + end + + FauxScrollFrame_Update (self, #pool, 10, 20) + + end + + local spell_scrollframe = CreateFrame ("ScrollFrame", "EncounterDetails_SpellAurasScroll", BossFrame, "FauxScrollFrameTemplate") + spell_scrollframe:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_spellauras) end) + spell_scrollframe:SetPoint ("topleft", BossFrame, "topleft", 200, -75) + spell_scrollframe:SetPoint ("bottomright", BossFrame, "bottomright", -33, 42) + spell_scrollframe.Update = refresh_spellauras + spell_scrollframe:Hide() + + tinsert (BossFrame.EnemySpellsWidgets, spell_scrollframe) + + EncounterDetails.update_enemy_spells = update_enemy_spells + + local on_select_actor_spell = function (self, fixedparam, option) + last_npc_name = option + update_enemy_spells (option) + end + + local build_actor_menu = function() + local t = {} + local combat = EncounterDetails:GetCombat (EncounterDetails._segment) + + if (combat) then + local AllDamageCharacters = combat:GetActorList (DETAILS_ATTRIBUTE_DAMAGE) + for index, character in ipairs (AllDamageCharacters) do + if (character:IsEnemy()) then + tinsert (t, {label = character:name(), value = character:name(), icon = "Interface\\AddOns\\Details_EncounterDetails\\images\\icon", onclick = on_select_actor_spell, iconcolor = "silver"}) + end + end + return t + else + return t + end + end + EncounterDetails.build_actor_menu = build_actor_menu + + local EnemyActorSpells = DetailsFrameWork:NewDropDown (BossFrame, _, "$parentEnemyActorSpellsDropdown", "EnemyActorSpells", 160, 20, build_actor_menu, 1) + EnemyActorSpells:SetPoint ("topleft", EnemyActorSpells_label, "bottomleft", -1, -2) + + EnemyActorSpells:Hide() + EnemyActorSpells_label:Hide() + + local bar_div = DetailsFrameWork:CreateImage (BossFrame, "Interface\\AddOns\\Details_EncounterDetails\\images\\boss_bg", 4, 240, "artwork", {724/1024, 728/1024, 0, 245/512}) + bar_div:SetPoint ("TOPLEFT", BossFrame, "TOPLEFT", 244, -74) + bar_div:Hide() + + tinsert (BossFrame.EnemySpellsWidgets, EnemyActorSpells_label) + tinsert (BossFrame.EnemySpellsWidgets, EnemyActorSpells) + tinsert (BossFrame.EnemySpellsWidgets, bar_div) + + ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ local frame = BossFrame diff --git a/plugins/Details_EncounterDetails/images/boss_bg.tga b/plugins/Details_EncounterDetails/images/boss_bg.tga index 857b93b2a9f14592a3df014e92e8631403f2166b..a971ce8d188f29fce88169d4f2d15905e8e392fa 100644 GIT binary patch delta 7287 zcmcIpeRNdC70=zxF1z_4#NEwq6Ts|=lpK;kc9U#E0t5;{q8Pp_R0>FAt!R7DiXeqz z5!xbJAR`Q4no`@wB1qDQ41{lJO9g=*D5402&q^&hi2~;oXndXbG4tNr9kzI|`$tap zcYpWJ%$@u0yZ7$#dROy7SEDZ&oS&SWEZZYxk%SDtKOs^YNpQJc2{Qd?f38VAg3E2$ ziK(fna#>j!Wd#yS%SsbmE;H*3=}68N?4)|P(d~=MglOwBZ zH@S-!JzMG5;dQxnHhZE8YL_0&dn+3Hvf!2mwKn>l>Ym!Al#tJk+8TXQr1%u5|MZBQ zhO~lENcLuA$OVOkvOCEwbt&5no$0Y;dMue9OLn=XV}0L- zSTRnofu2(S*4|=~2emhQ@y7|qN1Tei`kJRmB7ds+zSUwFySCS<@lt@66Kk=aHyB%oasY|+xOG-;* ze}-Q!juhWP@WK>Gv$5*`bFO! zJz5U#yaNKLd&@6_Yt_(U^j`USG4!UE19!#pB7BZSF-6NyIDf*at%{mz*^QyT7l`u> zE$B_?Z6Uhz;>O^cDz~btO3uv6l=~F+iP`szOMi80EHv_IzRs}A`(jba_m2l`0(i)k zRU-JxXPrnh<@Q}c z7$w4MbKr3i{V^!D+fC&7|L-Jev2A z3zrwcH74Tc!MeCReySLbGjacm+BS;uPfFmr1tqg1kjL+d+aZmmP%MDk%AktF{9QpR z%YnW{^`J4}Srsr`03YoK!(w5)pb|o;VDbZG<^Zs9x$znxlu#|eQK-U0{xuNt4H>&f z^jK{*e)?N*o9#_?J)ur|l#`9yP`urR+!_MeRw3yz6v9!^)CXZGhYYt#!=RMIs@utp zYM>>8?i&pn^DvC%5Lc#e!Jg#f;ZP7OBDB_+&0+3frOe1jH8Z^A!x5r;q3?zO888Zd z7^|v^j*N!K1)`=F4|!xP)N+w=2UN{Nj*f#L2xMwOgx7x;d}P|AFeN^tV?4E?r=vJ8 zZf?_yvghaE>I zmPg@AIv`i3!7gr@hZ|{n22OBT3(RFdg7a1gQ&uh_E4z}t)8S1n<5tv%Z|-w&GFGIh zX4S1rNBL{Lr2ctW!}n$cutFhIUVvkFkkzfrB0rv`I3_x|Xqm45h?i8%hS%cA(YwD( zB8hY0bf&0N_A^+;;ww&6lg=;0tBe;Xgq6CO(7Jf4 zkQ)`V)RkRP{-z=_=jSwa>yMVjcvKPExIYW!ZAu{*eqn4n4qv&>o@C=9Si+36GE-0% zs&|hTN@kM%3QZLuePc8iHD(7N@`^_La~M zte`VWTs7a&R@6ZR-#KnRf3wa}Y)Uxv1FPTKec(C~eo$xFY64|w-w;w)~=LWlO} zkmYZ|3f|oDCtTS;E>7D3Zq#}pjl9qR6BC14Lt9!}DreCCsU%V&yIpRYDS6{g&b$M8 zcAcm6R~fzxxv02EcDpS+<%Oa+oAllUt;|i~;;_mO6@}y^caqtz&d(sUojl6;3Qw^g z3diu7`_y_Vg^ZLSh2NHO#3whyO;(eunGnFDuhNR2@iD_$&b zhkv@Y3oxu)+X2a-ySsNdtj=T9M%bDqhuym~iyzO}4;><^HJg#Se}W)$fMp9-9;UoLr|DZ!9zDPyi@$^##_KTQKD@t%XubvxWo3`|DMv|_Z_y7bDi=U zu$#s-%R=3p$G;Yk$BxP5yTFOQJxI+*1wUd<6Nd3u*{&W>J0X3HUKas38 uk+GaoCEwxK2uiBda)yOut(KGo%RXaAkE{B2^_c1rH3j2`Ru8Z0o$z0ijEX1# delta 3517 zcmZ{me^eCL6~}vrUBv~QB@6-!C`2P15hKJB(Nr{Oet?PigQ$eW&{AU>Ll9bN&{9ql z8m%_|xFN43P!z(+Nlp~gskz2vb&cVN5J96xg%l2?%p>4W3~RfLSwD31_T5Q@ZV4LzyGKyv6YenK|w(SR;$(E{9ElAn!_Dtf@GSckY@$8XhU9qL?H*Co{7#mSs>^DfRWlS2K_ z{7I;~X-XI9qAbPf5id{O33%a>O?_}$HDHq?RJ}a?NC`gMXv6Z|CiSYC54dx!1$!U0 zs^z<10CfFDA7GYq1na4Scr}AE0UfF1S;1lmR9$-}0d_nnV`r+&${WDUoCH>Oq6QRo z#oi>IZ^JCRY0#5#h5dfj`k58*)=CSWZLq3Y_62|iL1Jn&Jl`dddf zurjwc3NNy%KOA_%Fe*K`8gOJ$ggU0_x*vPGLr<})4B3Dy0&3q+HH6Q3o5ymal_dTy`)+&Ys>+E zEIk*1HSTw{VnpCP=P-Q3Ei+dugk#OQb$V8Ip^S^Z`2=I~EXegk=k0psxQ_ov3uYEZ z;OGnQ^H?~9moE^XUsH~YJFtI?1={e9ORfCsG*xo>bAETBP0jgsoP?PrT-NqfN%%oB zmrMV7MbeME=d`z}`TzRPbf812r(?S2*R+i+QgnthSSD< z;n9i^w&DS}W`sOkVH>A_%Sdre+I-giQ>Zt>A7|d10=;*3`ZFOAFQzMO$ux*S>t`cb z;#By+7_09>drJISh8+Ugm{hoQM;qN4qxdYxj4sWc4)J2KD<6Uck(~P(Oc6;+8q5(% z^-P!~lAc*GS0L=bY*1)ry6*}hljwPjkr80Pt8Iu#093af@trqK{;&VdDjMX9+^B9f!e zz#4(DRrwHy?zLvBS_Zjyu(p+tqr5zyo6oc6(Wqa*G$DgDyiOpV>Hk}yQ1){1a5%XY zPF>GKu`$DgnTBPmd;wk(JR18VtQCo4CA=k)k^DqqSnGe0e@Tu-A3R- zM_mdfmjn6I=``mL;s#u|-v$bnSDW$o?^-DFH7FAk`O~4jF#a}#@{erJASmL7f!)(Z}4wfDK#vz+0ibxRH*4mFCW zv?jo{N1@@>P~q!_kk(x^4xzl~P>5=w&ezhXqwU+_ZKKmcx%JR15S(QXA+0?-?MuUP z*ypjNz6U`j?d!~YF5bhC|A%l^@&K7eHA1teiORBvvmOEqO;X`S6aVgO8D`o?5T|zm zJfCf=g)q{(EaB{SXcr%%H%}PTJ(8B#q0@IOA$pHU&+Uguqvc}N4)}h{WZpV_d;rX# zN!|#t8BGw0zjB7LsDrT2BJEj zrZ01=MrL!5K`gUZY9I5oui(t>5RE2#*Qh-XJ0yK(dg&xw_R7^=@Qqi#;sV9b6R^__ z!MbcB_jyS0%88di*5wzJdj;aXvf(?J;FZ0-VDrj^KDfs#pS=Myy>kCenC+G0{s-w^ zxela6ul(91UE|xqwp5w=hD$m6_3^>)Mo3G%0}BmUr0l^#S)ep;aBw3?nlm_9E=$w& z!PTEzsLd*k9~{{3k@VVY#kH`7A<{*D-7PFfk@j%a${q-ninwZH&7o2f-_fek5g$#i L9>HSnlWhM7!?*mR diff --git a/startup.lua b/startup.lua index 4a80ecc1..00b56bd5 100644 --- a/startup.lua +++ b/startup.lua @@ -453,6 +453,9 @@ function _G._detalhes:Start() --> start announcers _detalhes:StartAnnouncers() + --> start aura + _detalhes:CreateAuraListener() + --> open welcome if (self.is_first_run) then _detalhes:OpenWelcomeWindow()