----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> attributes functions for customs --> DAMAGE DONE --> 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 _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:UpdateDamageDoneBracket() SelectedToKFunction = ToKFunctions [_detalhes.ps_abbreviation] FormatTooltipNumber = ToKFunctions [_detalhes.tooltip.abbreviation] TooltipMaximizedMethod = _detalhes.tooltip.maximize_method end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> damage done 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.spell_tables._ActorTable [spellid] if (spell) then local on_me = spell.targets._NameIndexTable [targetname] if (on_me) then on_me = spell.targets._ActorTable [on_me] GameCooltip:AddLine (aggressor.nome, FormatTooltipNumber (_, on_me.total)) 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 actor.targets:SortByKey ("total") for _, target_object in _ipairs (actor.targets._ActorTable) do GameCooltip:AddLine (target_object.nome, FormatTooltipNumber (_, target_object.total)) _detalhes:AddTooltipBackgroundStatusbar() GameCooltip:AddIcon ([[Interface\FriendsFrame\StatusIcon-Offline]], 1, 1, 14, 14) end elseif (target == "[raid]") then local roster = combat.raid_roster actor.targets:SortByKey ("total") for _, target_object in _ipairs (actor.targets._ActorTable) do if (roster [target_object.nome]) then GameCooltip:AddLine (target_object.nome, FormatTooltipNumber (_, target_object.total)) end end elseif (target == "[player]") then local targetactor = actor.targets._NameIndexTable [_detalhes.playername] if (targetactor) then targetactor = actor.targets._ActorTable [targetactor] GameCooltip:AddLine (targetactor.nome, FormatTooltipNumber (_, targetactor.total)) end else local spells_used = {} for spellid, spelltable in _pairs (actor.spell_tables._ActorTable) do local this_target = spelltable.targets._NameIndexTable [target] if (this_target) then this_target = spelltable.targets._ActorTable [this_target] _table_insert (spells_used, {spellid, this_target.total}) end end _table_sort (spells_used, _detalhes.Sort2) for index, spell in _ipairs (spells_used) do local name, _, icon = _GetSpellInfo (spell [1]) GameCooltip:AddLine (name, FormatTooltipNumber (_, spell [2])) GameCooltip:AddIcon (icon, 1, 1, 14, 14) end --local targetactor = actor.targets._NameIndexTable [target] --if (targetactor) then -- targetactor = actor.targets._ActorTable [targetactor] -- GameCooltip:AddLine (target, FormatTooltipNumber (_, targetactor.total)) --end end else actor:ToolTip_DamageDone (instance) end end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> damage done search function atributo_custom:damagedone (actor, source, target, spellid, combat, instance_container) if (spellid) then --> spell is always damage done local spell = actor.spell_tables._ActorTable [spellid] if (spell) then if (target) then if (target == "[all]") then for _, targetactor in _ipairs (spell.targets._ActorTable) do --> add amount instance_container:AddValue (targetactor, targetactor.total, true) atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total --> add to processed container if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then atributo_custom._TargetActorsProcessed [targetactor.nome] = true atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 end end return 0, true elseif (target == "[raid]") then local roster = combat.raid_roster for _, targetactor in _ipairs (spell.targets._ActorTable) do if (roster [targetactor.nome]) then --> add amount instance_container:AddValue (targetactor, targetactor.total, true) atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total --> add to processed container if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then atributo_custom._TargetActorsProcessed [targetactor.nome] = true atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 end end end return 0, true elseif (target == "[player]") then local targetactor = spell.targets._NameIndexTable [_detalhes.playername] if (targetactor) then targetactor = spell.targets._ActorTable [targetactor] --> add amount instance_container:AddValue (targetactor, targetactor.total, true) atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total --> add to processed container if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then atributo_custom._TargetActorsProcessed [targetactor.nome] = true atributo_custom._TargetActorsProcessedAmt = atributo_custom._TargetActorsProcessedAmt + 1 end end return 0, true else local targetactor = actor.targets._NameIndexTable [target] if (targetactor) then targetactor = spell.targets._ActorTable [targetactor] --> add amount instance_container:AddValue (targetactor, targetactor.total, true) atributo_custom._TargetActorsProcessedTotal = atributo_custom._TargetActorsProcessedTotal + targetactor.total --> add to processed container if (not atributo_custom._TargetActorsProcessed [targetactor.nome]) then atributo_custom._TargetActorsProcessed [targetactor.nome] = 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 return actor.targets:GetTotal() elseif (target == "[raid]") then return actor.targets:GetTotalOnRaid (nil, combat) elseif (target == "[player]") then local targetactor = actor.targets._NameIndexTable [_detalhes.playername] if (targetactor) then return actor.targets._ActorTable [targetactor].total else return 0 end else local targetactor = actor.targets._NameIndexTable [target] if (targetactor) then return actor.targets._ActorTable [targetactor].total else return 0 end end else return actor.total or 0 end end