- Added new sub attribute for Heal: Enemy Heal.

- Added new sub attribute for Heal: Damage Prevented.
- Added new sub attribute for Misc: Cooldowns.
- All tooltips has been revised and changed.
- Fixed issue with absobed heal amount.
- Actors will be placed inside cache only if Details is in combat.
- Added support to dual status bar on CoolTips.
- Fixed some labels over info window were text was to big.
- Cosmetic changes in many places.
This commit is contained in:
Tercio
2013-09-01 18:27:16 -03:00
parent 225980313a
commit 3f45e83047
34 changed files with 1813 additions and 189 deletions
+134 -58
View File
@@ -33,6 +33,7 @@
local escudo = _detalhes.escudos --details local
local parser = _detalhes.parser --details local
local absorb_spell_list = _detalhes.AbsorbSpells --details local
local defensive_cooldown_spell_list = _detalhes.DefensiveCooldownSpells --details local
local cc_spell_list = _detalhes.CrowdControlSpells --details local
local container_combatentes = _detalhes.container_combatentes --details local
local container_habilidades = _detalhes.container_habilidades --details local
@@ -488,12 +489,13 @@
return
end
--> checking shield and overheals
local cura_efetiva = absorbed
if (is_shield) then
--> o shield ja passa o numero exato da cura e o overheal
cura_efetiva = amount
else
cura_efetiva = amount - overhealing
--cura_efetiva = absorbed + amount - overhealing
cura_efetiva = cura_efetiva + amount - overhealing
end
_current_heal_container.need_refresh = true
@@ -535,11 +537,14 @@
end
if (not este_jogador.shadow.heal_enemy [spellid]) then
este_jogador.shadow.heal_enemy [spellid] = cura_efetiva
shadow.heal_enemy [spellid] = cura_efetiva
else
este_jogador.shadow.heal_enemy [spellid] = este_jogador.shadow.heal_enemy [spellid] + cura_efetiva
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
@@ -555,41 +560,6 @@
local t = jogador_alvo.last_events_table
local i = t.n
--[[
if (not i) then
local isOriginal = jogador_alvo.last_events_table.original
if (isOriginal) then
isOriginal = "IsOriginal = TRUE"
else
isOriginal = "IsOriginal = FALSE"
end
local indexes = #jogador_alvo.last_events_table
if (not indexes) then
indexes = "Indexes = NIL"
else
indexes = "Indexes = "..indexes
end
local resync = _detalhes.tabela_vigente.resincked
if (resync) then
resync = "resync = TRUE"
else
resync = "resync = FALSE"
end
local saved = _detalhes.tabela_vigente.hasSaved
if (saved) then
saved = "saved = TRUE"
else
saved = "saved = FALSE"
end
print ("Report the lines shown, click on reset button and type /reload")
print ("We are investigation this issue, this information is important to us.")
assert (false, "Please Report This Error on the Blue Button: Parser 194: " .. isOriginal .. " " .. indexes .. " " .. resync .. " " .. saved)
end
--]]
t.n = i + 1
t = t [i]
@@ -652,6 +622,11 @@
--> 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
@@ -721,6 +696,10 @@
else
escudo [alvo_name] [spellid] [who_name] = amount
end
elseif (defensive_cooldown_spell_list [spellid]) then
--> usou cooldown
return parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount)
------------------------------------------------------------------------------------------------
--> recording buffs
@@ -816,12 +795,16 @@
if (absorb_spell_list [spellid] and amount) then
if (escudo [alvo_name] and escudo [alvo_name][spellid] and escudo [alvo_name][spellid][who_name]) then
--print ("refresh", escudo [alvo_name][spellid][who_name], amount)
local absorb = escudo [alvo_name][spellid][who_name] - amount
local overheal = amount - absorb
escudo [alvo_name][spellid][who_name] = amount
if (absorb > 0) then
return parser:heal (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, _math_ceil (absorb), 0, 0, 0, true)
end
--if (absorb > 0) then
return parser:heal (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, _math_ceil (absorb), _math_ceil (overheal), 0, 0, true)
--end
else
--> should apply aura if not found in already applied buff list?
end
@@ -905,12 +888,21 @@
if (absorb_spell_list [spellid]) then
if (escudo [alvo_name] and escudo [alvo_name][spellid] and escudo [alvo_name][spellid][who_name]) then
if (amount) then
local escudo_antigo = escudo [alvo_name][spellid][who_name]
if (escudo_antigo and escudo_antigo > amount) then
local absorb = escudo_antigo - amount
escudo [alvo_name][spellid][who_name] = nil
return parser:heal (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, _math_ceil (absorb), _math_ceil (escudo_antigo), 0, 0, true) --> último parametro IS_SHIELD
end
-- o amount é o que sobrou do escudo
local escudo_antigo = escudo [alvo_name][spellid][who_name] --> quantidade total do escudo que foi colocado
--print (escudo_antigo, amount)
--if (escudo_antigo and escudo_antigo > amount) then
local absorb = escudo_antigo - amount
local overheal = escudo_antigo - absorb
escudo [alvo_name][spellid][who_name] = nil
return parser:heal (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, _math_ceil (absorb), _math_ceil (overheal), 0, 0, true) --> último parametro IS_SHIELD
--end
end
escudo [alvo_name][spellid][who_name] = nil
end
@@ -1103,6 +1095,85 @@
--> MISC |
-----------------------------------------------------------------------------------------------------------------------------------------
function parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount)
------------------------------------------------------------------------------------------------
--> early checks and fixes
_current_misc_container.need_refresh = true
_overall_misc_container.need_refresh = true
------------------------------------------------------------------------------------------------
--> get actors
--> main actor
local este_jogador, meu_dono = misc_cache [who_name]
if (not este_jogador) then --> pode ser um desconhecido ou um pet
este_jogador, meu_dono, who_name = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true)
if (not meu_dono) then --> se não for um pet, adicionar no cache
misc_cache [who_name] = este_jogador
end
end
local shadow = este_jogador.shadow
------------------------------------------------------------------------------------------------
--> build containers on the fly
if (not este_jogador.cooldowns_defensive) then
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
end
este_jogador.cooldowns_defensive_targets.shadow = shadow.cooldowns_defensive_targets
este_jogador.cooldowns_defensive_spell_tables.shadow = shadow.cooldowns_defensive_spell_tables
end
------------------------------------------------------------------------------------------------
--> add amount
--> 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
end
--> update last event
este_jogador.last_event = _tempo
shadow.last_event = _tempo
--> actor targets
local este_alvo = este_jogador.cooldowns_defensive_targets._NameIndexTable [alvo_name]
if (not este_alvo) then
este_alvo = este_jogador.cooldowns_defensive_targets:PegarCombatente (alvo_serial, alvo_name, alvo_flags, true)
else
este_alvo = este_jogador.cooldowns_defensive_targets._ActorTable [este_alvo]
end
este_alvo.total = este_alvo.total + 1
--> actor spells table
local spell = este_jogador.cooldowns_defensive_spell_tables._ActorTable [spellid]
if (not spell) then
spell = este_jogador.cooldowns_defensive_spell_tables:PegaHabilidade (spellid, true, token)
end
return spell:Add (alvo_serial, alvo_name, alvo_flags, who_name, token, "BUFF", "COOLDOWN")
end
--serach key: ~interrupt
function parser:interrupt (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, extraSpellID, extraSpellName, extraSchool)
@@ -1282,16 +1353,18 @@
shadow.dispell = shadow.dispell + 1
--> dispell what
if (not este_jogador.dispell_oque [spellid]) then
este_jogador.dispell_oque [spellid] = 1
else
este_jogador.dispell_oque [spellid] = este_jogador.dispell_oque [spellid] + 1
end
if (not shadow.dispell_oque [spellid]) then
shadow.dispell_oque [spellid] = 1
else
shadow.dispell_oque [spellid] = shadow.dispell_oque [spellid] + 1
if (extraSpellID) then
if (not este_jogador.dispell_oque [extraSpellID]) then
este_jogador.dispell_oque [extraSpellID] = 1
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
@@ -1823,6 +1896,9 @@
-- DEBUG
--local a, b, c, d, e, f, g, h, i, j, k = select (1, ...)
--print (token, who_name, a, b, c, d, e, f, g, h, i, j, k)
--[[
if (who_name == "Ditador") then
if (token:find ("CAST")) then