8.3.0 > 9.0.1

This commit is contained in:
Tercio Jose
2020-10-16 19:51:44 -03:00
parent 530a825358
commit c42a35657d
223 changed files with 93840 additions and 94757 deletions
+110 -87
View File
@@ -122,6 +122,7 @@
[216890] = true, --warrior spell reflection (pvp talent)
[213915] = true, --warrior mass spell reflection
[212295] = true, --warlock nether ward
--check pally legendary
}
local reflection_dispelid = {
--> some dispels also reflect, and we can track them
@@ -222,8 +223,7 @@
[32175] = 17364, -- shaman Stormstrike (from Turkar on github)
[32176] = 17364, -- shaman Stormstrike
[271685] = 281686, --Heed my Call
[45284] = 188196, --shaman lightining bolt overloaded
}
@@ -553,75 +553,9 @@
end
--rules of specific encounters
if (_current_encounter_id == 2273) then --Uu'nat --REMOVE ON 9.0 LAUNCH
if (spellname == SPELLANAME_STORM_OF_ANNIHILATION or spellid == 284601) then
--return --this is parsed as friendly fire
end
elseif (_current_encounter_id == 2263 or _current_encounter_id == 2284) then --grong --REMOVE ON 9.0 LAUNCH
if (spellid == 285660 or spellname == SPELLNAME_GRONG_CORE or spellid == 286435 or spellname == SPELLNAME_GRONG_CORE_ALLIANCE) then
return
end
elseif (_current_encounter_id == 2272) then --king rastakhan --REMOVE ON 9.0 LAUNCH
if (alvo_serial) then
local npcid = _select (6, _strsplit ("-", alvo_serial))
if (npcid == "145644") then --Bwonsamdi
--Bwonsamdi has two buffs: unliving and aura of death, checking the two first buff indexes
local hasUnlivingBuff1 = _UnitBuff ("boss2", 1)
local hasUnlivingBuff2 = _UnitBuff ("boss2", 2)
if (hasUnlivingBuff1 == SPELLNAME_UNLIVING or hasUnlivingBuff2 == SPELLNAME_UNLIVING) then
--> ignore the damage while Bwonsamdi is immune
return
end
end
end
elseif (_current_encounter_id == 2087) then --Yazma - Atal'Dazar --REMOVE ON 9.0 LAUNCH
--rename the add created by the soulrend ability
if (alvo_serial) then
local npcid = _select (6, _strsplit ("-", alvo_serial))
if (npcid == "125828") then --soulrend add
alvo_name = "Soulrend Add"
end
end
if (who_serial) then --which exp was this?
local npcid = _select (6, _strsplit ("-", who_serial))
if (npcid == "125828") then --soulrend add
who_name = "Soulrend Add"
end
end
elseif (_current_encounter_id == 2122 or _current_encounter_id == 2135) then --g'huun and mythrax --REMOVE ON 9.0 LAUNCH
--if (alvo_serial:match ("^Creature%-0%-%d+%-%d+%-%d+%-103679%-%w+$")) then --soul effigy (warlock) --50% more slow than the method below
--check if the target is the amorphous cyst
--for some reason, mythrax fights has some sort of damage on amorphous cyst as well, dunno why
if (alvo_serial) then
local npcid = _select (6, _strsplit ("-", alvo_serial)) -- cost 3 / 1000000
if (npcid) then
if (ignored_npc_ids [npcid]) then
--print ("IGNORED:", alvo_name, npcid)
return
end
if (_track_ghuun_bloodshield and npcid == "132998") then
local hasBloodShield = _UnitBuff ("boss1", 1)
if (not hasBloodShield or hasBloodShield ~= SPELLNAME_BLOODSHIELD) then
--print ("Details Shuting down damage filter on ghuun", hasBloodShield)
_track_ghuun_bloodshield = nil
else
--print ("Details Ghuun Has Blood Shield Damage Ignored", hasBloodShield)
return
end
end
end
end
end
--> if the parser are allowed to replace spellIDs
if (is_using_spellId_override) then
spellid = override_spellId [spellid] or spellid
@@ -765,6 +699,12 @@
--> um pet
who_name = who_name .. " <" .. meu_dono.nome .. ">"
end
if (not este_jogador) then
print ("no ente_jogador")
print (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spelltype, amount)
return
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]
@@ -3482,12 +3422,38 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
if (not este_jogador) then
este_jogador = _current_damage_container:PegarCombatente (who_serial, who_name, who_flags, true)
end
--> actor spells table
local spell = este_jogador.spells._ActorTable [spellid]
if (not spell) then
spell = este_jogador.spells:PegaHabilidade (spellid, true, token)
--[[
Message: Interface\AddOns\Details\core\parser.lua:3418: attempt to index local 'este_jogador' (a nil value)
Time: Sun Aug 30 15:43:58 2020
Count: 39
Stack: Interface\AddOns\Details\core\parser.lua:3418: attempt to index local 'este_jogador' (a nil value)
[string "@Interface\AddOns\Details\core\parser.lua"]:3418: in function <Interface\AddOns\Details\core\parser.lua:3335>
[string "=(tail call)"]: ?
Locals: self = nil
token = "SPELL_CAST_SUCCESS"
time = 1598813037.261000
who_serial = "Vehicle-0-2085-2296-4034-168406-000B4BF36E"
who_name = "Waltzing Venthyr"
who_flags = 2632
alvo_serial = ""
alvo_name = nil
alvo_flags = -2147483648
alvo_flags2 = -2147483648
spellid = 335773
spellname = "Waltzing Venthyr"
spelltype = 1
--]]
if (este_jogador) then
--> actor spells table
local spell = este_jogador.spells._ActorTable [spellid] --line where the actor was nil
if (not spell) then
spell = este_jogador.spells:PegaHabilidade (spellid, true, token)
end
spell.successful_casted = spell.successful_casted + 1
end
spell.successful_casted = spell.successful_casted + 1
end
return
end
@@ -3790,11 +3756,59 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
------------------------------------------------------------------------------------------------
--> build dead
--print("dead", alvo_flags, _bit_band (alvo_flags, 0x00000008) ~= 0, _current_encounter_id)
if (_in_combat and alvo_flags and _bit_band (alvo_flags, 0x00000008) ~= 0) then -- and _in_combat --byte 1 = 8 (AFFILIATION_OUTSIDER)
--> outsider death while in combat
--rules for specific encounters
if (_current_encounter_id == 2412) then --> The Council of Blood
if (not Details.exp90temp.delete_damage_TCOB) then
return
end
--what boss died
local bossDeadNpcId = Details:GetNpcIdFromGuid(alvo_serial)
print("Details: boss died:", bossDeadNpcId, alvo_name, alvo_serial)
if (bossDeadNpcId ~= 166969 and bossDeadNpcId ~= 166970 and bossDeadNpcId ~= 166971) then
return
end
--[[
local unitId_BaronessFrieda = alvo_serial:match("166969%-%w+$")
local unitId_LordStavros = alvo_serial:match("166970%-%w+$")
local unitId_CastellanNiklaus = alvo_serial:match("166971%-%w+$")
--]]
if (bossDeadNpcId) then
--iterate among boss targets
for i = 1, 5 do
local unitId = "boss" .. i
if (_G.UnitExists(unitId)) then
local bossHealth = _G.UnitHealth(unitId)
local bossName = _G.UnitName(unitId)
local bossSerial = _G.UnitGUID(unitId)
if (bossHealth and bossHealth > 100000) then
if (bossSerial) then
local bossNpcId = Details:GetNpcIdFromGuid(bossSerial)
if (bossNpcId and bossNpcId ~= bossDeadNpcId) then
print("Details: deleting boss:", bossName)
--remove the damage done
local currentCombat = Details:GetCurrentCombat()
currentCombat:DeleteActor(DETAILS_ATTRIBUTE_DAMAGE, bossName, false)
end
end
end
end
end
end
end
--> frags
if (_detalhes.only_pvp_frags and (_bit_band (alvo_flags, 0x00000400) == 0 or (_bit_band (alvo_flags, 0x00000040) == 0 and _bit_band (alvo_flags, 0x00000020) == 0))) then --byte 2 = 4 (HOSTILE) byte 3 = 4 (OBJECT_TYPE_PLAYER)
@@ -4400,8 +4414,6 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_detalhes.time_type = _detalhes.time_type_original
_detalhes:CheckChatOnZoneChange (zoneType)
if (_detalhes.debug) then
_detalhes:Msg ("(debug) zone change:", _detalhes.zone_name, "is a", _detalhes.zone_type, "zone.")
end
@@ -4642,7 +4654,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
if ((_detalhes.tabela_vigente:GetEndTime() or 0) + 2 >= _detalhes.encounter_table ["end"]) then
_detalhes.tabela_vigente:SetStartTime (_detalhes.encounter_table ["start"])
_detalhes.tabela_vigente:SetEndTime (_detalhes.encounter_table ["end"])
_detalhes:AtualizaGumpPrincipal (-1, true)
_detalhes:RefreshMainWindow (-1, true)
end
end
@@ -4743,14 +4755,23 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
--store a boss encounter when out of combat since it might need to load the storage
if (_detalhes.schedule_store_boss_encounter) then
if (not _detalhes.logoff_saving_data) then
--_detalhes.StoreEncounter()
local successful, errortext = pcall (_detalhes.StoreEncounter)
local successful, errortext = pcall (Details.Database.StoreEncounter)
if (not successful) then
_detalhes:Msg ("error occurred on StoreEncounter():", errortext)
_detalhes:Msg ("error occurred on Details.Database.StoreEncounter():", errortext)
end
end
_detalhes.schedule_store_boss_encounter = nil
end
if (Details.schedule_store_boss_encounter_wipe) then
if (not _detalhes.logoff_saving_data) then
local successful, errortext = pcall (Details.Database.StoreWipe)
if (not successful) then
_detalhes:Msg ("error occurred on Details.Database.StoreWipe():", errortext)
end
end
Details.schedule_store_boss_encounter_wipe = nil
end
--when a large amount of data has been removed and the player is in combat, schedule to run the hard garbage collector (the blizzard one, not the details! internal)
if (_detalhes.schedule_hard_garbage_collect) then
@@ -5167,7 +5188,9 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_detalhes:LoadConfig()
_detalhes:UpdateParserGears()
--_detalhes:Start()
--load auto run code
Details:StartAutoRun()
end
function _detalhes.parser_functions:ADDON_LOADED (...)
@@ -5178,9 +5201,9 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
end
local playerLogin = CreateFrame ("frame")
playerLogin:RegisterEvent ("PLAYER_LOGIN")
playerLogin:SetScript ("OnEvent", function()
Details:Start()
playerLogin:RegisterEvent("PLAYER_LOGIN")
playerLogin:SetScript("OnEvent", function()
Details:StartMeUp()
end)
function _detalhes.parser_functions:PET_BATTLE_OPENING_START (...)
@@ -5296,7 +5319,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
--> end
-- ~parserstart ~startparser
-- ~parserstart ~startparser ~cleu
function _detalhes.OnParserEvent()
-- 8.0 changed