1830359943
Release Documentation: - Classic now uses the same combat log reader as retail (Flamanis). - Merged Rage of Fyr'alath spells (equara). - Added Rogue Ambushes to merged spells (WillowGryph). - The Remove Common Segments option now also removes segments trash between raid bosses. - Fixed an issue where auras applied before combat start, such as Power Infusion and Prescience, which are counted towards the target, were not being accounted for. - Added to Combat Class: classCombat:GetRunTimeNoDefault(). This returns the run time of the Mythic+ if available, nil otherwise. Technical Notes: - Classic now uses retail parser. - Combat class now have the member: classCombat:GetRunTimeNoDefault(); Returns the run time of a M+ (after completed). - The Utility class's buff scan at the start of combat has been improved, and the code has been cleaned. Also, the scan runs now on the next frame after combat start. - Augmentation Evoker won't track auras from the combat start aura scan, if the player isn't in combat (example: a player in the group enters in combat). - Remove tier bonus for Augmentation Evoker Ebon Might damage prediction and nerfed Close as Cluthmates to 10%. - Segments Container's ResetDataByCombatType() now supports multiple combat types per classification. - Code cleanup on Segments menu code to use the new Mythic+ functions added to Combat class. - Mythic+ start detection produced errors if a WORLD_STATE_TIMER_START event triggered before the CHALLENGE_MODE_START event. - Mythic+ finish code was bugging when 'time' returned by C_ChallengeMode.GetCompletionInfo() wasn't being checked again nil value. - Rogue's Ambush ability and Rage of Fyr'alath spellIds added to override_spellId within the parser. - Details! Framework updated. - Open Raid Library updated.
202 lines
9.8 KiB
Lua
202 lines
9.8 KiB
Lua
|
|
local addonName, Details222 = ...
|
|
local Details = Details
|
|
local _
|
|
|
|
local UnitExists = UnitExists
|
|
local UnitIsUnit = UnitIsUnit
|
|
|
|
local augmentationFunctions = Details222.SpecHelpers[1473]
|
|
local augmentationCache = Details222.SpecHelpers[1473].augmentation_cache
|
|
|
|
local playerRealmName = GetRealmName()
|
|
|
|
|
|
|
|
|
|
|
|
function augmentationFunctions.BuffIn(token, time, sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags, targetFlags2, spellId, spellName, spellschool, auraType, amount)
|
|
if (not UnitAffectingCombat("player")) then --need documentation
|
|
return
|
|
end
|
|
|
|
if (spellId == 395152) then --ebom might on third parties
|
|
local auraName, texture, count, auraType, duration, expirationTime, sourceUnit, isStealable, nameplateShowPersonal, spellId, canApplyAura, isBossAura, isFromPlayerOrPlayerPet, nameplateShowAll, timeMod, v1, v2, v3, v4, v5 = Details:FindBuffCastedByUnitName(targetName, spellId, sourceName)
|
|
local attributeGained = v2
|
|
|
|
if (type(attributeGained) == "number") then
|
|
augmentationCache.ebon_might[targetSerial] = augmentationCache.ebon_might[targetSerial] or {}
|
|
local evokerInfo = {sourceSerial, sourceName, sourceFlags, attributeGained}
|
|
table.insert(augmentationCache.ebon_might[targetSerial], evokerInfo)
|
|
--print("ebom might added, cache:", Details.augmentation_cache, #augmentationCache.ebon_might[targetSerial])
|
|
end
|
|
|
|
elseif (spellId == 413984) then --ss
|
|
if (UnitExists(targetName) and targetName ~= Details.playername) then
|
|
local auraName, texture, count, auraType, duration, expirationTime, sourceUnit, isStealable, nameplateShowPersonal, spellId, canApplyAura, isBossAura, isFromPlayerOrPlayerPet, nameplateShowAll, timeMod, v1, v2, v3, v4, v5 = Details:FindBuffCastedByUnitName(targetName, spellId, sourceName)
|
|
local versaGained = v1
|
|
if (type(versaGained) == "number") then
|
|
augmentationCache.ss[targetSerial] = augmentationCache.ss[targetSerial] or {}
|
|
local ssInfo = {sourceSerial, sourceName, sourceFlags, versaGained}
|
|
table.insert(augmentationCache.ss[targetSerial], ssInfo)
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 410089) then --prescience
|
|
augmentationCache.prescience[targetSerial] = augmentationCache.prescience[targetSerial] or {}
|
|
local evokerInfo = {sourceSerial, sourceName, sourceFlags, amount}
|
|
table.insert(augmentationCache.prescience[targetSerial], evokerInfo)
|
|
|
|
elseif (spellId == 409560) then --eons breath
|
|
local unitIDAffected = Details:FindUnitIDByUnitSerial(targetSerial)
|
|
if (unitIDAffected) then
|
|
local duration, expirationTime = Details:FindDebuffDuration(unitIDAffected, spellId, Details:Ambiguate(sourceName))
|
|
if (duration) then
|
|
local breathTargets = augmentationCache.breath_targets[targetSerial]
|
|
if (not breathTargets) then
|
|
augmentationCache.breath_targets[targetSerial] = {}
|
|
breathTargets = augmentationCache.breath_targets[targetSerial]
|
|
end
|
|
|
|
--evoker serial, evoker name, evoker flags, target unitID, unixtime, duration, expirationTime (GetTime + duration)
|
|
local eonsBreathInfo = {sourceSerial, sourceName, sourceFlags, unitIDAffected, time, duration, expirationTime}
|
|
table.insert(breathTargets, eonsBreathInfo)
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 360827) then --tank shield
|
|
augmentationCache.shield[targetSerial] = augmentationCache.shield[targetSerial] or {}
|
|
local evokerInfo = {sourceSerial, sourceName, sourceFlags, amount}
|
|
table.insert(augmentationCache.shield[targetSerial], evokerInfo)
|
|
|
|
elseif (spellId == 410263) then --inferno bless
|
|
augmentationCache.infernobless[targetSerial] = augmentationCache.infernobless[targetSerial] or {}
|
|
local evokerInfo = {sourceSerial, sourceName, sourceFlags}
|
|
table.insert(augmentationCache.infernobless[targetSerial], evokerInfo)
|
|
end
|
|
end
|
|
|
|
function augmentationFunctions.BuffRefresh(token, time, sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags, targetFlags2, spellId, spellName, spellschool, tipo, amount)
|
|
if (spellId == 395152) then
|
|
local bFound = false
|
|
augmentationCache.ebon_might[targetSerial] = augmentationCache.ebon_might[targetSerial] or {}
|
|
|
|
for index, evokerInfo in ipairs(augmentationCache.ebon_might[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
local auraName, texture, count, auraType, duration, expirationTime, sourceUnit, isStealable, nameplateShowPersonal, auraSpellId, canApplyAura, isBossAura, isFromPlayerOrPlayerPet, nameplateShowAll, timeMod, v1, v2, v3, v4, v5 = Details:FindBuffCastedByUnitName(targetName, spellId, sourceName)
|
|
local attributeGained = v2
|
|
|
|
if (type(attributeGained) == "number") then
|
|
evokerInfo[4] = attributeGained
|
|
bFound = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
if (not bFound) then
|
|
local auraName, texture, count, auraType, duration, expirationTime, sourceUnit, isStealable, nameplateShowPersonal, auraSpellId, canApplyAura, isBossAura, isFromPlayerOrPlayerPet, nameplateShowAll, timeMod, v1, v2, v3, v4, v5 = Details:FindBuffCastedByUnitName(targetName, spellId, sourceName)
|
|
local attributeGained = v2
|
|
if (type(attributeGained) == "number") then
|
|
table.insert(augmentationCache.ebon_might[targetSerial], {sourceSerial, sourceName, sourceFlags, attributeGained})
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 413984) then --ss
|
|
if (UnitExists(targetName) and targetName ~= Details.playername) then
|
|
local auraName, texture, count, auraType, duration, expirationTime, sourceUnit, isStealable, nameplateShowPersonal, spellId, canApplyAura, isBossAura, isFromPlayerOrPlayerPet, nameplateShowAll, timeMod, v1, v2, v3, v4, v5 = Details:FindBuffCastedByUnitName (targetName, spellId, sourceName)
|
|
local versaGained = v1
|
|
|
|
if (type(versaGained) == "number") then
|
|
local bFound = false
|
|
augmentationCache.ss[targetSerial] = augmentationCache.ss[targetSerial] or {}
|
|
|
|
for index, evokerInfo in ipairs(augmentationCache.ss[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
evokerInfo[4] = versaGained
|
|
bFound = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if (not bFound) then
|
|
table.insert(augmentationCache.ss[targetSerial], {sourceSerial, sourceName, sourceFlags, versaGained})
|
|
end
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 410089) then
|
|
local bFound = false
|
|
augmentationCache.prescience[targetSerial] = augmentationCache.prescience[targetSerial] or {}
|
|
|
|
for index, evokerInfo in ipairs(augmentationCache.prescience[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
evokerInfo[4] = amount
|
|
bFound = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if (not bFound) then
|
|
table.insert(augmentationCache.prescience[targetSerial], {sourceSerial, sourceName, sourceFlags, amount})
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
function augmentationFunctions.BuffOut(token, time, sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags, targetFlags2, spellId, spellName, spellSchool, tipo, amount)
|
|
if (spellId == 395152) then
|
|
if (augmentationCache.ebon_might[targetSerial]) then
|
|
--print("tinha buff", targetName, targetSerial)
|
|
for index, evokerInfo in ipairs(augmentationCache.ebon_might[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
--print("ebom might finished, removing from cache:", Details.augmentation_cache, #augmentationCache.ebon_might[targetSerial])
|
|
table.remove(augmentationCache.ebon_might[targetSerial], index)
|
|
--print("ebom might finished, removing from cache:", Details.augmentation_cache, #augmentationCache.ebon_might[targetSerial])
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 413984) then
|
|
if (augmentationCache.ss[targetSerial]) then
|
|
for index, evokerInfo in ipairs(augmentationCache.ss[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
table.remove(augmentationCache.ss[targetSerial], index)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 410089) then
|
|
if (augmentationCache.prescience[targetSerial]) then
|
|
for index, evokerInfo in ipairs(augmentationCache.prescience[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
table.remove(augmentationCache.prescience[targetSerial], index)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 360827) then
|
|
if (augmentationCache.shield[targetSerial]) then
|
|
for index, evokerInfo in ipairs(augmentationCache.shield[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
table.remove(augmentationCache.shield[targetSerial], index)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
elseif (spellId == 410263) then
|
|
if (augmentationCache.infernobless[targetSerial]) then
|
|
for index, evokerInfo in ipairs(augmentationCache.infernobless[targetSerial]) do
|
|
if (evokerInfo[1] == sourceSerial) then
|
|
table.remove(augmentationCache.infernobless[targetSerial], index)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end |