From 701baee6147b909e2629f38c919666a4d5fc1dc4 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Fri, 23 Oct 2020 15:42:25 -0300 Subject: [PATCH] fix --- Libs/DF/LibDFramework-1.0.toc | 2 +- Libs/DF/background.tga | Bin 364 -> 0 bytes Libs/DF/border_1.tga | Bin 1446 -> 0 bytes Libs/DF/border_2.tga | Bin 1482 -> 0 bytes Libs/DF/border_3.tga | Bin 8236 -> 0 bytes Libs/DF/button.lua | 2 - Libs/DF/cooltip.lua | 31 +-- Libs/DF/cooltip_background.tga | Bin 24692 -> 0 bytes Libs/DF/feedback_sites.tga | Bin 35400 -> 0 bytes Libs/DF/fw.lua | 7 +- Libs/DF/icons.tga | Bin 2032 -> 0 bytes Libs/DF/mail.tga | Bin 1759 -> 0 bytes Libs/DF/panel.lua | 102 +++++---- Libs/DF/spells.lua | 4 + Libs/DF/textentry.lua | 11 +- boot.lua | 4 +- classes/class_custom.lua | 16 +- classes/class_damage.lua | 1 - classes/custom_damagedone.lua | 318 +++++++++++++++++++++++++++- classes/custom_healingdone.lua | 297 +++++++++++++++++++++++++- frames/window_options2.lua | 8 +- frames/window_options2_sections.lua | 10 + 22 files changed, 718 insertions(+), 95 deletions(-) delete mode 100644 Libs/DF/background.tga delete mode 100644 Libs/DF/border_1.tga delete mode 100644 Libs/DF/border_2.tga delete mode 100644 Libs/DF/border_3.tga delete mode 100644 Libs/DF/cooltip_background.tga delete mode 100644 Libs/DF/feedback_sites.tga delete mode 100644 Libs/DF/icons.tga delete mode 100644 Libs/DF/mail.tga diff --git a/Libs/DF/LibDFramework-1.0.toc b/Libs/DF/LibDFramework-1.0.toc index 872795608..5f5426ab1 100644 --- a/Libs/DF/LibDFramework-1.0.toc +++ b/Libs/DF/LibDFramework-1.0.toc @@ -1,4 +1,4 @@ -## Interface: 80000 +## Interface: 90001 ## Title: Lib: LibDFramework-1.0 ## Notes: Base Framework for many Addons diff --git a/Libs/DF/background.tga b/Libs/DF/background.tga deleted file mode 100644 index 8978d43ddea4852d65be23eaeee51051696ce996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 wcmZQz;9`IQ2L=ZQ1&;k@W@i6K39`cg7MdYJp{`+`!Jhtpx)E-kKCXHU0Lvboo&W#< diff --git a/Libs/DF/border_1.tga b/Libs/DF/border_1.tga deleted file mode 100644 index 0f84fce6c5f4373f1d400757ab3cd4c02d7d7cab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmb`HOHKko5QckJ8dn~{3+OE{Au*cxig(}=4s3`kb|OL;7d(zdTo_DDM1xE_(~bVs z)zi&5JYvEm6g@v(U;SM(g%EopyKcq4IM@y7b~qe9KN`K+Y|cWnnoK5&wJ3_FtYP05 zYwdPhMYJ!=e{uQJo=DuIxO2nmI6(vko{;uDA6Za3b6iEk`^ zI-L%w68AA__$2fl(n3@!mAJZS>vf5(xwB=h!dAjszu(s;Kdjg5>YhlnO3ab6qrN#N z>jJIvOskO{-ZvNw=9~|AintHPAy#Rl(Mair+lX^nHnLN0<9Iw?!-jKa3uM@KgQ;@N zclNP@Y3tChyf4SJwF}G-$5cyv7MP%0pE#psVx@CFKi4uf*YW3E!OWk1%1o-o`TkjX z?Vn6L0zQAMOxw>DOgoajUe7=G?ERoYqAQ>PcQbePEiwK0Qpf)G6B^eE$U7YJdmc(D zH+ao)3toxKGfgDo@?6rL(FJxa?ZHN_{RAHMTK07_UIWC`+j>Invmjmbk diff --git a/Libs/DF/border_2.tga b/Libs/DF/border_2.tga deleted file mode 100644 index 22b2c534aa628bc00285f872b4f572982d7c42fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1482 zcmbu9+e*Vg5QaC<3lT4T1YbbkqC!CwJmKTmdf{y;l(tDvQhIo*QoN7~f>o+blilb) z*~zZy$x|WI+3CzT|4w!*#I{I2*J4-fZ8@|Y3Ee=zmFsaK|+nW*=5%ynI*^UCFNlt)`dMhcjaynxKSK%N8R(YRCME!z)Lfq z3^Op>w@i+aLY>#|_amJL5|4>Is}n0`qAJw6eNhn!zz=>=+lJ7>qaEM4uI?lTSU@9O3R#TCbe38MK<UtZ2$14 zj;+&~VlL@4Ovm%QspB}pjZY!=|6i`w@8C~mJ{%5Zel!|M0iz1IaZ13*8{hXMGU}E* yL0$nyic+bx)W29PhW3hlyDxPYC)>H8K8Qn!IX}I~UgpknC&&9&hqC~NW(zh=CE|{4KB%vf)jC65`=zhXCfd+= zy=g~>?db7+&t{x+;b(2p$GEqNvGm?+kFV=d+FyJ9Yv*4YZym38{)j(tu+*W10spiD zO`Jb|CHX(*Hpx|AP2>;#;eym4moezjUjx75{HGPb_mBPu{U7>Y^#3U@F6LqW@trL} ze?Whr|Cq80^j8D=%X=Sk8p96$YncBcKA68u`DymbALt+9;8LdR3I4Ck{~C|dKJW+r V)#fjcTi-qH-Ci%pm$B#WL?5Q#l^g&7 diff --git a/Libs/DF/button.lua b/Libs/DF/button.lua index f281d204e..a3fd71588 100644 --- a/Libs/DF/button.lua +++ b/Libs/DF/button.lua @@ -1071,8 +1071,6 @@ function DF:NewButton (parent, container, name, member, w, h, func, param1, para build_button (ButtonObject.button) ButtonObject.widget = ButtonObject.button - - --ButtonObject.button:SetBackdrop ({bgFile = DF.folder .. "background", tileSize = 64, edgeFile = DF.folder .. "border_2", edgeSize = 10, insets = {left = 1, right = 1, top = 1, bottom = 1}}) ButtonObject.button:SetBackdropColor (0, 0, 0, 0.4) ButtonObject.button:SetBackdropBorderColor (1, 1, 1, 1) diff --git a/Libs/DF/cooltip.lua b/Libs/DF/cooltip.lua index f7c4fb8e7..28952c027 100644 --- a/Libs/DF/cooltip.lua +++ b/Libs/DF/cooltip.lua @@ -289,11 +289,12 @@ function DF:CreateCoolTip() --> build widgets for frame build_main_frame (frame1) - GameCooltipFrame1_FrameBackgroundCenter:SetTexture (DF.folder .. "cooltip_background") + --is this still in use? + GameCooltipFrame1_FrameBackgroundCenter:SetTexture ([[Interface\Tooltips\UI-Tooltip-Background]]) GameCooltipFrame1_FrameBackgroundCenter:SetTexCoord (0.10546875, 0.89453125, 0, 1) - GameCooltipFrame1_FrameBackgroundLeft:SetTexture (DF.folder .. "cooltip_background") + GameCooltipFrame1_FrameBackgroundLeft:SetTexture ([[Interface\Tooltips\UI-Tooltip-Background]]) GameCooltipFrame1_FrameBackgroundLeft:SetTexCoord (0, 0.103515625, 0, 1) - GameCooltipFrame1_FrameBackgroundRight:SetTexture (DF.folder .. "cooltip_background") + GameCooltipFrame1_FrameBackgroundRight:SetTexture ([[Interface\Tooltips\UI-Tooltip-Background]]) GameCooltipFrame1_FrameBackgroundRight:SetTexCoord (0.896484375, 1, 0, 1) --> secondary frame @@ -319,11 +320,12 @@ function DF:CreateCoolTip() frame2:SetPoint ("bottomleft", frame1, "bottomright", 4, 0) - GameCooltipFrame2_FrameBackgroundCenter:SetTexture (DF.folder .. "cooltip_background") + --is this still in use? + GameCooltipFrame2_FrameBackgroundCenter:SetTexture ([[Interface\Tooltips\UI-Tooltip-Background]]) GameCooltipFrame2_FrameBackgroundCenter:SetTexCoord (0.10546875, 0.89453125, 0, 1) - GameCooltipFrame2_FrameBackgroundLeft:SetTexture (DF.folder .. "cooltip_background") + GameCooltipFrame2_FrameBackgroundLeft:SetTexture ([[Interface\Tooltips\UI-Tooltip-Background]]) GameCooltipFrame2_FrameBackgroundLeft:SetTexCoord (0, 0.103515625, 0, 1) - GameCooltipFrame2_FrameBackgroundRight:SetTexture (DF.folder .. "cooltip_background") + GameCooltipFrame2_FrameBackgroundRight:SetTexture ([[Interface\Tooltips\UI-Tooltip-Background]]) GameCooltipFrame2_FrameBackgroundRight:SetTexCoord (0.896484375, 1, 0, 1) CoolTip.frame1 = frame1 @@ -3335,23 +3337,23 @@ function DF:CreateCoolTip() end end - return ture + return true end --> all done CoolTip:ClearAllOptions() --- local preset2_backdrop = {bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], edgeFile = DF.folder .. "border_3", tile=true, --- edgeSize = 16, tileSize = 64, insets = {left = 3, right = 3, top = 4, bottom = 4}} - - local preset2_backdrop = {bgFile = DF.folder .. "background", edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true, - edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} + local preset2_backdrop = {bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, + tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} local default_backdrop_color = {0.09019, 0.09019, 0.18823, 0.8} local default_backdropborder_color = {1, 1, 1, 1} local gray_table = {0.37, 0.37, 0.37, 0.95} local white_table = {1, 1, 1, 1} local black_table = {0.2, 0.2, 0.2, 1} + + local backdropColorPreset2 = {.2, .2, .2, 1} + local borderColorPreset2 = {.2, .2, .2, 1} function CoolTip:Preset (number) self:Reset() @@ -3373,11 +3375,10 @@ function DF:CreateCoolTip() self:SetOption ("ButtonsYMod", -4) self:SetOption ("YSpacingMod", -4) self:SetOption ("IgnoreButtonAutoHeight", true) - self:SetColor (1, 0.5, 0.5, 0.5, 0) - self:SetBackdrop (1, preset2_backdrop, gray_table, black_table) - self:SetBackdrop (2, preset2_backdrop, gray_table, black_table) + self:SetBackdrop (1, preset2_backdrop, backdropColorPreset2, borderColorPreset2) + self:SetBackdrop (2, preset2_backdrop, backdropColorPreset2, borderColorPreset2) end end diff --git a/Libs/DF/cooltip_background.tga b/Libs/DF/cooltip_background.tga deleted file mode 100644 index 8c46e0de7db32e1139fee15646bb25341dbe00cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24692 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 diff --git a/Libs/DF/panel.lua b/Libs/DF/panel.lua index aeb31d7f9..389cdf10d 100644 --- a/Libs/DF/panel.lua +++ b/Libs/DF/panel.lua @@ -1713,8 +1713,8 @@ function DF:IconPick (callback, close_when_select, param1, param2) self.icon:SetBlendMode ("BLEND") end - local backdrop = {bgFile = DF.folder .. "background", tile = true, tileSize = 16, - insets = {left = 0, right = 0, top = 0, bottom = 0}, edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], edgeSize = 10} + local backdrop = {bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, + insets = {left = 0, right = 0, top = 0, bottom = 0}, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1} for i = 0, 9 do local newcheck = CreateFrame ("Button", "DetailsFrameworkIconPickFrameButton"..(i+1), DF.IconPickFrame, "BackdropTemplate") @@ -2033,12 +2033,14 @@ function DF:CreateSimplePanel (parent, w, h, title, name, panel_options, db) local close = CreateFrame ("button", name and name .. "CloseButton", title_bar) close:SetFrameLevel (DF.FRAMELEVEL_OVERLAY) close:SetSize (16, 16) - close:SetNormalTexture (DF.folder .. "icons") - close:SetHighlightTexture (DF.folder .. "icons") - close:SetPushedTexture (DF.folder .. "icons") - close:GetNormalTexture():SetTexCoord (0, 16/128, 0, 1) - close:GetHighlightTexture():SetTexCoord (0, 16/128, 0, 1) - close:GetPushedTexture():SetTexCoord (0, 16/128, 0, 1) + + close:SetNormalTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + close:SetHighlightTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + close:SetPushedTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + close:GetNormalTexture():SetDesaturated(true) + close:GetHighlightTexture():SetDesaturated(true) + close:GetPushedTexture():SetDesaturated(true) + close:SetAlpha (0.7) close:SetScript ("OnClick", simple_panel_close_click) f.Close = close @@ -2065,7 +2067,7 @@ function DF:CreateSimplePanel (parent, w, h, title, name, panel_options, db) end local Panel1PxBackdrop = {bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 64, -edgeFile = DF.folder .. "border_3", edgeSize = 9, insets = {left = 2, right = 2, top = 3, bottom = 3}} +edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, insets = {left = 2, right = 2, top = 3, bottom = 3}} local Panel1PxOnClickClose = function (self) self:GetParent():Hide() @@ -2075,9 +2077,9 @@ local Panel1PxOnToggleLock = function (self) self.IsLocked = false self:SetMovable (true) self:EnableMouse (true) - self.Lock:GetNormalTexture():SetTexCoord (32/128, 48/128, 0, 1) - self.Lock:GetHighlightTexture():SetTexCoord (32/128, 48/128, 0, 1) - self.Lock:GetPushedTexture():SetTexCoord (32/128, 48/128, 0, 1) + self.Lock:GetNormalTexture():SetTexCoord (16/64, 32/64, 0, 1) + self.Lock:GetHighlightTexture():SetTexCoord (16/32, 32/64, 0, 1) + self.Lock:GetPushedTexture():SetTexCoord (16/64, 32/64, 0, 1) if (self.OnUnlock) then self:OnUnlock() end @@ -2088,9 +2090,9 @@ local Panel1PxOnToggleLock = function (self) self.IsLocked = true self:SetMovable (false) self:EnableMouse (false) - self.Lock:GetNormalTexture():SetTexCoord (16/128, 32/128, 0, 1) - self.Lock:GetHighlightTexture():SetTexCoord (16/128, 32/128, 0, 1) - self.Lock:GetPushedTexture():SetTexCoord (16/128, 32/128, 0, 1) + self.Lock:GetNormalTexture():SetTexCoord (0/64, 16/64, 0, 1) + self.Lock:GetHighlightTexture():SetTexCoord (0/64, 16/64, 0, 1) + self.Lock:GetPushedTexture():SetTexCoord (0/64, 16/64, 0, 1) if (self.OnLock) then self:OnLock() end @@ -2205,22 +2207,28 @@ function DF:Create1PxPanel (parent, w, h, title, name, config, title_anchor, no_ local close = CreateFrame ("button", name and name .. "CloseButton", f, "BackdropTemplate") close:SetSize (16, 16) - close:SetNormalTexture (DF.folder .. "icons") - close:SetHighlightTexture (DF.folder .. "icons") - close:SetPushedTexture (DF.folder .. "icons") - close:GetNormalTexture():SetTexCoord (0, 16/128, 0, 1) - close:GetHighlightTexture():SetTexCoord (0, 16/128, 0, 1) - close:GetPushedTexture():SetTexCoord (0, 16/128, 0, 1) + close:SetNormalTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + close:SetHighlightTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + close:SetPushedTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + close:GetNormalTexture():SetDesaturated(true) + close:GetHighlightTexture():SetDesaturated(true) + close:GetPushedTexture():SetDesaturated(true) close:SetAlpha (0.7) local lock = CreateFrame ("button", name and name .. "LockButton", f, "BackdropTemplate") lock:SetSize (16, 16) - lock:SetNormalTexture (DF.folder .. "icons") - lock:SetHighlightTexture (DF.folder .. "icons") - lock:SetPushedTexture (DF.folder .. "icons") - lock:GetNormalTexture():SetTexCoord (32/128, 48/128, 0, 1) - lock:GetHighlightTexture():SetTexCoord (32/128, 48/128, 0, 1) - lock:GetPushedTexture():SetTexCoord (32/128, 48/128, 0, 1) + lock:SetNormalTexture ([[Interface\GLUES\CharacterSelect\Glues-AddOn-Icons]]) + lock:SetHighlightTexture ([[Interface\GLUES\CharacterSelect\Glues-AddOn-Icons]]) + lock:SetPushedTexture ([[Interface\GLUES\CharacterSelect\Glues-AddOn-Icons]]) + lock:GetNormalTexture():SetDesaturated(true) + lock:GetHighlightTexture():SetDesaturated(true) + lock:GetPushedTexture():SetDesaturated(true) + --lock:GetNormalTexture():SetBlendMode("ADD") + --lock:GetHighlightTexture():SetBlendMode("ADD") + --lock:GetPushedTexture():SetBlendMode("ADD") + --lock:GetNormalTexture():SetTexCoord(73/256, 105/256, 64/128, 110/) + --lock:GetHighlightTexture():SetTexCoord(73/256, 105/256, 64/128, 110/) + --lock:GetPushedTexture():SetTexCoord(73/256, 105/256, 64/128, 110/) lock:SetAlpha (0.7) close:SetPoint ("topright", f, "topright", -3, -3) @@ -2438,12 +2446,12 @@ function DF:CreateOptionsButton (parent, callback, name) local b = CreateFrame ("button", name, parent, "BackdropTemplate") b:SetSize (14, 14) - b:SetNormalTexture (DF.folder .. "icons") - b:SetHighlightTexture (DF.folder .. "icons") - b:SetPushedTexture (DF.folder .. "icons") - b:GetNormalTexture():SetTexCoord (48/128, 64/128, 0, 1) - b:GetHighlightTexture():SetTexCoord (48/128, 64/128, 0, 1) - b:GetPushedTexture():SetTexCoord (48/128, 64/128, 0, 1) + b:SetNormalTexture ([[Interface\GossipFrame\BinderGossipIcon]]) + b:SetHighlightTexture ([[Interface\GossipFrame\BinderGossipIcon]]) + b:SetPushedTexture ([[Interface\GossipFrame\BinderGossipIcon]]) + b:GetNormalTexture():SetDesaturated(true) + b:GetHighlightTexture():SetDesaturated(true) + b:GetPushedTexture():SetDesaturated(true) b:SetAlpha (0.7) b:SetScript ("OnClick", callback) @@ -2466,10 +2474,6 @@ end function DF:CreateFeedbackButton (parent, callback, name) local b = CreateFrame ("button", name, parent, "BackdropTemplate") b:SetSize (12, 13) - b:SetNormalTexture (DF.folder .. "mail") - b:SetPushedTexture (DF.folder .. "mail") - b:SetHighlightTexture (DF.folder .. "mail") - b:SetScript ("OnClick", callback) b:SetScript ("OnEnter", function (self) GameCooltip2:Reset() @@ -2479,12 +2483,14 @@ function DF:CreateFeedbackButton (parent, callback, name) b:SetScript ("OnLeave", function (self) GameCooltip2:Hide() end) + + print("Framework:CreateFeedbackButton() is deprecated.") return b end -local backdrop_fb_line = {bgFile = DF.folder .. "background", edgeFile = DF.folder .. "border_3", -tile = true, tileSize = 64, edgeSize = 8, insets = {left = 2, right = 2, top = 2, bottom = 2}} +local backdrop_fb_line = {bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, +tile = true, tileSize = 64, insets = {left = 2, right = 2, top = 2, bottom = 2}} local on_enter_feedback = function (self) self:SetBackdropColor (1, 1, 0, 0.5) @@ -5062,12 +5068,14 @@ function DF:CreateTitleBar (f, titleText) local closeButton = CreateFrame ("button", titleBar:GetName() and titleBar:GetName() .. "CloseButton" or nil, titleBar, "BackdropTemplate") closeButton:SetSize (16, 16) - closeButton:SetNormalTexture (DF.folder .. "icons") - closeButton:SetHighlightTexture (DF.folder .. "icons") - closeButton:SetPushedTexture (DF.folder .. "icons") - closeButton:GetNormalTexture():SetTexCoord (0, 16/128, 0, 1) - closeButton:GetHighlightTexture():SetTexCoord (0, 16/128, 0, 1) - closeButton:GetPushedTexture():SetTexCoord (0, 16/128, 0, 1) + + closeButton:SetNormalTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + closeButton:SetHighlightTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + closeButton:SetPushedTexture ([[Interface\GLUES\LOGIN\Glues-CheckBox-Check]]) + closeButton:GetNormalTexture():SetDesaturated(true) + closeButton:GetHighlightTexture():SetDesaturated(true) + closeButton:GetPushedTexture():SetDesaturated(true) + closeButton:SetAlpha (0.7) closeButton:SetScript ("OnClick", simple_panel_close_click) --upvalue from this file @@ -6387,7 +6395,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) GameCooltip2:SetColor (1, 0.5, 0.5, 0.5, 0) - local preset2_backdrop = {bgFile = DF.folder .. "background", edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true, edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} + local preset2_backdrop = {bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true, edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} local gray_table = {0.37, 0.37, 0.37, 0.95} local black_table = {0.2, 0.2, 0.2, 1} GameCooltip2:SetBackdrop (1, preset2_backdrop, gray_table, black_table) @@ -6485,7 +6493,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) GameCooltip2:SetColor (1, 0.5, 0.5, 0.5, 0) - local preset2_backdrop = {bgFile = DF.folder .. "background", edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true, edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} + local preset2_backdrop = {edgeFile = [[Interface\Buttons\WHITE8X8]], edgeFile = [[Interface\Buttons\WHITE8X8]], tile = true, edgeSize = 1, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} local gray_table = {0.37, 0.37, 0.37, 0.95} local black_table = {0.2, 0.2, 0.2, 1} GameCooltip2:SetBackdrop (1, preset2_backdrop, gray_table, black_table) diff --git a/Libs/DF/spells.lua b/Libs/DF/spells.lua index 45598f1aa..ca86db2d4 100644 --- a/Libs/DF/spells.lua +++ b/Libs/DF/spells.lua @@ -250,8 +250,10 @@ DF.CooldownsBySpec = { --DEMON HUNTER --havoc [577] = { + [200166] = 1, --Metamorphosis [198589] = 2, --Blur + [196555] = 2, --Netherwalk (talent) [196718] = 4, --Darkness [188501] = 5, --Spectral Sight @@ -633,8 +635,10 @@ DF.CooldownsInfo = { [221562] = {cooldown = 45, duration = 5, talent = false, charges = 1, class = "DEATHKNIGHT", type = 5}, --Asphyxiate --> demon hunter + [200166] = {cooldown = 240, duration = 30, talent = false, charges = 1, class = "DEMONHUNTER", type = 1}, --Metamorphosis [198589] = {cooldown = 60, duration = 10, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Blur + [196555] = {cooldown = 120, duration = 5, talent = 21865, charges = 1, class = "DEMONHUNTER", type = 2}, --Netherwalk (talent) [196718] = {cooldown = 180, duration = 8, talent = false, charges = 1, class = "DEMONHUNTER", type = 4}, --Darkness [187827] = {cooldown = 180, duration = 15, talent = false, charges = 1, class = "DEMONHUNTER", type = 2}, --Metamorphosis diff --git a/Libs/DF/textentry.lua b/Libs/DF/textentry.lua index 175326376..dfc9ae3e0 100644 --- a/Libs/DF/textentry.lua +++ b/Libs/DF/textentry.lua @@ -672,20 +672,19 @@ function DF:NewTextEntry (parent, container, name, member, w, h, func, param1, p TextEntryObject.enabled_text_color = {TextEntryObject.editbox:GetTextColor()} TextEntryObject.onleave_backdrop = {TextEntryObject.editbox:GetBackdropColor()} TextEntryObject.onleave_backdrop_border_color = {TextEntryObject.editbox:GetBackdropBorderColor()} - + TextEntryObject.func = func TextEntryObject.param1 = param1 TextEntryObject.param2 = param2 TextEntryObject.next = nil TextEntryObject.space = space TextEntryObject.tab_on_enter = false - + TextEntryObject.label = _G [name .. "_Desc"] - - TextEntryObject.editbox:SetBackdrop ({bgFile = DF.folder .. "background", tileSize = 64, edgeFile = DF.folder .. "border_2", edgeSize = 10, insets = {left = 1, right = 1, top = 1, bottom = 1}}) - + TextEntryObject.editbox:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, insets = {left = 1, right = 1, top = 1, bottom = 1}}) + TextEntryObject.editbox:SetBackdropColor (.2, .2, .2, 1) + --> hooks - TextEntryObject.HookList = { OnEnter = {}, OnLeave = {}, diff --git a/boot.lua b/boot.lua index 02102e4d7..495c0d152 100644 --- a/boot.lua +++ b/boot.lua @@ -4,8 +4,8 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.build_counter = 7930 - _detalhes.alpha_build_counter = 7930 --if this is higher than the regular counter, use it instead + _detalhes.build_counter = 7932 + _detalhes.alpha_build_counter = 7932 --if this is higher than the regular counter, use it instead _detalhes.game_version = "v9.0.1" _detalhes.userversion = "v9.0.1." .. _detalhes.build_counter _detalhes.realversion = 143 --core version, this is used to check API version for scripts and plugins (see alias below) diff --git a/classes/class_custom.lua b/classes/class_custom.lua index 9d7cf23af..ab212a7cd 100644 --- a/classes/class_custom.lua +++ b/classes/class_custom.lua @@ -99,7 +99,7 @@ local top = 0 local amount = 0 - --> check if is a custom script + --> check if is a custom script (if has .script) if (custom_object:IsScripted()) then --> be save reseting the values on every refresh @@ -155,7 +155,7 @@ _detalhes:EndRefresh (instance, 0, combat, combat [1]) end - okey, total, top, amount = _pcall (func, combat, instance_container, instance) + local okey, total, top, amount = _pcall (func, combat, instance_container, instance) if (not okey) then _detalhes:Msg ("|cFFFF9900error on custom display function|r:", total) return _detalhes:EndRefresh (instance, 0, combat, combat [1]) @@ -165,10 +165,10 @@ top = top or 0 amount = amount or 0 - else + else --does not have a .script --> get the attribute - local attribute = custom_object:GetAttribute() - + local attribute = custom_object:GetAttribute() --"damagedone" + --> get the custom function (actor, source, target, spellid) local func = atributo_custom [attribute] @@ -317,8 +317,12 @@ end end - for _, actor in _ipairs (combat_container) do + for _, actor in _ipairs (combat_container) do if (actor.grupo) then + if (not func) then + Details:Msg("error on class_custom 'func' is invalid, backtrace:", debugstack()) + return + end local actortotal = func (_, actor, source, target, spellid, combat, instance_container) if (actortotal > 0) then diff --git a/classes/class_damage.lua b/classes/class_damage.lua index 7cda74c47..cd8c41e4b 100644 --- a/classes/class_damage.lua +++ b/classes/class_damage.lua @@ -876,7 +876,6 @@ new_custom_object.__index = Details.atributo_custom return instance:TrocaTabela (instance.segmento, 5, #Details.custom) - end local DTBS_format_name = function (player_name) return Details:GetOnlyName (player_name) end diff --git a/classes/custom_damagedone.lua b/classes/custom_damagedone.lua index 7b3c83b3e..6f72f78c8 100644 --- a/classes/custom_damagedone.lua +++ b/classes/custom_damagedone.lua @@ -4,15 +4,317 @@ --> customized display script - local _detalhes = _G._detalhes - local _ +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> attributes functions for customs +--> DAMAGEDONE + +--> customized display script + +local _detalhes = _G._detalhes +local _ + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> local pointers + +local _cstr = string.format --lua local +local _math_floor = math.floor --lua local +local _table_sort = table.sort --lua local +local _table_insert = table.insert --lua local +local _table_size = table.getn --lua local +local _setmetatable = setmetatable --lua local +local _ipairs = ipairs --lua local +local _pairs = pairs --lua local +local _rawget= rawget --lua local +local _math_min = math.min --lua local +local _math_max = math.max --lua local +local _bit_band = bit.band --lua local +local _unpack = unpack --lua local +local _type = type --lua local - local atributo_custom = _detalhes.atributo_custom - local ToKFunctions = _detalhes.ToKFunctions +local _GetSpellInfo = _detalhes.getspellinfo -- api local +local _IsInRaid = IsInRaid -- api local +local _IsInGroup = IsInGroup -- api local +local _GetNumGroupMembers = GetNumGroupMembers -- api local +local _GetNumPartyMembers = GetNumPartyMembers or GetNumSubgroupMembers -- api local +local _GetNumRaidMembers = GetNumRaidMembers or GetNumGroupMembers -- api local +local _GetUnitName = GetUnitName -- api local - function atributo_custom:UpdateDamageDoneBracket() - SelectedToKFunction = ToKFunctions [_detalhes.ps_abbreviation] - FormatTooltipNumber = ToKFunctions [_detalhes.tooltip.abbreviation] - TooltipMaximizedMethod = _detalhes.tooltip.maximize_method +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> constants + +local atributo_custom = _detalhes.atributo_custom + +local ToKFunctions = _detalhes.ToKFunctions +local SelectedToKFunction = ToKFunctions [1] +local FormatTooltipNumber = ToKFunctions [8] +local TooltipMaximizedMethod = 1 + +function atributo_custom:UpdateDamageDoneBracket() + SelectedToKFunction = ToKFunctions [_detalhes.ps_abbreviation] + FormatTooltipNumber = ToKFunctions [_detalhes.tooltip.abbreviation] + TooltipMaximizedMethod = _detalhes.tooltip.maximize_method +end + +local temp_table = {} + +local target_func = function (main_table) + local i = 1 + for name, amount in _pairs (main_table) do + local t = temp_table [i] + if (not t) then + t = {"", 0} + temp_table [i] = t + end + + t[1] = name + t[2] = amount + + i = i + 1 + end +end + +local spells_used_func = function (main_table, target) + local i = 1 + for spellid, spell_table in _pairs (main_table) do + local target_amount = spell_table.targets [target] + if (target_amount) then + local t = temp_table [i] + if (not t) then + t = {"", 0} + temp_table [i] = t + end + + t[1] = spellid + t[2] = target_amount + + i = i + 1 + end end +end + +local function SortOrder (main_table, func, ...) + for i = 1, #temp_table do + temp_table [i][1] = "" + temp_table [i][2] = 0 + end + + func (main_table, ...) + + _table_sort (temp_table, _detalhes.Sort2) + + return temp_table +end + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> damagedone tooltip + +function atributo_custom:damagedoneTooltip (actor, target, spellid, combat, instance) + + if (spellid) then + + if (instance:GetCustomObject():IsSpellTarget()) then + local targetname = actor.nome + local this_actor = combat (1, targetname) + + if (this_actor) then + for name, _ in _pairs (this_actor.damage_from) do + local aggressor = combat (1, name) + if (aggressor) then + local spell = aggressor.spells._ActorTable [spellid] + if (spell) then + local on_me = spell.targets [targetname] + if (on_me) then + GameCooltip:AddLine (aggressor.nome, FormatTooltipNumber (_, on_me)) + _detalhes:AddTooltipBackgroundStatusbar() + end + end + end + end + end + + return + else + local name, _, icon = _GetSpellInfo (spellid) + GameCooltip:AddLine (name) + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + + GameCooltip:AddLine (Loc ["STRING_DAMAGE"] .. ": ", spell.total) + GameCooltip:AddLine (Loc ["STRING_HITS"] .. ": ", spell.counter) + GameCooltip:AddLine (Loc ["STRING_CRITICAL_HITS"] .. ": ", spell.c_amt) + end + + elseif (target) then + + if (target == "[all]") then + SortOrder (actor.targets, target_func) + + for i = 1, #temp_table do + local t = temp_table [i] + if (t[2] < 1) then + break + end + + GameCooltip:AddLine (t[1], FormatTooltipNumber (_, t[2])) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon ([[Interface\FriendsFrame\StatusIcon-Offline]], 1, 1, 14, 14) + end + + elseif (target == "[raid]") then + local roster = combat.raid_roster + + SortOrder (actor.targets, target_func) + + for i = 1, #temp_table do + local t = temp_table [i] + + if (t[2] < 1) then + break + end + + if (roster [t[1]]) then + GameCooltip:AddLine (t[1], FormatTooltipNumber (_, t[2])) + _detalhes:AddTooltipBackgroundStatusbar() + end + end + + elseif (target == "[player]") then + local target_amount = actor.targets [_detalhes.playername] + if (target_amount) then + GameCooltip:AddLine (targetactor.nome, FormatTooltipNumber (_, target_amount)) + _detalhes:AddTooltipBackgroundStatusbar() + end + else + SortOrder (actor.spells._ActorTable, spells_used_func, target) + + for i = 1, #temp_table do + local t = temp_table [i] + + if (t[2] < 1) then + break + end + + local name, _, icon = _GetSpellInfo (t[1]) + GameCooltip:AddLine (name, FormatTooltipNumber (_, t[2])) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + + --for index, pet_name in ipairs (actor.pets) do + + --end + end + + else + actor:ToolTip_DamageDone (instance) + end +end + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> damagedone search + +function atributo_custom:damagedone (actor, source, target, spellid, combat, instance_container) + + if (spellid) then --> spell is always damagedone + local spell = actor.spells._ActorTable [spellid] + if (spell) then + if (target) then + if (target == "[all]") then + for target_name, amount in _pairs (spell.targets) do + --> add amount + + --> we need to pass a object here in order to get name and class, so we just get the main damage actor from the combat + instance_container:AddValue (combat (1, target_name), amount, true) + -- + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [target_name]) then + atributo_custom._TargetActorsProcessed [target_name] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + elseif (target == "[raid]") then + local roster = combat.raid_roster + for target_name, amount in _pairs (spell.targets) do + if (roster [target_name]) then + --> add amount + instance_container:AddValue (combat (1, target_name), amount, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [target_name]) then + atributo_custom._TargetActorsProcessed [target_name] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + end + return 0, true + + elseif (target == "[player]") then + local target_amount = spell.targets [_detalhes.playername] + if (target_amount) then + --> add amount + instance_container:AddValue (combat (1, _detalhes.playername), target_amount, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + target_amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [_detalhes.playername]) then + atributo_custom._TargetActorsProcessed [_detalhes.playername] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + else + local target_amount = actor.targets [target] + if (target_amount) then + --> add amount + instance_container:AddValue (combat (1, target), target_amount, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + target_amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [target]) then + atributo_custom._TargetActorsProcessed [target] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + end + else + return spell.total + end + else + return 0 + end + + elseif (target) then + + if (target == "[all]") then + local total = 0 + for target_name, amount in _pairs (actor.targets) do + total = total + amount + end + return total + + elseif (target == "[raid]") then + local total = 0 + for target_name, amount in _pairs (actor.targets) do + if (combat.raid_roster [target_name]) then + total = total + amount + end + end + return total + + elseif (target == "[player]") then + return actor.targets [_detalhes.playername] or 0 + + else + return actor.targets [target] or 0 + + end + else + return actor.total or 0 + + end + +end + diff --git a/classes/custom_healingdone.lua b/classes/custom_healingdone.lua index 14aa3e9b0..d6010d67a 100644 --- a/classes/custom_healingdone.lua +++ b/classes/custom_healingdone.lua @@ -1,11 +1,306 @@ + + + + + local _detalhes = _G._detalhes local _ + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> local pointers + + local _cstr = string.format --lua local + local _math_floor = math.floor --lua local + local _table_sort = table.sort --lua local + local _table_insert = table.insert --lua local + local _table_size = table.getn --lua local + local _setmetatable = setmetatable --lua local + local _ipairs = ipairs --lua local + local _pairs = pairs --lua local + local _rawget= rawget --lua local + local _math_min = math.min --lua local + local _math_max = math.max --lua local + local _bit_band = bit.band --lua local + local _unpack = unpack --lua local + local _type = type --lua local + + local _GetSpellInfo = _detalhes.getspellinfo -- api local + local _IsInRaid = IsInRaid -- api local + local _IsInGroup = IsInGroup -- api local + local _GetNumGroupMembers = GetNumGroupMembers -- api local + local _GetNumPartyMembers = GetNumPartyMembers or GetNumSubgroupMembers -- api local + local _GetNumRaidMembers = GetNumRaidMembers or GetNumGroupMembers -- api local + local _GetUnitName = GetUnitName -- api local + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> constants local atributo_custom = _detalhes.atributo_custom + local ToKFunctions = _detalhes.ToKFunctions + local SelectedToKFunction = ToKFunctions [1] + local FormatTooltipNumber = ToKFunctions [8] + local TooltipMaximizedMethod = 1 function atributo_custom:UpdateHealingDoneBracket() SelectedToKFunction = ToKFunctions [_detalhes.ps_abbreviation] FormatTooltipNumber = ToKFunctions [_detalhes.tooltip.abbreviation] TooltipMaximizedMethod = _detalhes.tooltip.maximize_method - end \ No newline at end of file + end + + local temp_table = {} + + local target_func = function (main_table) + local i = 1 + for name, amount in _pairs (main_table) do + local t = temp_table [i] + if (not t) then + t = {"", 0} + temp_table [i] = t + end + + t[1] = name + t[2] = amount + + i = i + 1 + end + end + + local spells_used_func = function (main_table, target) + local i = 1 + for spellid, spell_table in _pairs (main_table) do + local target_amount = spell_table.targets [target] + if (target_amount) then + local t = temp_table [i] + if (not t) then + t = {"", 0} + temp_table [i] = t + end + + t[1] = spellid + t[2] = target_amount + + i = i + 1 + end + end + end + + local function SortOrder (main_table, func, ...) + for i = 1, #temp_table do + temp_table [i][1] = "" + temp_table [i][2] = 0 + end + + func (main_table, ...) + + _table_sort (temp_table, _detalhes.Sort2) + + return temp_table + end + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> healing done tooltip + + + function atributo_custom:healdoneTooltip (actor, target, spellid, combat, instance) + + if (spellid) then + + if (instance:GetCustomObject():IsSpellTarget()) then + local targetname = actor.nome + local this_actor = combat (2, targetname) + + if (this_actor) then + for name, _ in _pairs (this_actor.healing_from) do + local healer = combat (2, name) + if (healer) then + local spell = healer.spells._ActorTable [spellid] + if (spell) then + local on_me = spell.targets [targetname] + if (on_me) then + GameCooltip:AddLine (healer.nome, FormatTooltipNumber (_, on_me)) + end + end + end + end + end + + return + else + local name, _, icon = _GetSpellInfo (spellid) + GameCooltip:AddLine (name) + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + + GameCooltip:AddLine (Loc ["STRING_HEAL"] .. ": ", spell.total) + GameCooltip:AddLine (Loc ["STRING_HITS"] .. ": ", spell.counter) + GameCooltip:AddLine (Loc ["STRING_CRITICAL_HITS"] .. ": ", spell.c_amt) + end + + elseif (target) then + + if (target == "[all]") then + SortOrder (actor.targets, target_func) + + for i = 1, #temp_table do + local t = temp_table [i] + if (t[2] < 1) then + break + end + + GameCooltip:AddLine (t[1], FormatTooltipNumber (_, t[2])) + _detalhes:AddTooltipBackgroundStatusbar() + GameCooltip:AddIcon ([[Interface\FriendsFrame\StatusIcon-Offline]], 1, 1, 14, 14) + end + + elseif (target == "[raid]") then + local roster = combat.raid_roster + + SortOrder (actor.targets, target_func) + + for i = 1, #temp_table do + local t = temp_table [i] + + if (t[2] < 1) then + break + end + + if (roster [t[1]]) then + GameCooltip:AddLine (t[1], FormatTooltipNumber (_, t[2])) + end + end + + elseif (target == "[player]") then + local target_amount = actor.targets [_detalhes.playername] + if (target_amount) then + GameCooltip:AddLine (targetactor.nome, FormatTooltipNumber (_, target_amount)) + end + + else + SortOrder (actor.spells._ActorTable, spells_used_func, target) + + for i = 1, #temp_table do + + local t = temp_table [i] + + if (t[2] < 1) then + break + end + + local name, _, icon = _GetSpellInfo (t[1]) + GameCooltip:AddLine (name, FormatTooltipNumber (_, t[2])) + GameCooltip:AddIcon (icon, 1, 1, 14, 14) + end + end + + else + actor:ToolTip_HealingDone (instance) + end + end + +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +--> healing done search + + function atributo_custom:healdone (actor, source, target, spellid, combat, instance_container) + + if (spellid) then --> spell is always healing done + local spell = actor.spells._ActorTable [spellid] + local melee = actor.spells._ActorTable [1] + if (spell) then + if (target) then + if (target == "[all]") then + for target_name, amount in _pairs (spell.targets) do + --> add amount + + --> we need to pass a object here in order to get name and class, so we just get the main heal actor from the combat + instance_container:AddValue (combat (1, target_name), amount, true) + -- + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [target_name]) then + atributo_custom._TargetActorsProcessed [target_name] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + elseif (target == "[raid]") then + local roster = combat.raid_roster + for target_name, amount in _pairs (spell.targets) do + if (roster [target_name]) then + --> add amount + instance_container:AddValue (combat (1, target_name), amount, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [target_name]) then + atributo_custom._TargetActorsProcessed [target_name] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + end + return 0, true + + elseif (target == "[player]") then + local target_amount = spell.targets [_detalhes.playername] + if (target_amount) then + --> add amount + instance_container:AddValue (combat (1, _detalhes.playername), target_amount, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + target_amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [_detalhes.playername]) then + atributo_custom._TargetActorsProcessed [_detalhes.playername] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + + else + local target_amount = actor.targets [target] + if (target_amount) then + --> add amount + instance_container:AddValue (combat (1, target), target_amount, true) + atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + target_amount + --> add to processed container + if (not atributo_custom._TargetActorsProcessed [target]) then + atributo_custom._TargetActorsProcessed [target] = true + atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 + end + end + return 0, true + end + else + return spell.total + end + else + return 0 + end + + elseif (target) then + + if (target == "[all]") then + local total = 0 + for target_name, amount in _pairs (actor.targets) do + total = total + amount + end + return total + + elseif (target == "[raid]") then + local total = 0 + for target_name, amount in _pairs (actor.targets) do + if (combat.raid_roster [target_name]) then + total = total + amount + end + end + return total + + elseif (target == "[player]") then + return actor.targets [_detalhes.playername] or 0 + + else + return actor.targets [targetactor] or 0 + end + else + return actor.total or 0 + + end + + end diff --git a/frames/window_options2.lua b/frames/window_options2.lua index f177fef9c..413647a55 100644 --- a/frames/window_options2.lua +++ b/frames/window_options2.lua @@ -177,14 +177,16 @@ function Details.options.InitializeOptionsWindow(instance) _detalhes:StopTestBarUpdate() end end - local fillbars = DF:NewButton (f, _, "$parentCreateExampleBarsButton", nil, 120, 20, create_test_bars_func, nil, nil, nil, Loc ["STRING_OPTIONS_TESTBARS"], 1) - fillbars:SetPoint ("bottomleft", f.widget, "bottomleft", 41, 12) + local fillbars = DF:NewButton (f, _, "$parentCreateExampleBarsButton", nil, 140, 20, create_test_bars_func, nil, nil, nil, Loc ["STRING_OPTIONS_TESTBARS"], 1) + fillbars:SetPoint ("bottomleft", f.widget, "bottomleft", 10, 10) fillbars:SetTemplate(options_button_template) + fillbars:SetIcon ("Interface\\AddOns\\Details\\images\\icons", nil, nil, nil, {323/512, 365/512, 42/512, 78/512}, {1, 1, 1, 0.6}, 4, 2) --change log - local changelog = DF:NewButton (f, _, "$parentOpenChangeLogButton", nil, 120, 20, _detalhes.OpenNewsWindow, "change_log", nil, nil, Loc ["STRING_OPTIONS_CHANGELOG"], 1) + local changelog = DF:NewButton (f, _, "$parentOpenChangeLogButton", nil, 140, 20, _detalhes.OpenNewsWindow, "change_log", nil, nil, Loc ["STRING_OPTIONS_CHANGELOG"], 1) changelog:SetPoint ("left", fillbars, "right", 10, 0) changelog:SetTemplate (options_button_template) + changelog:SetIcon ("Interface\\AddOns\\Details\\images\\icons", nil, nil, nil, {367/512, 399/512, 43/512, 76/512}, {1, 1, 1, 0.8}, 4, 2) local sectionsName = { --section names [1] = Loc ["STRING_OPTIONSMENU_DISPLAY"], diff --git a/frames/window_options2_sections.lua b/frames/window_options2_sections.lua index a9ab30009..49eeaf114 100644 --- a/frames/window_options2_sections.lua +++ b/frames/window_options2_sections.lua @@ -575,6 +575,16 @@ do name = "Reset Nickname", desc = "Reset Nickname", }, + {--ignore nicknames + type = "toggle", + get = function() return _detalhes.ignore_nicktag end, + set = function (self, fixedparam, value) + _detalhes.ignore_nicktag = value + afterUpdate() + end, + name = Loc ["STRING_OPTIONS_IGNORENICKNAME"], + desc = Loc ["STRING_OPTIONS_IGNORENICKNAME_DESC"], + }, {type = "blank"},