Separating DK army and apoc pets

This commit is contained in:
Tercio Jose
2021-08-30 19:43:41 -03:00
parent 70483cd194
commit 668f3e4559
6 changed files with 264 additions and 13 deletions
+137
View File
@@ -0,0 +1,137 @@
## Interface: 20501
## Title: Details! Damage Meter
## Notes: Essential tool to impress that chick in your raid.
## SavedVariables: _detalhes_global
## SavedVariablesPerCharacter: _detalhes_database
## OptionalDeps: Ace3, LibSharedMedia-3.0, LibWindow-1.1, LibDBIcon-1.0, NickTag-1.0, LibDataBroker-1.1, LibItemUpgradeInfo-1.0, LibGroupInSpecT-1.1, LibCompress, LibGraph-2.0
#@no-lib-strip@
Libs\libs.xml
#@end-no-lib-strip@
locales\Details-enUS.lua
locales\Details-deDE.lua
locales\Details-esES.lua
locales\Details-esMX.lua
locales\Details-frFR.lua
locales\Details-itIT.lua
locales\Details-koKR.lua
locales\Details-ptBR.lua
locales\Details-ruRU.lua
locales\Details-zhCN.lua
locales\Details-zhTW.lua
boot.lua
indent.lua
core\util.lua
API.lua
functions\profiles.lua
functions\hooks.lua
functions\bossmods.lua
functions\coach.lua
functions\skins.lua
functions\boss.lua
functions\spells.lua
functions\events.lua
functions\classes.lua
functions\buff.lua
functions\spellcache.lua
functions\attributes.lua
functions\savedata.lua
functions\slash.lua
functions\playerclass.lua
functions\timedata.lua
functions\report.lua
functions\rowanimation.lua
functions\raidinfo.lua
functions\dungeon.lua
functions\pack.lua
functions\mythicdungeon.lua
functions\immersion.lua
functions\schedules.lua
functions\autorun.lua
functions\deathrecap.lua
functions\plater.lua
functions\deathmenu.lua
functions\macros.lua
functions\testbars.lua
core\timemachine.lua
frames\anime.lua
frames\anime.xml
frames\fw_mods.lua
frames\toolbar_button.xml
frames\window_copy.lua
frames\window_options2.lua
frames\window_options2_sections.lua
frames\window_api.lua
frames\window_cdtracker.lua
frames\window_playerbreakdown.lua
frames\window_playerbreakdown_list.lua
frames\window_report.lua
frames\window_main.lua
frames\window_custom.lua
frames\window_welcome.lua
frames\window_news.lua
frames\window_wa.lua
frames\window_forge.lua
frames\window_switch.lua
frames\window_scrolldamage.lua
frames\window_dump.lua
frames\window_eventtracker.lua
frames\window_currentdps.lua
frames\window_benchmark.lua
frames\window_runcode.lua
frames\window_plater.lua
frames\window_macros.lua
frames\window_profiler.lua
frames\window_rowtexteditor.lua
frames\window_brokertexteditor.lua
frames\window_bookmark.lua
frames\window_classcolor.lua
frames\window_statistics.lua
classes\class_error.lua
classes\class_combat.lua
classes\class_damage.lua
classes\class_spelldamage.lua
classes\class_heal.lua
classes\class_spellhealing.lua
classes\class_resources.lua
classes\class_spellresources.lua
classes\class_utility.lua
classes\class_spellutility.lua
classes\include_instance.lua
classes\class_instance.lua
classes\class_custom.lua
classes\custom_damagedone.lua
classes\custom_healingdone.lua
core\control.lua
classes\container_actors.lua
classes\container_spells.lua
classes\container_segments.lua
classes\container_pets.lua
core\plugins.lua
core\plugins_toolbar.lua
core\plugins_statusbar.lua
core\plugins_raid.lua
core\plugins_solo.lua
core\gears.lua
core\windows.lua
core\meta.lua
core\network.lua
core\parser.lua
#core\parser_timewalk.lua
functions\loaddata.lua
startup.lua
functions\api2.lua
+61 -1
View File
@@ -1,6 +1,6 @@
local dversion = 262
local dversion = 269
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary (major, minor)
@@ -431,6 +431,28 @@ function DF.table.dump (t, s, deep)
return s
end
--grab a text and split it into lines adding each line to a indexed table
function DF:SplitTextInLines(text)
local lines = {}
local position = 1
local startScope, endScope = text:find("\n", position, true)
while (startScope) do
if (startScope ~= 1) then
tinsert(lines, text:sub(position, startScope-1))
end
position = endScope + 1
startScope, endScope = text:find("\n", position, true)
end
if (position <= #text) then
tinsert(lines, text:sub(position))
end
return lines
end
DF.www_icons = {
texture = "feedback_sites",
wowi = {0, 0.7890625, 0, 37/128},
@@ -590,6 +612,44 @@ function DF:AddClassColorToText (text, class)
return text
end
function DF:AddClassIconToText(text, playerName, class, useSpec, iconSize)
local size = iconSize or 16
local iconToUse, spec
if (useSpec) then
if (Details) then
local guid = UnitGUID(playerName)
if (guid) then
local spec = Details.cached_specs[guid]
if (spec) then
spec = spec
end
end
end
end
if (spec) then --if spec is valid, the user has Details! installed
local specString = ""
local L, R, T, B = unpack (Details.class_specs_coords[spec])
if (L) then
specString = "|TInterface\\AddOns\\Details\\images\\spec_icons_normal:" .. size .. ":" .. size .. ":0:0:512:512:" .. (L * 512) .. ":" .. (R * 512) .. ":" .. (T * 512) .. ":" .. (B * 512) .. "|t"
return specString .. " " .. text
end
end
if (class) then
local classString = ""
local L, R, T, B = unpack (Details.class_coords[class])
if (L) then
local imageSize = 128
classString = "|TInterface\\AddOns\\Details\\images\\classes_small:" .. size .. ":" .. size .. ":0:0:" .. imageSize .. ":" .. imageSize .. ":" .. (L * imageSize) .. ":" .. (R * imageSize) .. ":" .. (T * imageSize) .. ":" .. (B * imageSize) .. "|t"
return classString .. " " .. text
end
end
return text
end
function DF:GetFontSize (fontString)
local _, size = fontString:GetFont()
return size
+25 -6
View File
@@ -1574,7 +1574,7 @@ function DF:IconPick (callback, close_when_select, param1, param2)
DF.IconPickFrame.preview:Hide()
--serach
DF.IconPickFrame.searchLabel = DF:NewLabel (DF.IconPickFrame, nil, "$parentSearchBoxLabel", nil, "search:", font, size, color)
DF.IconPickFrame.searchLabel = DF:NewLabel (DF.IconPickFrame, nil, "$parentSearchBoxLabel", nil, "search:")
DF.IconPickFrame.searchLabel:SetPoint ("topleft", DF.IconPickFrame, "topleft", 12, -36)
DF.IconPickFrame.searchLabel:SetTemplate (DF:GetTemplate ("font", "ORANGE_FONT_TEMPLATE"))
@@ -8128,6 +8128,9 @@ DF.CastFrameFunctions = {
if (self.casting) then
local name, text, texture, startTime = UnitCastingInfo (self.unit)
if (name) then
--[[if not self.spellStartTime then
self:UpdateCastingInfo(self.unit)
end]]--
self.value = GetTime() - self.spellStartTime
end
@@ -8136,6 +8139,9 @@ DF.CastFrameFunctions = {
elseif (self.channeling) then
local name, text, texture, endTime = UnitChannelInfo (self.unit)
if (name) then
--[[if not self.spellEndTime then
self:UpdateChannelInfo(self.unit)
end]]--
self.value = self.spellEndTime - GetTime()
end
@@ -8329,10 +8335,12 @@ DF.CastFrameFunctions = {
if (isChannel) then
self.channeling = true
self:UpdateChannelInfo(unit)
return self.unit == arg1 and "UNIT_SPELLCAST_CHANNEL_START"
elseif (isRegularCast) then
self.casting = true
self:UpdateCastingInfo(unit)
return self.unit == arg1 and "UNIT_SPELLCAST_START"
else
@@ -8346,8 +8354,7 @@ DF.CastFrameFunctions = {
end
end,
UNIT_SPELLCAST_START = function (self, unit)
UpdateCastingInfo = function (self, unit)
local name, text, texture, startTime, endTime, isTradeSkill, castID, notInterruptible, spellID
if IS_WOW_PROJECT_MAINLINE then
name, text, texture, startTime, endTime, isTradeSkill, castID, notInterruptible, spellID = UnitCastingInfo (unit)
@@ -8406,10 +8413,16 @@ DF.CastFrameFunctions = {
--> update the interrupt cast border
self:UpdateInterruptState()
end,
UNIT_SPELLCAST_START = function (self, unit)
self:UpdateCastingInfo(unit)
self:RunHooksForWidget ("OnCastStart", self, self.unit, "UNIT_SPELLCAST_START")
end,
UNIT_SPELLCAST_CHANNEL_START = function (self, unit, ...)
UpdateChannelInfo = function (self, unit, ...)
local name, text, texture, startTime, endTime, isTradeSkill, notInterruptible, spellID
if IS_WOW_PROJECT_MAINLINE then
name, text, texture, startTime, endTime, isTradeSkill, notInterruptible, spellID = UnitChannelInfo (unit)
@@ -8467,6 +8480,12 @@ DF.CastFrameFunctions = {
--> update the interrupt cast border
self:UpdateInterruptState()
end,
UNIT_SPELLCAST_CHANNEL_START = function (self, unit, ...)
self:UpdateChannelInfo(unit, ...)
self:RunHooksForWidget ("OnCastStart", self, self.unit, "UNIT_SPELLCAST_CHANNEL_START")
end,
@@ -8537,7 +8556,7 @@ DF.CastFrameFunctions = {
UNIT_SPELLCAST_FAILED = function (self, unit, ...)
local unitID, castID, spellID = ...
if (self.casting and castID == self.castID and not self.fadeOut) then
if ((self.casting or self.channeling) and castID == self.castID and not self.fadeOut) then
self.casting = nil
self.channeling = nil
self.failed = true
@@ -8558,7 +8577,7 @@ DF.CastFrameFunctions = {
UNIT_SPELLCAST_INTERRUPTED = function (self, unit, ...)
local unitID, castID, spellID = ...
if (self.casting and castID == self.castID and not self.fadeOut) then
if ((self.casting or self.channeling) and castID == self.castID and not self.fadeOut) then
self.casting = nil
self.channeling = nil
self.interrupted = true
+4
View File
@@ -1298,6 +1298,10 @@ DF.FoodIDs = {
[327707] = 2, --stamina +20
[327708] = 2, --intellect +20
[327709] = 2, --agility +20
[327704] = 2, --intellect +18
[327701] = 2, --strength +18
[327705] = 2, --agility +18
}
DF.PotionIDs = {
+4 -4
View File
@@ -6,9 +6,9 @@
local version, build, date, tocversion = GetBuildInfo()
_detalhes.build_counter = 8782
_detalhes.alpha_build_counter = 8782 --if this is higher than the regular counter, use it instead
_detalhes.bcc_counter = 26
_detalhes.build_counter = 8783
_detalhes.alpha_build_counter = 8783 --if this is higher than the regular counter, use it instead
_detalhes.bcc_counter = 27
_detalhes.dont_open_news = true
_detalhes.game_version = version
_detalhes.userversion = version .. _detalhes.build_counter
@@ -33,7 +33,7 @@ do
local Loc = _G.LibStub("AceLocale-3.0"):GetLocale( "Details" )
local news = {
{"v9.1.0.8782.144", "August 11th, 2021"},
{"v9.1.0.8782.145", "August 11th, 2021"},
"Clicking on the minimap while the options panel is open will close it.",
"Fixed Raid Check plugin position when the window is anchored at the top of the monitor.",
"Shadow priest Void Erruption spells got merged into only one.",
+33 -2
View File
@@ -144,6 +144,12 @@
--> anywhere from a few hundred thousand damage to over 50 millons
--> filtering it the best course of action as nobody should care about this damage
}
--army od the dead cache
local dk_pets_cache = {
army = {},
apoc = {},
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> constants
@@ -629,6 +635,7 @@
npcId = _tonumber(_select (6, _strsplit ("-", alvo_serial)) or 0)
npcid_cache[alvo_serial] = npcId
end
if (ignored_npcids[npcId]) then
return
end
@@ -734,8 +741,19 @@
who_name = "Tank Add"
end
if (npcId == 24207) then --army of the dead
--check if this is a army or apoc pet
if (dk_pets_cache.army[who_serial]) then
who_name = who_name .. "A"
else
if (dk_pets_cache.apoc[who_serial]) then
who_name = who_name .. "B"
end
end
end
--> avoid doing spellID checks on each iteration
if (special_damage_spells [spellid]) then
--if (special_damage_spells [spellid]) then --remove this IF due to have hit 60 local variables
--> stagger
if (spellid == SPELLID_MONK_STAGGER) then
return parser:MonkStagger_damage (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overkill, school, resisted, blocked, absorbed, critical, glacing, crushing, isoffhand)
@@ -748,7 +766,7 @@
elseif (spellid == SPELLID_PALADIN_LIGHTMARTYR) then -- or spellid == 183998 < healing part
return parser:LOTM_damage (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overkill, school, resisted, blocked, absorbed, critical, glacing, crushing, isoffhand)
end
end
--end
------------------------------------------------------------------------------------------------
--> check if need start an combat
@@ -1739,6 +1757,14 @@
end
--
--differenciate army and apoc pets for DK
if (spellid == 42651) then --army of the dead
dk_pets_cache.army[alvo_serial] = who_name
elseif (spellid == 42651) then --apoc
dk_pets_cache.apoc[alvo_serial] = who_name
end
--rename monk's "Storm, Earth, and Fire" adds
--desligado pois poderia estar causando problemas
if (npcId == 69792) then
@@ -4883,6 +4909,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_table_wipe (_detalhes.encounter_table)
_table_wipe (bargastBuffs) --remove on 10.0
_table_wipe (necro_cheat_deaths) --remove on 10.0
_table_wipe (dk_pets_cache.army)
_table_wipe (dk_pets_cache.apoc)
--remove on 10.0 spikeball from painsmith
spikeball_damage_cache = {
@@ -5637,6 +5665,9 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_table_wipe (reflection_events)
_table_wipe (reflection_auras)
_table_wipe (reflection_dispels)
_table_wipe (dk_pets_cache.army)
_table_wipe (dk_pets_cache.apoc)
damage_cache = setmetatable ({}, _detalhes.weaktable)
damage_cache_pets = setmetatable ({}, _detalhes.weaktable)