1.15.0 Test Version

- Implemented a early support for Dungeons:
the addon is now capable of distinguishing dungeon boss and trash mobs.
not all bosses are implemented yet, atm is:
*Mogu'Shan Palace
*Temple of the Jade Serpent
*Stormstout Brewery

- Implemented Overall Data: Options for it are under combat tab.

- Implemented spell targets on Player Details Window.
Also, fixed lots of small issues like showing damage done where clicking on a Dps bar.
This commit is contained in:
tercio
2014-05-28 18:04:24 -03:00
parent e9e1fe4dfd
commit 9dd43d676d
34 changed files with 1988 additions and 809 deletions
+79 -71
View File
@@ -49,6 +49,12 @@
--> try to find the opponent of last fight, can be called during a fight as well
function _detalhes:FindEnemy()
local ZoneName, InstanceType, DifficultyID, _, _, _, _, ZoneMapID = _GetInstanceInfo()
if (InstanceType == "party" or InstanceType == "raid") then
_detalhes.tabela_vigente.is_trash = true
return Loc ["STRING_SEGMENT_TRASH"]
end
local trash_list
if (_detalhes.in_group and _detalhes.last_instance) then
trash_list = _detalhes:GetInstanceTrashInfo (_detalhes.last_instance)
@@ -97,6 +103,25 @@
end
-- try get the current encounter name during the encounter
local boss_found = function (index, name, zone, mapid, diff)
local boss_table = {
index = index,
name = name,
encounter = name,
zone = zone,
mapid = mapid,
diff = diff,
ej_instance_id = EJ_GetCurrentInstance(),
}
_detalhes.tabela_vigente.is_boss = boss_table
_detalhes:SendEvent ("COMBAT_BOSS_FOUND", nil, index, name)
return boss_table
end
function _detalhes:ReadBossFrames()
if (_detalhes.tabela_vigente.is_boss) then
@@ -104,16 +129,8 @@
end
if (_detalhes.encounter_table.name) then
_detalhes.tabela_vigente.is_boss = {
index = _detalhes.encounter_table.index,
name = _detalhes.encounter_table.name,
zone = _detalhes.encounter_table.zone,
mapid = _detalhes.encounter_table.mapid,
encounter = _detalhes.encounter_table.name,
diff = _detalhes.encounter_table.diff
}
_detalhes:SendEvent ("COMBAT_BOSS_FOUND", nil, _detalhes.tabela_vigente.is_boss.index, _detalhes.tabela_vigente.is_boss.name)
return _detalhes.tabela_vigente.is_boss
local encounter_table = _detalhes.encounter_table
return boss_found (encounter_table.index, encounter_table.name, encounter_table.zone, encounter_table.mapid, encounter_table.diff)
end
for index = 1, 5, 1 do
@@ -176,17 +193,9 @@
end
end
end
_detalhes.tabela_vigente.is_boss = {
index = BossIndex,
name = _detalhes:GetBossName (ZoneMapID, BossIndex),
zone = ZoneName,
mapid = ZoneMapID,
encounter = _detalhes:GetBossName (ZoneMapID, BossIndex),
diff = DifficultyID
}
_detalhes:SendEvent ("COMBAT_BOSS_FOUND", nil, _detalhes.tabela_vigente.is_boss.index, _detalhes.tabela_vigente.is_boss.name)
return _detalhes.tabela_vigente.is_boss
return boss_found (BossIndex, _detalhes:GetBossName (ZoneMapID, BossIndex), ZoneName, ZoneMapID, DifficultyID)
end
end
end
@@ -199,17 +208,11 @@
function _detalhes:FindBoss()
if (_detalhes.encounter_table.name) then
return {
index = _detalhes.encounter_table.index,
name = _detalhes.encounter_table.name,
zone = _detalhes.encounter_table.zone,
mapid = _detalhes.encounter_table.mapid,
encounter = _detalhes.encounter_table.name,
diff = _detalhes.encounter_table.diff
}
local encounter_table = _detalhes.encounter_table
return boss_found (encounter_table.index, encounter_table.name, encounter_table.zone, encounter_table.mapid, encounter_table.diff)
end
local ZoneName, _, DifficultyID, _, _, _, _, ZoneMapID = _GetInstanceInfo()
local ZoneName, InstanceType, DifficultyID, _, _, _, _, ZoneMapID = _GetInstanceInfo()
local BossIds = _detalhes:GetBossIds (ZoneMapID)
if (BossIds) then
@@ -219,20 +222,13 @@
if (ActorsContainer) then
for index, Actor in _ipairs (ActorsContainer) do
if (not Actor.grupo) then
local serial = tonumber (Actor.serial:sub(6, 10), 16)
local serial = tonumber (Actor.serial:sub (6, 10), 16)
if (serial) then
BossIndex = BossIds [serial]
if (BossIndex) then
Actor.boss = true
Actor.shadow.boss = true
return {
index = BossIndex,
name =_detalhes:GetBossName (ZoneMapID, BossIndex),
zone = ZoneName,
mapid = ZoneMapID,
encounter = _detalhes:GetBossName (ZoneMapID, BossIndex),
diff = DifficultyID
}
return boss_found (BossIndex, _detalhes:GetBossName (ZoneMapID, BossIndex), ZoneName, ZoneMapID, DifficultyID)
end
end
end
@@ -378,36 +374,31 @@
if (_detalhes.debug) then
_detalhes:Msg ("(debug) ended a combat.")
end
if (_detalhes.schedule_remove_overall and not from_encounter_end and not InCombatLockdown()) then
if (_detalhes.debug) then
_detalhes:Msg ("(debug) found schedule overall data deletion.")
end
_detalhes.schedule_remove_overall = false
_detalhes.tabela_historico:resetar_overall()
end
_detalhes:CatchRaidBuffUptime ("BUFF_UPTIME_OUT")
_detalhes:CatchRaidDebuffUptime ("DEBUFF_UPTIME_OUT")
_detalhes:CloseEnemyDebuffsUptime()
--> pega a zona do jogador e vê se foi uma luta contra um Boss -- identifica se a luta foi com um boss
if (not _detalhes.tabela_vigente.is_boss) then
--> function which runs after a boss encounter to try recognize a encounter
_detalhes.tabela_vigente.is_boss = _detalhes:FindBoss()
_detalhes:FindBoss()
if (not _detalhes.tabela_vigente.is_boss) then
local ZoneName, _, DifficultyID, _, _, _, _, ZoneMapID = _GetInstanceInfo()
local findboss = _detalhes:GetRaidBossFindFunction (ZoneMapID)
if (findboss) then
local BossIndex = findboss()
if (BossIndex) then
_detalhes.tabela_vigente.is_boss = {
index = BossIndex,
name = _detalhes:GetBossName (ZoneMapID, BossIndex),
zone = ZoneName,
mapid = ZoneMapID,
encounter = _detalhes:GetBossName (ZoneMapID, BossIndex),
diff = DifficultyID
}
--print ("boss found using findboss function.")
else
--print ("boss not found")
boss_found (BossIndex, _detalhes:GetBossName (ZoneMapID, BossIndex), ZoneName, ZoneMapID, DifficultyID)
end
end
end
@@ -433,6 +424,10 @@
_detalhes.tabela_vigente:seta_tempo_decorrido() --> salva o end_time
_detalhes.tabela_overall:seta_tempo_decorrido() --seta o end_time
--> flag instance type
local _, InstanceType = _GetInstanceInfo()
_detalhes.tabela_vigente.instance_type = InstanceType
if (not _detalhes.tabela_vigente.is_boss) then
local inimigo = _detalhes:FindEnemy()
@@ -456,21 +451,28 @@
else
_detalhes:FlagActorsOnBossFight()
if (not InCombatLockdown() and not UnitAffectingCombat ("player")) then
_detalhes:FlagActorsOnBossFight()
else
_detalhes.schedule_flag_boss_components = true
end
if (_detalhes:GetBossDetails (_detalhes.tabela_vigente.is_boss.mapid, _detalhes.tabela_vigente.is_boss.index)) then
_detalhes.tabela_vigente.enemy = _detalhes.tabela_vigente.is_boss.encounter
if (_detalhes.tabela_vigente.instance_type == "raid") then
_detalhes.last_encounter2 = _detalhes.last_encounter
_detalhes.last_encounter = _detalhes.tabela_vigente.is_boss.name
end
if (bossKilled) then
_detalhes.tabela_vigente.is_boss.killed = true
end
if (from_encounter_end) then
--_detalhes.tabela_vigente.start_time = _detalhes.encounter_table ["start"]
_detalhes.tabela_vigente.end_time = _detalhes.encounter_table ["end"]
end
--> encounter boss function
@@ -495,7 +497,7 @@
end
--> schedule clean up
_detalhes:ScheduleTimer ("IniciarColetaDeLixo", 15, true)
--_detalhes:ScheduleTimer ("IniciarColetaDeLixo", 15, true)
else
if (_detalhes.debug) then
@@ -517,14 +519,6 @@
else
--> this is a little bit complicated, need a specific function for combat cancellation
if (_detalhes.tabela_overall.end_time) then --> no inicio do combate o tempo do overall vai pra NIL o.0
_detalhes.tabela_overall.start_time = _detalhes.tabela_overall.start_time + tempo_do_combate --> assim ele descarta o tempo de combate na tabela do everall
else
_detalhes.tabela_overall.start_time = 0 --> tempo inicio igual a zero pois se o end_time é NIL significa que é a primeira vez que ocorre o combate na tabela overall
end
_detalhes.tabela_overall = _detalhes.tabela_overall - _detalhes.tabela_vigente --> isso aqui é novo, ele vai subtrair da overall qualquer dado adicionado na tabela descardata
--_table_wipe (_detalhes.tabela_vigente) --> descarta ela, não será mais usada
_detalhes.tabela_vigente = _detalhes.tabela_historico.tabelas[1] --> pega a tabela do ultimo combate
@@ -794,9 +788,8 @@
for class_type, container in _ipairs (_detalhes.tabela_vigente) do
for _, actor in _ipairs (container._ActorTable) do
actor.boss_fight_component = true
local shadow = _detalhes.tabela_overall (class_type, actor.nome)
if (shadow) then
shadow.boss_fight_component = true
if (actor.shadow) then
actor.shadow.boss_fight_component = true
end
end
end
@@ -806,10 +799,16 @@
local on_energy = energy_container._ActorTable [energy_container._NameIndexTable [name]]
if (on_energy) then
on_energy.fight_component = true
if (on_energy.shadow) then
on_energy.shadow.fight_component = true
end
end
local on_misc = misc_container._ActorTable [misc_container._NameIndexTable [name]]
if (on_misc) then
on_misc.fight_component = true
if (on_misc.shadow) then
on_misc.shadow.fight_component = true
end
end
end
@@ -829,6 +828,9 @@
local target_object = container._ActorTable [container._NameIndexTable [target_actor.nome]]
if (target_object) then
target_object.fight_component = true
if (target_object.shadow) then
target_object.shadow.fight_component = true
end
fight_component (energy_container, misc_container, target_actor.nome)
end
end
@@ -837,6 +839,9 @@
local target_object = container._ActorTable [container._NameIndexTable [damager_actor]]
if (target_object) then
target_object.fight_component = true
if (target_object.shadow) then
target_object.shadow.fight_component = true
end
fight_component (energy_container, misc_container, damager_actor)
end
end
@@ -845,6 +850,9 @@
local target_object = container._ActorTable [container._NameIndexTable [healer_actor]]
if (target_object) then
target_object.fight_component = true
if (target_object.shadow) then
target_object.shadow.fight_component = true
end
fight_component (energy_container, misc_container, healer_actor)
end
end
+57 -29
View File
@@ -117,20 +117,35 @@
local shadow
if (class_type == class_type_dano) then
shadow = atributo_damage:r_connect_shadow (esta_classe)
if (combate.overall_added) then
shadow = atributo_damage:r_connect_shadow (esta_classe)
else
shadow = atributo_damage:r_onlyrefresh_shadow (esta_classe)
end
elseif (class_type == class_type_cura) then
shadow = atributo_heal:r_connect_shadow (esta_classe)
if (combate.overall_added) then
shadow = atributo_heal:r_connect_shadow (esta_classe)
else
shadow = atributo_heal:r_onlyrefresh_shadow (esta_classe)
end
elseif (class_type == class_type_e_energy) then
shadow = atributo_energy:r_connect_shadow (esta_classe)
if (combate.overall_added) then
shadow = atributo_energy:r_connect_shadow (esta_classe)
else
shadow = atributo_energy:r_onlyrefresh_shadow (esta_classe)
end
elseif (class_type == class_type_misc) then
shadow = atributo_misc:r_connect_shadow (esta_classe)
if (combate.overall_added) then
shadow = atributo_misc:r_connect_shadow (esta_classe)
else
shadow = atributo_misc:r_onlyrefresh_shadow (esta_classe)
end
end
shadow:FazLinkagem (esta_classe)
--shadow:FazLinkagem (esta_classe)
end
end
@@ -578,7 +593,7 @@
function _detalhes:CheckMemoryAfterCombat()
if (_detalhes.next_memory_check < time()) then
if (_detalhes.debug) then
_detalhes:Msg ("checking memory after combat.")
_detalhes:Msg ("(debug) checking memory after combat.")
end
_detalhes.next_memory_check = time()+_detalhes.intervalo_memoria
UpdateAddOnMemoryUsage()
@@ -594,11 +609,11 @@
UpdateAddOnMemoryUsage()
local memory = GetAddOnMemoryUsage ("Details")
if (_detalhes.debug) then
_detalhes:Msg ("checking memory periodically. Using: ",math.floor (memory), "of", _detalhes.memory_ram)
_detalhes:Msg ("(debug) checking memory periodically. Using: ",math.floor (memory), "of", _detalhes.memory_ram * 1000)
end
if (memory > _detalhes.memory_ram) then
if (memory > _detalhes.memory_ram * 1000) then
if (_detalhes.debug) then
_detalhes:Msg ("Memory is too high, starting garbage collector")
_detalhes:Msg ("(debug) Memory is too high, starting garbage collector")
end
_detalhes:IniciarColetaDeLixo (1, 60) --> sending 1 only check for combat and ignore garbage collect cooldown
end
@@ -612,7 +627,7 @@
return
elseif (_detalhes.in_combat or _InCombatLockdown() or _detalhes:IsInInstance()) then
if (_detalhes.debug) then
_detalhes:Msg ("garbage collect queued due combatlockdown (forced false)")
_detalhes:Msg ("(debug) garbage collect queued due combatlockdown (forced false)")
end
_detalhes:ScheduleTimer ("IniciarColetaDeLixo", 5)
return
@@ -622,7 +637,7 @@
if (forcar == 1) then
if (_detalhes.in_combat or _InCombatLockdown()) then
if (_detalhes.debug) then
_detalhes:Msg ("garbage collect queued due combatlockdown (forced 1)")
_detalhes:Msg ("(debug) garbage collect queued due combatlockdown (forced 1)")
end
_detalhes:ScheduleTimer ("IniciarColetaDeLixo", 5, forcar)
return
@@ -633,9 +648,9 @@
if (_detalhes.debug) then
if (forcar) then
_detalhes:Msg ("collecting garbage with forced state: ", forcar)
_detalhes:Msg ("(debug) collecting garbage with forced state: ", forcar)
else
_detalhes:Msg ("collecting garbage.")
_detalhes:Msg ("(debug) collecting garbage.")
end
end
@@ -672,7 +687,7 @@
--> print cache states
if (_detalhes.debug) then
_detalhes:Msg ("removed: damage "..damage.." heal "..heal.." energy "..energy.." misc "..misc)
_detalhes:Msg ("(debug) removed: damage "..damage.." heal "..heal.." energy "..energy.." misc "..misc)
end
--> elimina pets antigos
@@ -687,12 +702,11 @@
collectgarbage()
UpdateAddOnMemoryUsage()
local memory2 = GetAddOnMemoryUsage ("Details")
_detalhes:Msg ("memory antes: "..memory.." memory depois: "..memory2)
_detalhes:Msg ("(debug) memory before: "..memory.." memory after: "..memory2)
end
end
--> combates Normais
local function FazColeta (_combate, tipo, intervalo_overwrite)
@@ -700,7 +714,7 @@
local _iter = {index = 1, data = conteudo[1], cleaned = 0}
local _tempo = _time()
local links_removed = 0
--local links_removed = 0
while (_iter.data) do
@@ -714,7 +728,7 @@
t = _actor.last_event + _detalhes.intervalo_coleta
end
if (not _actor.grupo and not _actor.boss and not _actor.fight_component and not _actor.boss_fight_component and t < _tempo) then
if (t < _tempo and not _actor.grupo and not _actor.boss and not _actor.fight_component and not _actor.boss_fight_component) then
local owner = _actor.owner
if (owner) then
local owner_actor = _combate (tipo, owner.nome)
@@ -732,6 +746,7 @@
end
--> fix para a weak table
--[[
local shadow = _actor.shadow
local _it = {index = 1, link = shadow.links [1]}
while (_it.link) do
@@ -743,7 +758,8 @@
_it.link = shadow.links [_it.index]
end
end
--]]
_iter.cleaned = _iter.cleaned+1
if (_actor.tipo == 1 or _actor.tipo == 2) then
@@ -774,6 +790,8 @@
--> Combate overall
function _detalhes:ColetarLixo (tipo, lastevent)
--print ("fazendo coleta...")
local _tempo = _time()
local limpados = 0
@@ -791,7 +809,7 @@
limpados = limpados + FazColeta (_combate, tipo, lastevent)
end
--> limpa a tabela overall
--> limpa a tabela overall para o atributo atual (limpa para os 4, um de cada vez através do ipairs)
local _overall_combat = _detalhes.tabela_overall
local conteudo = _overall_combat [tipo]._ActorTable
local _iter = {index = 1, data = conteudo[1], cleaned = 0} --> ._ActorTable[1] para pegar o primeiro index
@@ -800,6 +818,7 @@
local _actor = _iter.data
--[[
local meus_links = _rawget (_actor, "links")
local can_garbage = true
local new_weak_table = _setmetatable ({}, _detalhes.weaktable) --> precisa da nova weak table para remover os NILS da tabela antiga
@@ -813,8 +832,17 @@
end
_table_wipe (meus_links)
end
if (can_garbage or not meus_links) then --> não há referências a este objeto
--]]
local can_garbage = false
if (not _actor.grupo and not _actor.owner and not _actor.boss_fight_component and not _actor.fight_component) then
can_garbage = true
end
--if (can_garbage or not meus_links) then --> não há referências a este objeto
if (can_garbage) then --> não há referências a este objeto
--print ("garbaged:", _actor.nome)
if (not _actor.owner) then --> pet
_actor:subtract_total (_overall_combat)
@@ -823,11 +851,11 @@
--> apaga a referência deste jogador na tabela overall
_iter.cleaned = _iter.cleaned+1
if (_detalhes.debug) then
if (#_actor.links > 0) then
_detalhes:Msg (_actor.nome, " has been garbaged but have links: ", #_actor.links)
end
end
--if (_detalhes.debug) then
-- if (#_actor.links > 0) then
-- _detalhes:Msg ("(debug) " .. _actor.nome, " has been garbaged but have links: ", #_actor.links)
-- end
--end
if (_actor.tipo == 1 or _actor.tipo == 2) then
_actor:DesregistrarNaTimeMachine()
@@ -836,7 +864,7 @@
_iter.data = conteudo [_iter.index]
else
_actor.links = new_weak_table
--_actor.links = new_weak_table
_iter.index = _iter.index + 1
_iter.data = conteudo [_iter.index]
end
+108 -296
View File
@@ -51,21 +51,14 @@
--> current combat and overall pointers
local _current_combat = _detalhes.tabela_vigente or {} --> placeholder table
local _overall_combat = _detalhes.tabela_overall or {} --> placeholder table
--> total container pointers
local _current_total = _current_combat.totals
local _current_gtotal = _current_combat.totals_grupo
local _overall_total = _overall_combat.totals
local _overall_gtotal = _overall_combat.totals_grupo
--> actors container pointers
local _current_damage_container = _current_combat [1]
local _overall_damage_container = _overall_combat [1]
local _current_heal_container = _current_combat [2]
local _overall_heal_container = _overall_combat [2]
local _current_energy_container = _current_combat [3]
local _overall_energy_container = _overall_combat [3]
local _current_misc_container = _current_combat [4]
local _overall_misc_container = _overall_combat [4]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> cache
@@ -171,7 +164,6 @@
end
_current_damage_container.need_refresh = true
_overall_damage_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -220,14 +212,6 @@
end
--if (who_name == "Guardian of Ancient Kings") then --remover
-- print ("MELEE GAK 1", meu_dono)
--end
--> damager shadow
local shadow = este_jogador.shadow
local shadow_of_target = jogador_alvo.shadow
--> last event
este_jogador.last_event = _tempo
@@ -236,7 +220,6 @@
if (este_jogador.grupo) then
_current_gtotal [1] = _current_gtotal [1]+amount
_overall_gtotal [1] = _overall_gtotal [1]+amount
elseif (jogador_alvo.grupo) then
@@ -312,12 +295,6 @@
jogador_alvo.damage_from [who_name] = true
end
--> his shadow
shadow_of_target.damage_taken = shadow_of_target.damage_taken + amount --> adiciona o dano tomado
if (not shadow_of_target.damage_from [who_name]) then --> adiciona a pool de dano tomado de quem
shadow_of_target.damage_from [who_name] = true
end
------------------------------------------------------------------------------------------------
--> time start
@@ -329,7 +306,6 @@
meu_dono:Iniciar (true)
if (meu_dono.end_time) then
meu_dono.end_time = nil
meu_dono.shadow.end_time = nil
else
meu_dono:IniciarTempo (_tempo-3.0, meu_dono.shadow)
end
@@ -337,9 +313,8 @@
if (este_jogador.end_time) then
este_jogador.end_time = nil
shadow.end_time = nil
else
este_jogador:IniciarTempo (_tempo-3.0, shadow)
este_jogador:IniciarTempo (_tempo-3.0, este_jogador.shadow)
end
if (este_jogador.nome == _detalhes.playername and token ~= "SPELL_PERIODIC_DAMAGE") then --> iniciando o dps do "PLAYER"
@@ -361,7 +336,6 @@
if (raid_members_cache [who_serial] and raid_members_cache [alvo_serial]) then
este_jogador.friendlyfire_total = este_jogador.friendlyfire_total + amount
shadow.friendlyfire_total = shadow.friendlyfire_total + amount
local amigo = este_jogador.friendlyfire._NameIndexTable [alvo_name]
if (not amigo) then
@@ -371,7 +345,6 @@
end
amigo.total = amigo.total + amount
amigo.shadow.total = amigo.shadow.total + amount
local spell = amigo.spell_tables._ActorTable [spellid]
if (not spell) then
@@ -381,7 +354,6 @@
return spell:AddFF (amount) --adiciona a classe da habilidade, a classe da habilidade se encarrega de adicionar aos alvos dela
else
_current_total [1] = _current_total [1]+amount
_overall_total [1] = _overall_total [1]+amount
end
@@ -391,7 +363,6 @@
--> actor owner (if any)
if (meu_dono) then --> se for dano de um Pet
meu_dono.total = meu_dono.total + amount --> e adiciona o dano ao pet
meu_dono.shadow.total = meu_dono.shadow.total + amount --> e adiciona o dano ao pet
--> add owner targets
local owner_target = meu_dono.targets._NameIndexTable [alvo_name]
@@ -407,11 +378,9 @@
--> actor
este_jogador.total = este_jogador.total + amount
shadow.total = shadow.total + amount
--> actor without pets
este_jogador.total_without_pet = este_jogador.total_without_pet + amount
shadow.total_without_pet = shadow.total_without_pet + amount
--> actor targets
local este_alvo = este_jogador.targets._NameIndexTable [alvo_name]
@@ -421,7 +390,6 @@
este_alvo = este_jogador.targets._ActorTable [este_alvo]
end
este_alvo.total = este_alvo.total + amount
este_alvo.shadow.total = este_alvo.shadow.total + amount
--> actor spells table
local spell = este_jogador.spell_tables._ActorTable [spellid]
@@ -515,10 +483,6 @@
-----------------------------------------------------------------------------------------------------------------------------------------
function parser:summon (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellName)
--if (alvo_name == "Guardian of Ancient Kings") then --remover
-- print ("Summon GAK 1", who_name)
--end
--> pet summon another pet
local sou_pet = _detalhes.tabela_pets.pets [who_serial]
if (sou_pet) then --> okey, ja é um pet
@@ -575,7 +539,6 @@
end
_current_heal_container.need_refresh = true
_overall_heal_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -595,9 +558,6 @@
healing_cache [alvo_name] = jogador_alvo
end
end
local shadow = este_jogador.shadow
local shadow_of_target = jogador_alvo.shadow
este_jogador.last_event = _tempo
@@ -611,14 +571,7 @@
este_jogador.heal_enemy [spellid] = este_jogador.heal_enemy [spellid] + cura_efetiva
end
if (not este_jogador.shadow.heal_enemy [spellid]) then
shadow.heal_enemy [spellid] = cura_efetiva
else
shadow.heal_enemy [spellid] = shadow.heal_enemy [spellid] + cura_efetiva
end
este_jogador.heal_enemy_amt = este_jogador.heal_enemy_amt + cura_efetiva
shadow.heal_enemy_amt = shadow.heal_enemy_amt + cura_efetiva
return
end
@@ -628,7 +581,6 @@
if (este_jogador.grupo) then
_current_combat.totals_grupo[2] = _current_combat.totals_grupo[2] + cura_efetiva
_overall_combat.totals_grupo[2] = _overall_combat.totals_grupo[2] + cura_efetiva
end
if (jogador_alvo.grupo) then
@@ -659,9 +611,9 @@
este_jogador:Iniciar (true) --inicia o dps do jogador
if (este_jogador.end_time) then --> o combate terminou, reabrir o tempo
este_jogador.end_time = nil
shadow.end_time = nil --> não tenho certeza se isso aqui não pode dar merda
este_jogador.shadow.end_time = nil --> não tenho certeza se isso aqui não pode dar merda
else
este_jogador:IniciarTempo (_tempo-3.0, shadow)
este_jogador:IniciarTempo (_tempo-3.0, este_jogador.shadow)
end
end
@@ -680,7 +632,6 @@
--> combat total
_current_total [2] = _current_total [2] + cura_efetiva
_overall_total [2] = _overall_total [2] + cura_efetiva
--> healing taken
jogador_alvo.healing_taken = jogador_alvo.healing_taken + cura_efetiva --> adiciona o dano tomado
@@ -688,28 +639,18 @@
jogador_alvo.healing_from [who_name] = true
end
--> healing taken shadow
shadow_of_target.healing_taken = shadow_of_target.healing_taken+cura_efetiva --> adiciona o dano tomado
if (not shadow_of_target.healing_from [who_name]) then --> adiciona a pool de dano tomado de quem
shadow_of_target.healing_from [who_name] = true
end
--> actor healing amount
este_jogador.total = este_jogador.total + cura_efetiva
shadow.total = shadow.total + cura_efetiva
if (is_shield) then
este_jogador.totalabsorb = este_jogador.totalabsorb + cura_efetiva
shadow.totalabsorb = shadow.totalabsorb + cura_efetiva
end
este_jogador.total_without_pet = este_jogador.total_without_pet + cura_efetiva
shadow.total_without_pet = shadow.total_without_pet + cura_efetiva
--> pet
if (meu_dono) then
meu_dono.total = meu_dono.total + cura_efetiva --> heal do pet
meu_dono.shadow.total = meu_dono.shadow.total + cura_efetiva --> heal do pet na shadow
local owner_target = meu_dono.targets._NameIndexTable [alvo_name]
if (not owner_target) then
@@ -718,21 +659,17 @@
owner_target = meu_dono.targets._ActorTable [owner_target]
end
owner_target.total = owner_target.total + amount
end
--> target amount
este_alvo.total = este_alvo.total + cura_efetiva
este_alvo.shadow.total = este_alvo.shadow.total + cura_efetiva
end
if (overhealing > 0) then
este_jogador.totalover = este_jogador.totalover + overhealing
shadow.totalover = shadow.totalover + overhealing
este_alvo.overheal = este_alvo.overheal + overhealing
if (meu_dono) then
meu_dono.totalover = meu_dono.totalover + overhealing
meu_dono.shadow.totalover = meu_dono.shadow.totalover + overhealing
end
end
@@ -1162,7 +1099,6 @@
este_jogador = _current_misc_container:PegarCombatente (who_serial, spellname, who_flags, true)
misc_cache [spellname] = este_jogador
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1176,18 +1112,19 @@
este_jogador.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target)
if (not shadow.debuff_uptime_targets) then
shadow.boss_debuff = true
shadow.damage_twin = who_name
shadow.spellschool = spellschool
shadow.damage_spellid = spellid
shadow.debuff_uptime = 0
shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target)
if (not este_jogador.shadow.debuff_uptime_targets) then
este_jogador.shadow.boss_debuff = true
este_jogador.shadow.damage_twin = who_name
este_jogador.shadow.spellschool = spellschool
este_jogador.shadow.damage_spellid = spellid
este_jogador.shadow.debuff_uptime = 0
este_jogador.shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_enemydebufftarget_target)
end
este_jogador.debuff_uptime_targets.shadow = shadow.debuff_uptime_targets
este_jogador.debuff_uptime_spell_tables.shadow = shadow.debuff_uptime_spell_tables
este_jogador.debuff_uptime_targets.shadow = este_jogador.shadow.debuff_uptime_targets
este_jogador.debuff_uptime_spell_tables.shadow = este_jogador.shadow.debuff_uptime_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1213,18 +1150,6 @@
end
este_alvo.actived_at = _tempo
--> shadows
este_alvo = este_alvo.shadow
este_jogador = este_jogador.shadow
este_alvo.actived = true
este_alvo.activedamt = este_alvo.activedamt + 1
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at
este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at
end
este_alvo.actived_at = _tempo
elseif (in_out == "DEBUFF_UPTIME_REFRESH") then
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at
@@ -1233,17 +1158,6 @@
este_alvo.actived_at = _tempo
este_alvo.actived = true
--> shadows
este_alvo = este_alvo.shadow
este_jogador = este_jogador.shadow
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _tempo - este_alvo.actived_at
este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at
end
este_alvo.actived_at = _tempo
este_alvo.actived = true
elseif (in_out == "DEBUFF_UPTIME_OUT") then
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _detalhes._tempo - este_alvo.actived_at
@@ -1258,25 +1172,6 @@
else
este_alvo.actived_at = _tempo
end
--> shadows
este_alvo = este_alvo.shadow
este_jogador = este_jogador.shadow
if (este_alvo.actived_at and este_alvo.actived) then
este_alvo.uptime = este_alvo.uptime + _detalhes._tempo - este_alvo.actived_at
este_jogador.debuff_uptime = este_jogador.debuff_uptime + _tempo - este_alvo.actived_at --> token = actor misc object
end
este_alvo.activedamt = este_alvo.activedamt - 1
if (este_alvo.activedamt == 0) then
este_alvo.actived = false
este_alvo.actived_at = nil
else
este_alvo.actived_at = _tempo
end
end
end
@@ -1285,7 +1180,6 @@
--> early checks and fixes
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1294,7 +1188,6 @@
este_jogador = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true)
misc_cache [who_name] = este_jogador
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1304,14 +1197,14 @@
este_jogador.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.debuff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
if (not shadow.debuff_uptime_targets) then
shadow.debuff_uptime = 0
shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
if (not este_jogador.shadow.debuff_uptime_targets) then
este_jogador.shadow.debuff_uptime = 0
este_jogador.shadow.debuff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.shadow.debuff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
end
este_jogador.debuff_uptime_targets.shadow = shadow.debuff_uptime_targets
este_jogador.debuff_uptime_spell_tables.shadow = shadow.debuff_uptime_spell_tables
este_jogador.debuff_uptime_targets.shadow = este_jogador.shadow.debuff_uptime_targets
este_jogador.debuff_uptime_spell_tables.shadow = este_jogador.shadow.debuff_uptime_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1335,7 +1228,6 @@
--> early checks and fixes
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1344,7 +1236,6 @@
este_jogador = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true)
misc_cache [who_name] = este_jogador
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1354,14 +1245,14 @@
este_jogador.buff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.buff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
if (not shadow.buff_uptime_targets) then
shadow.buff_uptime = 0
shadow.buff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
shadow.buff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
if (not este_jogador.shadow.buff_uptime_targets) then
este_jogador.shadow.buff_uptime = 0
este_jogador.shadow.buff_uptime_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.shadow.buff_uptime_targets = container_combatentes:NovoContainer (container_damage_target)
end
este_jogador.buff_uptime_targets.shadow = shadow.buff_uptime_targets
este_jogador.buff_uptime_spell_tables.shadow = shadow.buff_uptime_spell_tables
este_jogador.buff_uptime_targets.shadow = este_jogador.shadow.buff_uptime_targets
este_jogador.buff_uptime_spell_tables.shadow = este_jogador.shadow.buff_uptime_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1433,7 +1324,6 @@
end
_current_energy_container.need_refresh = true
_overall_energy_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1464,9 +1354,6 @@
este_alvo = este_jogador.targets._ActorTable [este_alvo]
end
local shadow = este_jogador.shadow
local shadow_of_target = jogador_alvo.shadow
este_jogador.last_event = _tempo
------------------------------------------------------------------------------------------------
@@ -1474,34 +1361,26 @@
--> combat total
_current_total [3] [key_regenType] = _current_total [3] [key_regenType] + amount
_overall_total [3] [key_regenType] = _overall_total [3] [key_regenType] + amount
if (este_jogador.grupo) then
_current_gtotal [3] [key_regenType] = _current_gtotal [3] [key_regenType] + amount
_overall_gtotal [3] [key_regenType] = _overall_gtotal [3] [key_regenType] + amount
end
--> regen produced amount
este_jogador [key_regenType] = este_jogador [key_regenType] + amount
shadow [key_regenType] = shadow [key_regenType] + amount
este_alvo [key_regenType] = este_alvo [key_regenType] + amount
--> target regenerated amount
jogador_alvo [key_regenDone] = jogador_alvo [key_regenDone] + amount
shadow_of_target [key_regenDone] = shadow_of_target [key_regenDone] + amount
--> regen from
if (not jogador_alvo [key_regenFrom] [who_name]) then
jogador_alvo [key_regenFrom] [who_name] = true
end
if (not shadow_of_target [key_regenFrom] [who_name]) then
shadow_of_target [key_regenFrom] [who_name] = true
end
--> owner
if (meu_dono) then
meu_dono [key_regenType] = meu_dono [key_regenType] + amount --> e adiciona o dano ao pet
meu_dono.shadow [key_regenType] = meu_dono.shadow [key_regenType] + amount --> e adiciona o dano ao pet
end
--> actor spells table
@@ -1526,7 +1405,6 @@
--> early checks and fixes
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1539,7 +1417,6 @@
misc_cache [who_name] = este_jogador
end
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1548,15 +1425,15 @@
este_jogador.cooldowns_defensive = 0
este_jogador.cooldowns_defensive_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.cooldowns_defensive_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades
if (not shadow.cooldowns_defensive_targets) then
shadow.cooldowns_defensive = 0
shadow.cooldowns_defensive_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
shadow.cooldowns_defensive_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas
if (not este_jogador.shadow.cooldowns_defensive_targets) then
este_jogador.shadow.cooldowns_defensive = 0
este_jogador.shadow.cooldowns_defensive_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.shadow.cooldowns_defensive_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas
end
este_jogador.cooldowns_defensive_targets.shadow = shadow.cooldowns_defensive_targets
este_jogador.cooldowns_defensive_spell_tables.shadow = shadow.cooldowns_defensive_spell_tables
este_jogador.cooldowns_defensive_targets.shadow = este_jogador.shadow.cooldowns_defensive_targets
este_jogador.cooldowns_defensive_spell_tables.shadow = este_jogador.shadow.cooldowns_defensive_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1564,15 +1441,12 @@
--> actor cooldowns used
este_jogador.cooldowns_defensive = este_jogador.cooldowns_defensive + 1
shadow.cooldowns_defensive = shadow.cooldowns_defensive + 1
--> combat totals
_current_total [4].cooldowns_defensive = _current_total [4].cooldowns_defensive + 1
_overall_total [4].cooldowns_defensive = _overall_total [4].cooldowns_defensive + 1
if (este_jogador.grupo) then
_current_gtotal [4].cooldowns_defensive = _current_gtotal [4].cooldowns_defensive + 1
_overall_gtotal [4].cooldowns_defensive = _overall_gtotal [4].cooldowns_defensive + 1
if (who_name == alvo_name) then
@@ -1651,7 +1525,6 @@
end
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1664,7 +1537,6 @@
misc_cache [who_name] = este_jogador
end
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1674,16 +1546,17 @@
este_jogador.interrupt_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.interrupt_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
este_jogador.interrompeu_oque = {}
if (not shadow.interrupt_targets) then
shadow.interrupt = 0
shadow.interrupt_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
shadow.interrupt_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
shadow.interrompeu_oque = {}
if (not este_jogador.shadow.interrupt_targets) then
este_jogador.shadow.interrupt = 0
este_jogador.shadow.interrupt_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.shadow.interrupt_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
este_jogador.shadow.interrompeu_oque = {}
end
este_jogador.interrupt_targets.shadow = shadow.interrupt_targets
este_jogador.interrupt_spell_tables.shadow = shadow.interrupt_spell_tables
este_jogador.interrupt_targets.shadow = este_jogador.shadow.interrupt_targets
este_jogador.interrupt_spell_tables.shadow = este_jogador.shadow.interrupt_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1691,15 +1564,12 @@
--> actor interrupt amount
este_jogador.interrupt = este_jogador.interrupt + 1
shadow.interrupt = shadow.interrupt + 1
--> combat totals
_current_total [4].interrupt = _current_total [4].interrupt + 1
_overall_total [4].interrupt = _overall_total [4].interrupt + 1
if (este_jogador.grupo) then
_current_gtotal [4].interrupt = _current_gtotal [4].interrupt + 1
_overall_gtotal [4].interrupt = _overall_gtotal [4].interrupt + 1
end
--> update last event
@@ -1713,12 +1583,6 @@
este_jogador.interrompeu_oque [extraSpellID] = este_jogador.interrompeu_oque [extraSpellID] + 1
end
if (not shadow.interrompeu_oque [extraSpellID]) then
shadow.interrompeu_oque [extraSpellID] = 1
else
shadow.interrompeu_oque [extraSpellID] = shadow.interrompeu_oque [extraSpellID] + 1
end
--> actor targets
local este_alvo = este_jogador.interrupt_targets._NameIndexTable [alvo_name]
if (not este_alvo) then
@@ -1780,6 +1644,8 @@
return
end
-- para aqui --
------------------------------------------------------------------------------------------------
--> record how many times the spell has been casted successfully
@@ -1792,7 +1658,6 @@
end
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1816,13 +1681,13 @@
este_jogador.spellcast = 0
este_jogador.spellcast_spell_tables = container_habilidades:NovoContainer (container_misc)
if (not shadow.spellcast_targets) then
shadow.spellcast = 0
shadow.spellcast_spell_tables = container_habilidades:NovoContainer (container_misc)
if (not este_jogador.shadow.spellcast_targets) then
este_jogador.shadow.spellcast = 0
este_jogador.shadow.spellcast_spell_tables = container_habilidades:NovoContainer (container_misc)
end
este_jogador.spellcast_targets.shadow = shadow.spellcast_targets
este_jogador.spellcast_spell_tables.shadow = shadow.spellcast_spell_tables
este_jogador.spellcast_targets.shadow = este_jogador.shadow.spellcast_targets
este_jogador.spellcast_spell_tables.shadow = este_jogador.shadow.spellcast_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1860,7 +1725,6 @@
end
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1879,7 +1743,6 @@
end
end
--]]
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1890,16 +1753,16 @@
este_jogador.dispell_targets = container_combatentes:NovoContainer (container_damage_target)
este_jogador.dispell_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.dispell_oque = {}
if (not shadow.dispell_targets) then
shadow.dispell = 0
shadow.dispell_targets = container_combatentes:NovoContainer (container_damage_target)
shadow.dispell_spell_tables = container_habilidades:NovoContainer (container_misc)
shadow.dispell_oque = {}
if (not este_jogador.shadow.dispell_targets) then
este_jogador.shadow.dispell = 0
este_jogador.shadow.dispell_targets = container_combatentes:NovoContainer (container_damage_target)
este_jogador.shadow.dispell_spell_tables = container_habilidades:NovoContainer (container_misc)
este_jogador.shadow.dispell_oque = {}
end
este_jogador.dispell_targets.shadow = shadow.dispell_targets
este_jogador.dispell_spell_tables.shadow = shadow.dispell_spell_tables
este_jogador.dispell_targets.shadow = este_jogador.shadow.dispell_targets
este_jogador.dispell_spell_tables.shadow = este_jogador.shadow.dispell_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -1911,16 +1774,13 @@
--> total dispells in combat
_current_total [4].dispell = _current_total [4].dispell + 1
_overall_total [4].dispell = _overall_total [4].dispell + 1
if (este_jogador.grupo) then
_current_gtotal [4].dispell = _current_gtotal [4].dispell + 1
_overall_gtotal [4].dispell = _overall_gtotal [4].dispell + 1
end
--> actor dispell amount
este_jogador.dispell = este_jogador.dispell + 1
shadow.dispell = shadow.dispell + 1
--> dispell what
if (extraSpellID) then
@@ -1929,12 +1789,6 @@
else
este_jogador.dispell_oque [extraSpellID] = este_jogador.dispell_oque [extraSpellID] + 1
end
if (not shadow.dispell_oque [extraSpellID]) then
shadow.dispell_oque [extraSpellID] = 1
else
shadow.dispell_oque [extraSpellID] = shadow.dispell_oque [extraSpellID] + 1
end
end
--> actor targets
@@ -1965,7 +1819,6 @@
end
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -1978,8 +1831,6 @@
misc_cache [who_name] = este_jogador
end
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -1989,15 +1840,15 @@
este_jogador.ress = 0
este_jogador.ress_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.ress_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
if (not shadow.ress_targets) then
shadow.ress = 0
shadow.ress_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
shadow.ress_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
if (not este_jogador.shadow.ress_targets) then
este_jogador.shadow.ress = 0
este_jogador.shadow.ress_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.shadow.ress_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
end
este_jogador.ress_targets.shadow = shadow.ress_targets
este_jogador.ress_spell_tables.shadow = shadow.ress_spell_tables
este_jogador.ress_targets.shadow = este_jogador.shadow.ress_targets
este_jogador.ress_spell_tables.shadow = este_jogador.shadow.ress_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -2009,16 +1860,13 @@
--> combat ress total
_current_total [4].ress = _current_total [4].ress + 1
_overall_total [4].ress = _overall_total [4].ress + 1
if (este_jogador.grupo) then
_current_combat.totals_grupo[4].ress = _current_combat.totals_grupo[4].ress+1
_overall_combat.totals_grupo[4].ress = _overall_combat.totals_grupo[4].ress+1
end
--> add ress amount
este_jogador.ress = este_jogador.ress + 1
shadow.ress = shadow.ress + 1
--> add battle ress
if (_UnitAffectingCombat (who_name)) then
@@ -2087,7 +1935,6 @@
end
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
@@ -2106,7 +1953,6 @@
end
end
--]]
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
@@ -2118,15 +1964,15 @@
este_jogador.cc_break_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
este_jogador.cc_break_oque = {}
if (not shadow.cc_break) then
shadow.cc_break = 0
shadow.cc_break_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
shadow.cc_break_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
shadow.cc_break_oque = {}
if (not este_jogador.shadow.cc_break) then
este_jogador.shadow.cc_break = 0
este_jogador.shadow.cc_break_targets = container_combatentes:NovoContainer (container_damage_target) --> pode ser um container de alvo de dano, pois irá usar apenas o .total
este_jogador.shadow.cc_break_spell_tables = container_habilidades:NovoContainer (container_misc) --> cria o container das habilidades usadas para interromper
este_jogador.shadow.cc_break_oque = {}
end
este_jogador.cc_break_targets.shadow = shadow.cc_break_targets
este_jogador.cc_break_spell_tables.shadow = shadow.cc_break_spell_tables
este_jogador.cc_break_targets.shadow = este_jogador.shadow.cc_break_targets
este_jogador.cc_break_spell_tables.shadow = este_jogador.shadow.cc_break_spell_tables
end
------------------------------------------------------------------------------------------------
@@ -2138,16 +1984,13 @@
--> combat cc break total
_current_total [4].cc_break = _current_total [4].cc_break + 1
_overall_total [4].cc_break = _overall_total [4].cc_break + 1
if (este_jogador.grupo) then
_current_combat.totals_grupo[4].cc_break = _current_combat.totals_grupo[4].cc_break+1
_overall_combat.totals_grupo[4].cc_break = _overall_combat.totals_grupo[4].cc_break+1
end
--> add amount
este_jogador.cc_break = este_jogador.cc_break + 1
shadow.cc_break = shadow.cc_break + 1
--> broke what
if (not este_jogador.cc_break_oque [spellid]) then
@@ -2156,12 +1999,6 @@
este_jogador.cc_break_oque [spellid] = este_jogador.cc_break_oque [spellid] + 1
end
if (not shadow.cc_break_oque [spellid]) then
shadow.cc_break_oque [spellid] = 1
else
shadow.cc_break_oque [spellid] = shadow.cc_break_oque [spellid] + 1
end
--> actor targets
local este_alvo = este_jogador.cc_break_targets._NameIndexTable [alvo_name]
if (not este_alvo) then
@@ -2212,58 +2049,8 @@
_current_combat.frags [alvo_name] = _current_combat.frags [alvo_name] + 1
end
if (not _overall_combat.frags [alvo_name]) then
_overall_combat.frags [alvo_name] = 1
else
_overall_combat.frags [alvo_name] = _overall_combat.frags [alvo_name] + 1
end
_current_combat.frags_need_refresh = true
_overall_combat.frags_need_refresh = true
--> encounter end --[[REMOVED]] it's deprecated since encounter end and start replace this
--[[
local encounter_type = _detalhes.encounter.type
if (encounter_type) then
if (encounter_type == 1 or encounter_type == 2) then
local npcTable = _detalhes.encounter.data
local serial = tonumber (alvo_serial:sub (6, 10), 16)
--vardump (npcTable)
if (npcTable [serial] ~= nil) then --> ~= default false
_detalhes.encounter.data [serial] = true
--> check if it's done
local its_done = true
for npcID, killed in pairs (_detalhes.encounter.data) do
if (not killed) then
its_done = false
--print ("npc",npcID,"NAO esta morto","quem morreu:",alvo_name)
break
else
--print ("npc",npcID,"esta morto","quem morreu:",alvo_name)
end
end
--> combat finished
if (its_done) then
if (_detalhes.debug) then
_detalhes:Msg ("(debug) combat finished: encounter objective is completed")
end
--print ("saindo do combate")
_detalhes:SairDoCombate (true)
end
end
end
end
--]]
--> player death
elseif (not _UnitIsFeignDeath (alvo_name)) then
if (
@@ -2280,13 +2067,10 @@
--_detalhes:ScheduleTimer ("TrueDead", 1, {time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags})
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
--> combat totals
_current_total [4].dead = _current_total [4].dead + 1
_overall_total [4].dead = _overall_total [4].dead + 1
_current_gtotal [4].dead = _current_gtotal [4].dead + 1
_overall_gtotal [4].dead = _overall_gtotal [4].dead + 1
--> main actor no container de misc que irá armazenar a morte
local este_jogador, meu_dono = misc_cache [alvo_name]
@@ -2375,7 +2159,6 @@
--print ("A morte teve "..#esta_morte.." eventos")
_table_insert (_current_combat.last_events_tables, #_current_combat.last_events_tables+1, t)
_table_insert (_overall_combat.last_events_tables, #_current_combat.last_events_tables+1, t)
--> reseta a pool
dano.last_events_table = _detalhes:CreateActorLastEventTable()
@@ -2612,6 +2395,8 @@
local encounterID, encounterName, difficultyID, raidSize = _select (1, ...)
local zoneName, _, _, _, _, _, _, zoneMapID = _GetInstanceInfo()
--print (encounterID, encounterName, difficultyID, raidSize)
_detalhes.encounter_table ["start"] = time()
_detalhes.encounter_table ["end"] = nil
@@ -2729,6 +2514,29 @@
_detalhes.SoloTables.Plugins [_detalhes.SoloTables.Mode].Stop()
end
end
if (_detalhes.schedule_flag_boss_components) then
_detalhes.schedule_flag_boss_components = false
_detalhes:FlagActorsOnBossFight()
end
if (_detalhes.schedule_remove_overall) then
if (_detalhes.debug) then
_detalhes:Msg ("(debug) found schedule overall data deletion.")
end
_detalhes.schedule_remove_overall = false
_detalhes.tabela_historico:resetar_overall()
end
if (_detalhes.schedule_add_to_overall) then
if (_detalhes.debug) then
_detalhes:Msg ("(debug) found schedule overall data addition.")
end
_detalhes.schedule_add_to_overall = false
_detalhes.historico:adicionar_overall (_detalhes.tabela_vigente)
end
return
elseif (evento == "GROUP_ROSTER_UPDATE") then
@@ -2773,7 +2581,17 @@
elseif (evento == "INSTANCE_ENCOUNTER_ENGAGE_UNIT") then
--> Nothing to do here
return
elseif (evento == "START_TIMER") then
if (C_Scenario.IsChallengeMode() and _detalhes.overall_clear_newchallenge) then
_detalhes.historico:resetar_overall()
end
elseif (evento == "WORLD_STATE_TIMER_START") then
--> Nothing to do here
return
elseif (evento == "PLAYER_LOGOUT") then
--> close info window
@@ -2984,23 +2802,17 @@
--> refresh combat tables
_current_combat = _detalhes.tabela_vigente
_overall_combat = _detalhes.tabela_overall
--> refresh total containers
_current_total = _current_combat.totals
_current_gtotal = _current_combat.totals_grupo
_overall_total = _overall_combat.totals
_overall_gtotal = _overall_combat.totals_grupo
--> refresh actors containers
_current_damage_container = _current_combat [1]
_overall_damage_container = _overall_combat [1]
_current_heal_container = _current_combat [2]
_overall_heal_container = _overall_combat [2]
_current_energy_container = _current_combat [3]
_overall_energy_container = _overall_combat [3]
_current_misc_container = _current_combat [4]
_overall_misc_container = _overall_combat [4]
--> refresh data capture options
_recording_self_buffs = _detalhes.RecordPlayerSelfBuffs
+9 -4
View File
@@ -835,7 +835,7 @@ do
function PSegment:CreateChildObject (instance)
local myframe = _detalhes.StatusBar:CreateChildFrame (instance, "DetailsPSegmentInstance" .. instance:GetInstanceId(), DEFAULT_CHILD_WIDTH, DEFAULT_CHILD_HEIGHT)
local new_child = _detalhes.StatusBar:CreateChildTable (instance, PSegment, myframe)
new_child.options.segmentType = new_child.options.segmentType or 1
new_child.options.segmentType = new_child.options.segmentType or 2
return new_child
end
@@ -919,12 +919,17 @@ do
_detalhes:CancelTimer (Clock.tick)
end
function _detalhes:ClockPluginTickOnSegment()
_detalhes:ClockPluginTick (true)
end
--1 sec tick
function _detalhes:ClockPluginTick()
function _detalhes:ClockPluginTick (force)
for index, child in _ipairs (Clock.childs) do
local instance = child.instance
if (child.enabled and instance:IsEnabled()) then
if (instance.showing) then
if (instance.showing and ( (instance.segmento ~= -1) or (instance.segmento == -1 and not _detalhes.in_combat) or force) ) then
local timeType = child.options.timeType
if (timeType == 1) then
@@ -1050,7 +1055,7 @@ do
--> Register needed events
_detalhes:RegisterEvent (Clock, "COMBAT_PLAYER_ENTER", Clock.PlayerEnterCombat)
_detalhes:RegisterEvent (Clock, "COMBAT_PLAYER_LEAVE", Clock.PlayerLeaveCombat)
_detalhes:RegisterEvent (Clock, "DETAILS_INSTANCE_CHANGESEGMENT", _detalhes.ClockPluginTick)
_detalhes:RegisterEvent (Clock, "DETAILS_INSTANCE_CHANGESEGMENT", _detalhes.ClockPluginTickOnSegment)
_detalhes:RegisterEvent (Clock, "DETAILS_DATA_SEGMENTREMOVED", _detalhes.ClockPluginTick)
_detalhes:RegisterEvent (Clock, "DETAILS_DATA_RESET", Clock.DataReset)
+1 -1
View File
@@ -775,7 +775,7 @@
end
--
_detalhes.times_of_tutorial = 0
_detalhes:ScheduleTimer ("delay_tutorial", 20)
_detalhes:ScheduleTimer ("delay_tutorial", 5)
end
end