local Details = _G.Details ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --extra buttons at the death options (release, death recap) local detailsOnDeathMenu = CreateFrame("frame", "DetailsOnDeathMenu", UIParent, "BackdropTemplate") detailsOnDeathMenu:SetHeight(30) detailsOnDeathMenu.Debug = false detailsOnDeathMenu:RegisterEvent("PLAYER_REGEN_ENABLED") detailsOnDeathMenu:RegisterEvent("ENCOUNTER_END") DetailsFramework:ApplyStandardBackdrop(detailsOnDeathMenu) detailsOnDeathMenu:SetAlpha(0.75) --disable text detailsOnDeathMenu.disableLabel = Details.gump:CreateLabel(detailsOnDeathMenu, "you can disable this at /details > Raid Tools", 9) detailsOnDeathMenu.warningLabel = Details.gump:CreateLabel(detailsOnDeathMenu, "", 11) detailsOnDeathMenu.warningLabel.textcolor = "red" detailsOnDeathMenu.warningLabel:SetPoint("bottomleft", detailsOnDeathMenu, "bottomleft", 5, 2) detailsOnDeathMenu.warningLabel:Hide() detailsOnDeathMenu:SetScript("OnEvent", function(self, event, ...) if (event == "ENCOUNTER_END") then C_Timer.After(0.5, detailsOnDeathMenu.ShowPanel) end end) function detailsOnDeathMenu.OpenEncounterBreakdown() if (not Details:GetPlugin ("DETAILS_PLUGIN_ENCOUNTER_DETAILS")) then detailsOnDeathMenu.warningLabel.text = "Encounter Breakdown plugin is disabled! Please enable it in the Addon Control Panel." detailsOnDeathMenu.warningLabel:Show() C_Timer.After(5, function() detailsOnDeathMenu.warningLabel:Hide() end) end Details:OpenPlugin ("Encounter Breakdown") GameCooltip2:Hide() end function detailsOnDeathMenu.OpenPlayerEndurance() if (not Details:GetPlugin ("DETAILS_PLUGIN_DEATH_GRAPHICS")) then detailsOnDeathMenu.warningLabel.text = "Advanced Death Logs plugin is disabled! Please enable it (or download) in the Addon Control Panel." detailsOnDeathMenu.warningLabel:Show() C_Timer.After(5, function() detailsOnDeathMenu.warningLabel:Hide() end) end DetailsPluginContainerWindow.OnMenuClick (nil, nil, "DETAILS_PLUGIN_DEATH_GRAPHICS", true) C_Timer.After(0, function() local a = Details_DeathGraphsModeEnduranceButton and Details_DeathGraphsModeEnduranceButton.MyObject:Click() end) GameCooltip2:Hide() end function detailsOnDeathMenu.OpenPlayerSpells() local window1 = Details:GetWindow (1) local window2 = Details:GetWindow (2) local window3 = Details:GetWindow (3) local window4 = Details:GetWindow (4) local assignedRole = UnitGroupRolesAssigned("player") if (assignedRole == "HEALER") then if (window1 and window1:GetDisplay() == 2) then Details:OpenPlayerDetails(1) elseif (window2 and window2:GetDisplay() == 2) then Details:OpenPlayerDetails(2) elseif (window3 and window3:GetDisplay() == 2) then Details:OpenPlayerDetails(3) elseif (window4 and window4:GetDisplay() == 2) then Details:OpenPlayerDetails(4) else Details:OpenPlayerDetails (1) end else if (window1 and window1:GetDisplay() == 1) then Details:OpenPlayerDetails(1) elseif (window2 and window2:GetDisplay() == 1) then Details:OpenPlayerDetails(2) elseif (window3 and window3:GetDisplay() == 1) then Details:OpenPlayerDetails(3) elseif (window4 and window4:GetDisplay() == 1) then Details:OpenPlayerDetails(4) else Details:OpenPlayerDetails (1) end end GameCooltip2:Hide() end --encounter breakdown button detailsOnDeathMenu.breakdownButton = Details.gump:CreateButton(detailsOnDeathMenu, detailsOnDeathMenu.OpenEncounterBreakdown, 120, 20, "Encounter Breakdown", "breakdownButton") detailsOnDeathMenu.breakdownButton:SetTemplate(Details.gump:GetTemplate("button", "DETAILS_PLUGINPANEL_BUTTON_TEMPLATE")) detailsOnDeathMenu.breakdownButton:SetPoint("topleft", detailsOnDeathMenu, "topleft", 5, -5) detailsOnDeathMenu.breakdownButton:Hide() detailsOnDeathMenu.breakdownButton.CoolTip = { Type = "tooltip", BuildFunc = function() GameCooltip2:Preset(2) GameCooltip2:AddLine("Show a panel with:") GameCooltip2:AddLine("- Player Damage Taken") GameCooltip2:AddLine("- Damage Taken by Spell") GameCooltip2:AddLine("- Enemy Damage Taken") GameCooltip2:AddLine("- Player Deaths") GameCooltip2:AddLine("- Interrupts and Dispells") GameCooltip2:AddLine("- Damage Done Chart") GameCooltip2:AddLine("- Damage Per Phase") GameCooltip2:AddLine("- Weakauras Tool") if (not Details:GetPlugin ("DETAILS_PLUGIN_ENCOUNTER_DETAILS")) then GameCooltip2:AddLine("Encounter Breakdown plugin is disabled in the Addon Control Panel.", "", 1, "red") end end, --called when user mouse over the frame OnEnterFunc = function(self) detailsOnDeathMenu.button_mouse_over = true end, OnLeaveFunc = function(self) detailsOnDeathMenu.button_mouse_over = false end, FixedValue = "none", ShowSpeed = .5, Options = function() GameCooltip:SetOption("MyAnchor", "top") GameCooltip:SetOption("RelativeAnchor", "bottom") GameCooltip:SetOption("WidthAnchorMod", 0) GameCooltip:SetOption("HeightAnchorMod", -13) GameCooltip:SetOption("TextSize", 10) GameCooltip:SetOption("FixedWidth", 220) end } GameCooltip2:CoolTipInject (detailsOnDeathMenu.breakdownButton) --player endurance button detailsOnDeathMenu.enduranceButton = Details.gump:CreateButton(detailsOnDeathMenu, detailsOnDeathMenu.OpenPlayerEndurance, 120, 20, "Player Endurance", "enduranceButton") detailsOnDeathMenu.enduranceButton:SetTemplate(Details.gump:GetTemplate("button", "DETAILS_PLUGINPANEL_BUTTON_TEMPLATE")) detailsOnDeathMenu.enduranceButton:SetPoint("topleft", detailsOnDeathMenu.breakdownButton, "topright", 2, 0) detailsOnDeathMenu.enduranceButton:Hide() detailsOnDeathMenu.enduranceButton.CoolTip = { Type = "tooltip", BuildFunc = function() GameCooltip2:Preset(2) GameCooltip2:AddLine("Open Player Endurance Breakdown") GameCooltip2:AddLine("") GameCooltip2:AddLine("Player endurance is calculated using the amount of player deaths.") GameCooltip2:AddLine("By default the plugin register the three first player deaths on each encounter to calculate who is under performing.") --GameCooltip2:AddLine(" ") if (not Details:GetPlugin ("DETAILS_PLUGIN_DEATH_GRAPHICS")) then GameCooltip2:AddLine("Advanced Death Logs plugin is disabled or not installed, check the Addon Control Panel or download it from the Curseforge APP.", "", 1, "red") end end, --called when user mouse over the frame OnEnterFunc = function(self) detailsOnDeathMenu.button_mouse_over = true end, OnLeaveFunc = function(self) detailsOnDeathMenu.button_mouse_over = false end, FixedValue = "none", ShowSpeed = .5, Options = function() GameCooltip:SetOption("MyAnchor", "top") GameCooltip:SetOption("RelativeAnchor", "bottom") GameCooltip:SetOption("WidthAnchorMod", 0) GameCooltip:SetOption("HeightAnchorMod", -13) GameCooltip:SetOption("TextSize", 10) GameCooltip:SetOption("FixedWidth", 220) end } GameCooltip2:CoolTipInject (detailsOnDeathMenu.enduranceButton) --spells detailsOnDeathMenu.spellsButton = Details.gump:CreateButton(detailsOnDeathMenu, detailsOnDeathMenu.OpenPlayerSpells, 48, 20, "Spells", "SpellsButton") detailsOnDeathMenu.spellsButton:SetTemplate(Details.gump:GetTemplate("button", "DETAILS_PLUGINPANEL_BUTTON_TEMPLATE")) detailsOnDeathMenu.spellsButton:SetPoint("topleft", detailsOnDeathMenu.enduranceButton, "topright", 2, 0) detailsOnDeathMenu.spellsButton:Hide() detailsOnDeathMenu.spellsButton.CoolTip = { Type = "tooltip", BuildFunc = function() GameCooltip2:Preset(2) GameCooltip2:AddLine("Open your player Details! breakdown.") end, --called when user mouse over the frame OnEnterFunc = function(self) detailsOnDeathMenu.button_mouse_over = true end, OnLeaveFunc = function(self) detailsOnDeathMenu.button_mouse_over = false end, FixedValue = "none", ShowSpeed = .5, Options = function() GameCooltip:SetOption("MyAnchor", "top") GameCooltip:SetOption("RelativeAnchor", "bottom") GameCooltip:SetOption("WidthAnchorMod", 0) GameCooltip:SetOption("HeightAnchorMod", -13) GameCooltip:SetOption("TextSize", 10) GameCooltip:SetOption("FixedWidth", 220) end } GameCooltip2:CoolTipInject (detailsOnDeathMenu.spellsButton) function detailsOnDeathMenu.CanShowPanel() if (StaticPopup_Visible ("DEATH")) then if (not Details.on_death_menu) then return end if (detailsOnDeathMenu.Debug) then return true end --check if the player just wiped in an encounter if (IsInRaid()) then local isInInstance = IsInInstance() if (isInInstance) then --check if all players in the raid are out of combat for i = 1, GetNumGroupMembers() do if (UnitAffectingCombat("raid" .. i)) then C_Timer.After(0.5, detailsOnDeathMenu.ShowPanel) return false end end if (Details.in_combat) then C_Timer.After(0.5, detailsOnDeathMenu.ShowPanel) return false end return true end end end end function detailsOnDeathMenu.ShowPanel() if (not detailsOnDeathMenu.CanShowPanel()) then return end if (ElvUI) then detailsOnDeathMenu:SetPoint("topleft", StaticPopup1, "bottomleft", 0, -1) detailsOnDeathMenu:SetPoint("topright", StaticPopup1, "bottomright", 0, -1) else detailsOnDeathMenu:SetPoint("topleft", StaticPopup1, "bottomleft", 4, 2) detailsOnDeathMenu:SetPoint("topright", StaticPopup1, "bottomright", -4, 2) end detailsOnDeathMenu.breakdownButton:Show() detailsOnDeathMenu.enduranceButton:Show() detailsOnDeathMenu.spellsButton:Show() detailsOnDeathMenu:Show() detailsOnDeathMenu:SetHeight(30) if (not Details:GetTutorialCVar("DISABLE_ONDEATH_PANEL")) then detailsOnDeathMenu.disableLabel:Show() detailsOnDeathMenu.disableLabel:SetPoint("bottomleft", detailsOnDeathMenu, "bottomleft", 5, 1) detailsOnDeathMenu.disableLabel.color = "gray" detailsOnDeathMenu.disableLabel.alpha = 0.5 detailsOnDeathMenu:SetHeight(detailsOnDeathMenu:GetHeight() + 10) if (math.random(1, 3) == 3) then Details:SetTutorialCVar ("DISABLE_ONDEATH_PANEL", true) end end end hooksecurefunc ("StaticPopup_Show", function(which, text_arg1, text_arg2, data, insertedFrame) if (which == "DEATH") then if (detailsOnDeathMenu.Debug) then C_Timer.After(0.5, detailsOnDeathMenu.ShowPanel) end end end) hooksecurefunc ("StaticPopup_Hide", function(which, data) if (which == "DEATH") then detailsOnDeathMenu:Hide() end end)