From d87611cfc50ea76de06cfd29c64e3bb966cedc02 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Tue, 12 Oct 2021 21:35:03 -0300 Subject: [PATCH] Necrotic wake weapons --- classes/container_actors.lua | 9 +++- core/parser.lua | 61 +++++++++++++++++++++----- frames/window_playerbreakdown.lua | 29 ++++++------ frames/window_playerbreakdown_list.lua | 38 +++++++++------- 4 files changed, 96 insertions(+), 41 deletions(-) diff --git a/classes/container_actors.lua b/classes/container_actors.lua index 3be999f6..3402d958 100644 --- a/classes/container_actors.lua +++ b/classes/container_actors.lua @@ -242,11 +242,18 @@ novo_objeto.displayName = nome end end - + if (_detalhes.all_players_are_group or _detalhes.immersion_enabled) then novo_objeto.grupo = true end + --special spells to add into the group view + local spellId = Details.NoOverallSpellNames[novo_objeto.nome] + if (spellId) then + novo_objeto.grupo = true + novo_objeto.spellicon = GetSpellTexture(spellId) + end + if ((_bit_band (flag, IS_GROUP_OBJECT) ~= 0 and novo_objeto.classe ~= "UNKNOW" and novo_objeto.classe ~= "UNGROUPPLAYER") or _detalhes:IsInCache (serial)) then novo_objeto.grupo = true diff --git a/core/parser.lua b/core/parser.lua index c2a31fe0..ad5abd01 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -13,7 +13,6 @@ local _UnitAffectingCombat = UnitAffectingCombat --wow api local local _UnitHealth = UnitHealth --wow api local local _UnitHealthMax = UnitHealthMax --wow api local - local _UnitIsFeignDeath = UnitIsFeignDeath --wow api local local _UnitGUID = UnitGUID --wow api local local _IsInRaid = IsInRaid --wow api local local _IsInGroup = IsInGroup --wow api local @@ -150,7 +149,7 @@ army = {}, apoc = {}, } - + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> constants local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS @@ -237,11 +236,11 @@ [228361] = 228360, --shadow priest void erruption } end - + local bitfield_debuffs_ids = _detalhes.BitfieldSwapDebuffsIDs local bitfield_debuffs = {} for _, spellid in ipairs (bitfield_debuffs_ids) do - local spellname = GetSpellInfo (spellid) + local spellname = GetSpellInfo(spellid) if (spellname) then bitfield_debuffs [spellname] = true else @@ -325,8 +324,7 @@ ignore_spikeballs = 0, } - local NPCID_KELTHUZAD_FROSTBOUNDDEVOTED = 176703 - local NPCID_KELTHUZAD_ADDMIMICPLAYERS = 176605 + local NPCID_KELTHUZAD_ADDMIMICPLAYERS = 176605 --> damage spells to ignore local damage_spells_to_ignore = { @@ -399,6 +397,36 @@ local _auto_regen_thread local AUTO_REGEN_PRECISION = 2 + + --> store the spells which cannot be added to overall data + local no_overall_spells = { + [344421] = true, + [328351] = true, + [328406] = true, + [328128] = true, + [333641] = true, + [333227] = true, + [333250] = true, + --[] = true, + } + + --expose the table for scripts modify it + Details.NoOverallSpells = no_overall_spells + + --create a table with spell names which need to be converted into actors + local sanguineHealSpellName = GetSpellInfo(SPELLID_SANGUINE_HEAL) + Details.NoOverallSpellNames = { + [sanguineHealSpellName] = true + } + + for spellId in pairs(no_overall_spells) do + local spellName = GetSpellInfo(spellId) + if (spellName) then + Details.NoOverallSpellNames[spellName] = spellId + end + end + + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> internal functions @@ -549,6 +577,13 @@ -- return --end + --sanguine ichor mythic dungeon affix (heal enemies) + if (no_overall_spells[spellid]) then + who_name = GetSpellInfo(spellid) + who_flags = 0x518 + who_serial = "Creature-0-3134-2289-28065-" .. spellid .. "-000164C698" + end + ------------------------------------------------------------------------------------------------ --> spell reflection if (who_serial == alvo_serial and not reflection_ignore[spellid]) then --~reflect @@ -634,7 +669,7 @@ return end - if (npcId == NPCID_KELTHUZAD_FROSTBOUNDDEVOTED) then --remove on 10.0 + if (npcId == 176703) then --remove on 10.0 --kelthuzad alvo_flags = 0xa48 end @@ -728,7 +763,7 @@ return end - if (npcId == NPCID_KELTHUZAD_FROSTBOUNDDEVOTED) then --remove on 10.0 + if (npcId == 176703) then --remove on 10.0 --kelthuzad who_flags = 0xa48 end if (npcId == NPCID_KELTHUZAD_ADDMIMICPLAYERS) then --remove on 10.0 @@ -853,7 +888,11 @@ if (not este_jogador) then return end - + + if (no_overall_spells[spellid]) then + este_jogador.grupo = true + end + --> his target local jogador_alvo, alvo_dono = damage_cache [alvo_serial] or damage_cache_pets [alvo_serial] or damage_cache [alvo_name], damage_cache_petsOwners [alvo_serial] @@ -1742,7 +1781,7 @@ local npcId = _tonumber(_select (6, _strsplit ("-", alvo_serial)) or 0) --kel'thuzad encounter --remove on 10.0 - if (npcId == NPCID_KELTHUZAD_FROSTBOUNDDEVOTED) then + if (npcId == 176703) then --kelthuzad return elseif (spellid == 358108) then --Restore Health return @@ -4101,7 +4140,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 _current_combat.frags_need_refresh = true --> player death - elseif (not _UnitIsFeignDeath (alvo_name)) then + elseif (not UnitIsFeignDeath (alvo_name)) then if ( --> player in your group (_bit_band (alvo_flags, AFFILIATION_GROUP) ~= 0 or (damageActor and damageActor.grupo)) and diff --git a/frames/window_playerbreakdown.lua b/frames/window_playerbreakdown.lua index 3995dbd9..a5a57ac6 100644 --- a/frames/window_playerbreakdown.lua +++ b/frames/window_playerbreakdown.lua @@ -246,18 +246,18 @@ function _detalhes:AbreJanelaInfo (jogador, from_att_change, refresh, ShiftKeyDo Details:UpdateBreakdownPlayerList() --check which tab was selected and reopen that tab - if (info.selectedTab == "Summary") then - return jogador:MontaInfo() - else - --open tab - for index = 1, #_detalhes.player_details_tabs do - local tab = _detalhes.player_details_tabs [index] - if (tab:condition (info.jogador, info.atributo, info.sub_atributo)) then - if (tab.tabname == info.selectedTab) then - --_detalhes.player_details_tabs [index]:Click() - --_detalhes.player_details_tabs [index].onclick() - _detalhes.player_details_tabs [index]:OnShowFunc() - end +-- if (info.selectedTab == "Summary") then +-- return jogador:MontaInfo() +-- else + + --open tab + for index = 1, #_detalhes.player_details_tabs do + local tab = _detalhes.player_details_tabs [index] + if (tab:condition (info.jogador, info.atributo, info.sub_atributo)) then + if (tab.tabname == info.selectedTab) then + --_detalhes.player_details_tabs [index]:Click() + --_detalhes.player_details_tabs [index].onclick() + _detalhes.player_details_tabs [index]:OnShowFunc() end end end @@ -1493,8 +1493,11 @@ local elvui_skin = function() --class icon window.SetClassIcon = function (player, class) + if (player.spellicon) then + window.classe_icone:SetTexture(player.spellicon) + window.classe_icone:SetTexCoord(.1, .9, .1, .9) - if (player.spec) then + elseif (player.spec) then window.classe_icone:SetTexture ([[Interface\AddOns\Details\images\spec_icons_normal_alpha]]) window.classe_icone:SetTexCoord (_unpack (_detalhes.class_specs_coords [player.spec])) --esta_barra.icone_classe:SetVertexColor (1, 1, 1) diff --git a/frames/window_playerbreakdown_list.lua b/frames/window_playerbreakdown_list.lua index 79b2b08c..0bd45ace 100644 --- a/frames/window_playerbreakdown_list.lua +++ b/frames/window_playerbreakdown_list.lua @@ -58,9 +58,8 @@ self.specIcon:SetBlendMode("BLEND") self.roleIcon:SetBlendMode("BLEND") end - - local updatePlayerLine = function(self, topResult) + local updatePlayerLine = function(self, topResult) local playerSelected = Details:GetPlayerObjectFromBreakdownWindow() if (playerSelected and playerSelected == self.playerObject) then self:SetBackdropColor(unpack(scrollbox_line_backdrop_color_selected)) @@ -69,22 +68,29 @@ self:SetBackdropColor(unpack(scrollbox_line_backdrop_color)) self.isSelected = nil end - - --adjust the player icon - local specIcon, L, R, T, B = Details:GetSpecIcon(self.playerObject.spec, false) - local specId, specName, specDescription, specIconId, specRole, specClass - - if (specIcon) then - self.specIcon:SetTexture(specIcon) - self.specIcon:SetTexCoord(L, R, T, B) - if (DetailsFramework.IsTimewalkWoW()) then - specRole = "NONE" - else - specId, specName, specDescription, specIconId, specRole, specClass = _G.GetSpecializationInfoByID(self.playerObject.spec) - end + local specRole + + --adjust the player icon + if (self.playerObject.spellicon) then + self.specIcon:SetTexture(self.playerObject.spellicon) + self.specIcon:SetTexCoord(.1, .9, .1, .9) else - self.specIcon:SetTexture(nil) + local specIcon, L, R, T, B = Details:GetSpecIcon(self.playerObject.spec, false) + local specId, specName, specDescription, specIconId, specClass + + if (specIcon) then + self.specIcon:SetTexture(specIcon) + self.specIcon:SetTexCoord(L, R, T, B) + + if (DetailsFramework.IsTimewalkWoW()) then + specRole = "NONE" + else + specId, specName, specDescription, specIconId, specRole, specClass = _G.GetSpecializationInfoByID(self.playerObject.spec) + end + else + self.specIcon:SetTexture(nil) + end end --adjust the role icon