From 8736751d59104b8763189ac1f84e5a03aed516a0 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Thu, 11 Mar 2021 18:54:48 -0300 Subject: [PATCH] Fixed Spirit Shell overhealing --- core/parser.lua | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/core/parser.lua b/core/parser.lua index c57c1db4..7ffdad73 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -1608,19 +1608,6 @@ --> HEALING serach key: ~healing | ----------------------------------------------------------------------------------------------------------------------------------------- - - local gotit = { - [140468]=true, --Flameglow Mage - [122470]=true, --touch of karma Monk - [114556]=true, --purgatory DK - [152280]=true, --defile DK - [20711]=true, --spirit of redeption priest - [155783]=true, --Primal Tenacity Druid - [135597]=true, --Tooth and Claw Druid - [152261]=true, --Holy Shield Paladin - [158708]=true, --Earthen Barrier boss? - } - local ignored_shields = { [142862] = true, -- Ancient Barrier (Malkorok) [114556] = true, -- Purgatory (DK) @@ -1629,7 +1616,7 @@ [184553] = true, --Soul Capacitor } - local ignored_overheal = { + local ignored_overheal = { --during refresh, some shield does not replace the old value for the new one [47753] = true, -- Divine Aegis [86273] = true, -- Illuminated Healing [114908] = true, --Spirit Shell @@ -1716,7 +1703,6 @@ end function parser:heal_absorb (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spellschool, owner_serial, owner_name, owner_flags, owner_flags2, shieldid, shieldname, shieldtype, amount) - --[[statistics]]-- _detalhes.statistics.absorbs_calls = _detalhes.statistics.absorbs_calls + 1 if (_type(shieldname) == "boolean") then @@ -1741,7 +1727,6 @@ if (shields_by_spell) then local owner_shield = shields_by_spell [owner_name] if (owner_shield) then - --print ("amt: ", owner_shield, owner_shield - amount, amount) shields_by_spell [owner_name] = owner_shield - amount end end @@ -2166,7 +2151,7 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED else escudo [alvo_name] [spellid] [who_name] = amount end - end + end ------------------------------------------------------------------------------------------------ --> recording debuffs applied by player @@ -2184,7 +2169,7 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED --3/11 14:08:35.690 SPELL_AURA_APPLIED,Player-3676-06D63197,"Clutchdaily-Area52",0x512,0x0,Creature-0-4220-2287-20503-174175-0000CA4BDB,"Loyal Stoneborn",0xa48,0x0,342171,"Loyal Stoneborn",0x20,DEBUFF --tag the target of this spell as a pet of caster _detalhes.tabela_pets:Adicionar(alvo_serial, alvo_name, alvo_flags, who_serial, who_name, 0x00000417) - print("D! player", who_name, "tamed a gargoyle in HOA.") + --print("D! player", who_name, "tamed a gargoyle in HOA.") end ------------------------------------------------------------------------------------------------ @@ -2399,9 +2384,7 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED ------------------------------------------------------------------------------------------------ --> healing done (shields) if (absorb_spell_list [spellid] and _recording_healing and amount) then - if (escudo [alvo_name] and escudo [alvo_name][spellid] and escudo [alvo_name][spellid][who_name]) then - if (ignored_overheal [spellid]) then escudo [alvo_name][spellid][who_name] = amount -- refresh j� vem o valor atualizado return @@ -2551,16 +2534,19 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED ------------------------------------------------------------------------------------------------ --> healing done (shields) if (absorb_spell_list [spellid] and _recording_healing) then + local spellName = GetSpellInfo(spellid) + if (escudo [alvo_name] and escudo [alvo_name][spellid] and escudo [alvo_name][spellid][who_name]) then if (amount) then -- o amount � o que sobrou do escudo - local overheal = escudo [alvo_name][spellid][who_name] + --local overheal = escudo [alvo_name][spellid][who_name] --usando o 'amount' passado pela função + --overheal não esta dando refresh quando um valor é adicionado ao escudo escudo [alvo_name][spellid][who_name] = 0 --> can't use monk guard since its overheal is computed inside the unbuff - if (overheal and overheal > 0 and spellid ~= SPELLID_MONK_GUARD) then + if (amount > 0 and spellid ~= SPELLID_MONK_GUARD) then --> removing the nil at the end before true for is_shield, I have no documentation change about it, not sure the reason why it was addded - return parser:heal (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, nil, 0, _math_ceil (overheal), 0, 0, true) --0, 0, nil, true + return parser:heal (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, nil, 0, _math_ceil (amount), 0, 0, true) --0, 0, nil, true else return end