diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index 8b3ccad4..5d42123c 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -74,8 +74,22 @@ function DF.UnitGroupRolesAssigned (unitId) return UnitGroupRolesAssigned (unitId) else --attempt to guess the role by the player spec - - --at the moment just return none + local classLoc, className = UnitClass(unitId) + if (className == "MAGE" or className == "ROGUE" or className == "HUNTER" or className == "WARLOCK") then + return "DAMAGER" + end + + if (Details) then + --attempt to get the role from Details! Damage Meter + local guid = UnitGUID(unitId) + if (guid) then + local role = Details.cached_roles[guid] + if (role) then + return role + end + end + end + return "NONE" end end diff --git a/boot.lua b/boot.lua index 48e89d75..3480b034 100644 --- a/boot.lua +++ b/boot.lua @@ -8,7 +8,7 @@ _detalhes.build_counter = 8516 _detalhes.alpha_build_counter = 8516 --if this is higher than the regular counter, use it instead - _detalhes.bcc_counter = 16 + _detalhes.bcc_counter = 19 _detalhes.dont_open_news = true _detalhes.game_version = version _detalhes.userversion = version .. _detalhes.build_counter @@ -746,6 +746,14 @@ do SharedMedia:Register ("sound", "d_gun2", [[Interface\Addons\Details\sounds\sound_gun3.ogg]]) SharedMedia:Register ("sound", "d_jedi1", [[Interface\Addons\Details\sounds\sound_jedi1.ogg]]) SharedMedia:Register ("sound", "d_whip1", [[Interface\Addons\Details\sounds\sound_whip1.ogg]]) + + SharedMedia:Register ("sound", "Details Threat Warning Volume 1", [[Interface\Addons\Details\sounds\threat_warning_1.ogg]]) + SharedMedia:Register ("sound", "Details Threat Warning Volume 2", [[Interface\Addons\Details\sounds\threat_warning_2.ogg]]) + SharedMedia:Register ("sound", "Details Threat Warning Volume 3", [[Interface\Addons\Details\sounds\threat_warning_3.ogg]]) + SharedMedia:Register ("sound", "Details Threat Warning Volume 4", [[Interface\Addons\Details\sounds\threat_warning_4.ogg]]) + + + --> dump table contents over chat panel function Details.VarDump(t) diff --git a/classes/container_segments.lua b/classes/container_segments.lua index a1246a0f..dc4ba5d3 100644 --- a/classes/container_segments.lua +++ b/classes/container_segments.lua @@ -310,7 +310,6 @@ function historico:adicionar (tabela) end if (_detalhes.trash_auto_remove) then - local _terceiro_combate = self.tabelas[3] if (_terceiro_combate and not _terceiro_combate.is_mythic_dungeon_segment) then @@ -390,7 +389,6 @@ function historico:adicionar (tabela) --> remover _table_remove (self.tabelas, combat_index) _detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED") - end --> chama a fun��o que ir� atualizar as inst�ncias com segmentos no hist�rico diff --git a/core/gears.lua b/core/gears.lua index 6683a6e4..a63bdbb8 100644 --- a/core/gears.lua +++ b/core/gears.lua @@ -2399,3 +2399,350 @@ function Details:DecompressData (data, dataType) end end +--oldschool talent tree +if (DetailsFramework.IsTBCWow()) then + local talentWatchClassic = CreateFrame ("frame") + talentWatchClassic:RegisterEvent("CHARACTER_POINTS_CHANGED") + talentWatchClassic:RegisterEvent("SPELLS_CHANGED") + talentWatchClassic:RegisterEvent("PLAYER_ENTERING_WORLD") + talentWatchClassic:RegisterEvent("GROUP_ROSTER_UPDATE") + + talentWatchClassic.cooldown = 0 + + C_Timer.NewTicker (600, function() + Details:GetOldSchoolTalentInformation() + end) + + talentWatchClassic:SetScript("OnEvent", function(self, event, ...) + if (talentWatchClassic.delayedUpdate and not talentWatchClassic.delayedUpdate._cancelled) then + return + else + talentWatchClassic.delayedUpdate = C_Timer.NewTimer(5, Details.GetOldSchoolTalentInformation) + end + end) + + function Details.GetOldSchoolTalentInformation() + --cancel any schedule + if (talentWatchClassic.delayedUpdate and not talentWatchClassic.delayedUpdate._cancelled) then + talentWatchClassic.delayedUpdate:Cancel() + end + talentWatchClassic.delayedUpdate = nil + + --amount of tabs existing + local numTabs = GetNumTalentTabs() or 3 + + --store the background textures for each tab + local pointsPerSpec = {} + local talentsSelected = {} + + for i = 1, (MAX_TALENT_TABS or 3) do + if (i <= numTabs) then + --tab information + local name, iconTexture, pointsSpent, fileName = GetTalentTabInfo (i) + if (name) then + tinsert (pointsPerSpec, {name, pointsSpent, fileName}) + end + + --talents information + local numTalents = GetNumTalents (i) or 20 + local MAX_NUM_TALENTS = MAX_NUM_TALENTS or 20 + + for talentIndex = 1, MAX_NUM_TALENTS do + if (talentIndex <= numTalents) then + local name, iconTexture, tier, column, rank, maxRank, isExceptional, available = GetTalentInfo (i, talentIndex) + if (name and rank and type (rank) == "number") then + --send the specID instead of the specName + local specID = Details.textureToSpec [fileName] + tinsert (talentsSelected, {iconTexture, rank, tier, column, i, specID, maxRank}) + end + end + end + end + end + + local MIN_SPECS = 4 + + --put the spec with more talent point to the top + table.sort (pointsPerSpec, function (t1, t2) return t1[2] > t2[2] end) + + --get the spec with more points spent + local spec = pointsPerSpec[1] + if (spec and spec[2] >= MIN_SPECS) then + local specTexture = spec[3] + + --add the spec into the spec cache + Details.playerClassicSpec = {} + Details.playerClassicSpec.specs = Details.GetClassicSpecByTalentTexture(specTexture) + Details.playerClassicSpec.talents = talentsSelected + + --cache the player specId + _detalhes.cached_specs [UnitGUID ("player")] = Details.playerClassicSpec.specs + --cache the player talents + _detalhes.cached_talents [UnitGUID ("player")] = talentsSelected + + local role = Details:GetRoleFromSpec(Details.playerClassicSpec.specs, UnitGUID("player")) + + if (Details.playerClassicSpec.specs == 103) then + if (role == "TANK") then + Details.playerClassicSpec.specs = 104 + _detalhes.cached_specs [UnitGUID ("player")] = Details.playerClassicSpec.specs + end + end + + _detalhes.cached_roles[UnitGUID ("player")] = role + + --gear status + local item_amount = 16 + local item_level = 0 + local failed = 0 + + local two_hand = { + ["INVTYPE_2HWEAPON"] = true, + ["INVTYPE_RANGED"] = true, + ["INVTYPE_RANGEDRIGHT"] = true, + } + + for equip_id = 1, 17 do + if (equip_id ~= 4) then --shirt slot, trinkets + local item = GetInventoryItemLink("player", equip_id) + if (item) then + local _, _, itemRarity, iLevel, _, _, _, _, equipSlot = GetItemInfo(item) + if (iLevel) then + if (ItemUpgradeInfo) then + local ilvl = ItemUpgradeInfo:GetUpgradedItemLevel (item) + item_level = item_level + (ilvl or iLevel) + else + item_level = item_level + iLevel + end + + --> 16 = main hand 17 = off hand + --> if using a two-hand, ignore the off hand slot + if (equip_id == 16 and two_hand [equipSlot]) then + item_amount = 15 + break + end + end + else + failed = failed + 1 + if (failed > 2) then + break + end + end + end + end + + local itemLevel = floor(item_level / item_amount) + local dataToShare = {role or "NONE", Details.playerClassicSpec.specs or 0, itemLevel or 0, talentsSelected, UnitGUID("player")} + --local serialized = _detalhes:Serialize(dataToShare) + local compressedData = Details:CompressData(dataToShare, "comm") + + if (IsInRaid()) then + _detalhes:SendRaidData(DETAILS_PREFIX_TBC_DATA, compressedData) + if (_detalhes.debug) then + _detalhes:Msg ("(debug) sent talents data to Raid") + end + + elseif (IsInGroup()) then + _detalhes:SendPartyData(DETAILS_PREFIX_TBC_DATA, compressedData) + if (_detalhes.debug) then + _detalhes:Msg ("(debug) sent talents data to Party") + end + end + end + end + + Details.specToRole = { + --DRUID + [102] = "DAMAGER", --BALANCE + [103] = "DAMAGER", --FERAL DRUID + [105] = "HEALER", --RESTORATION + + --HUNTER + [253] = "DAMAGER", --BM + [254] = "DAMAGER", --MM + [255] = "DAMAGER", --SURVIVOR + + --MAGE + [62] = "DAMAGER", --ARCANE + [64] = "DAMAGER", --FROST + [63] = "DAMAGER", ---FIRE + + --PALADIN + [70] = "DAMAGER", --RET + [65] = "HEALER", --HOLY + [66] = "TANK", --PROT + + --PRIEST + [257] = "HEALER", --HOLY + [256] = "HEALER", --DISC + [258] = "DAMAGER", --SHADOW + + --ROGUE + [259] = "DAMAGER", --ASSASSINATION + [260] = "DAMAGER", --COMBAT + [261] = "DAMAGER", --SUB + + --SHAMAN + [262] = "DAMAGER", --ELEMENTAL + [263] = "DAMAGER", --ENHAN + [264] = "HEALER", --RESTO + + --WARLOCK + [265] = "DAMAGER", --AFF + [266] = "DAMAGER", --DESTRO + [267] = "DAMAGER", --DEMO + + --WARRIOR + [71] = "DAMAGER", --ARMS + [72] = "DAMAGER", --FURY + [73] = "TANK", --PROT + } + + function _detalhes:GetRoleFromSpec (specId, unitGUID) + if (specId == 103) then --feral druid + local talents = _detalhes.cached_talents [unitGUID] + if (talents) then + local tankTalents = 0 + for i = 1, #talents do + local iconTexture, rank, tier, column = unpack (talents [i]) + if (tier == 2) then + if (column == 1 and rank == 5) then + tankTalents = tankTalents + 5 + end + if (column == 3 and rank == 5) then + tankTalents = tankTalents + 5 + end + + if (tankTalents >= 10) then + return "TANK" + end + end + end + end + end + + return Details.specToRole [specId] or "NONE" + end + + Details.validSpecIds = { + [250] = true, + [252] = true, + [251] = true, + [102] = true, + [103] = true, + [104] = true, + [105] = true, + [253] = true, + [254] = true, + [255] = true, + [62] = true, + [63] = true, + [64] = true, + [70] = true, + [65] = true, + [66] = true, + [257] = true, + [256] = true, + [258] = true, + [259] = true, + [260] = true, + [261] = true, + [262] = true, + [263] = true, + [264] = true, + [265] = true, + [266] = true, + [267] = true, + [71] = true, + [72] = true, + [73] = true, + } + + Details.textureToSpec = { + + DruidBalance = 102, + DruidFeralCombat = 103, + DruidRestoration = 105, + + HunterBeastMaster = 253, + HunterMarksmanship = 254, + HunterSurvival = 255, + + MageArcane = 62, + MageFrost = 64, + MageFire = 63, + + PaladinCombat = 70, + PaladinHoly = 65, + PaladinProtection = 66, + + PriestHoly = 257, + PriestDiscipline = 256, + PriestShadow = 258, + + RogueAssassination = 259, + RogueCombat = 260, + RogueSubtlety = 261, + + ShamanElementalCombat = 262, + ShamanEnhancement = 263, + ShamanRestoration = 264, + + WarlockCurses = 265, + WarlockDestruction = 266, + WarlockSummoning = 267, + + --WarriorArm = 71, + WarriorArms = 71, + WarriorFury = 72, + WarriorProtection = 73, + } + + + Details.specToTexture = { + [102] = "DruidBalance", + [103] = "DruidFeralCombat", + [105] = "DruidRestoration", + + [253] = "HunterBeastMaster", + [254] = "HunterMarksmanship", + [255] = "HunterSurvival", + + [62] = "MageArcane", + [64] = "MageFrost", + [63] = "MageFire", + + [70] = "PaladinCombat", + [65] = "PaladinHoly", + [66] = "PaladinProtection", + + [257] = "PriestHoly", + [256] = "PriestDiscipline", + [258] = "PriestShadow", + + [259] = "RogueAssassination", + [260] = "RogueCombat", + [261] = "RogueSubtlety", + + [262] = "ShamanElementalCombat", + [263] = "ShamanEnhancement", + [264] = "ShamanRestoration", + + [265] = "WarlockCurses", + [266] = "WarlockDestruction", + [267] = "WarlockSummoning", + + --[71] = "WarriorArm", + [71] = "WarriorArms", + [72] = "WarriorFury", + [73] = "WarriorProtection", + } + + function Details.IsValidSpecId (specId) + return Details.validSpecIds [specId] + end + + function Details.GetClassicSpecByTalentTexture (talentTexture) + return Details.textureToSpec [talentTexture] or 0 + end +end \ No newline at end of file diff --git a/core/network.lua b/core/network.lua index 6e2bdd9c..c6860295 100644 --- a/core/network.lua +++ b/core/network.lua @@ -48,6 +48,7 @@ local CONST_ROGUE_SR = "SR" --soul rip from akaari's soul (LEGION ONLY) DETAILS_PREFIX_COACH = "CO" --coach feature + DETAILS_PREFIX_TBC_DATA = "BC" --tbc data _detalhes.network.ids = { ["HIGHFIVE_REQUEST"] = CONST_HIGHFIVE_REQUEST, @@ -71,6 +72,8 @@ ["CLOUD_SHAREDATA"] = CONST_CLOUD_SHAREDATA, ["COACH_FEATURE"] = DETAILS_PREFIX_COACH, --ask the raid leader is the coach is enbaled + + ["TBC_DATA"] = DETAILS_PREFIX_TBC_DATA, --get basic information about the player } local plugins_registred = {} @@ -89,8 +92,10 @@ end if (DetailsFramework.IsTimewalkWoW()) then - --average item level doesn't exists - --talent information is very different + if (DetailsFramework.IsTBCWow()) then + --detect my spec + + end return end @@ -383,6 +388,44 @@ end + + function _detalhes.network.TBCData(player, realm, coreVersion, data) + if (not IsInRaid() and not IsInGroup()) then + return + end + + local LibDeflate = _G.LibStub:GetLibrary("LibDeflate") + local dataCompressed = LibDeflate:DecodeForWoWAddonChannel(data) + local dataSerialized = LibDeflate:DecompressDeflate(dataCompressed) + local dataTable = {Details:Deserialize(dataSerialized)} + tremove(dataTable, 1) + local dataTable = dataTable[1] + + local playerRole = dataTable[1] + local spec = dataTable[2] + local itemLevel = dataTable[3] + local talents = dataTable[4] + local guid = dataTable[5] + + --[=[ + print("Details! Received TBC Comm Data:") + print("From:", player) + print("spec:", spec) + print("role:", playerRole) + print("item level:", itemLevel) + print("guid:", guid) + --]=] + + _detalhes.cached_talents[guid] = talents + _detalhes.cached_specs[guid] = spec + _detalhes.cached_roles[guid] = playerRole + _detalhes.item_level_pool[guid] = { + name = player, + ilvl = itemLevel, + time = time() + } + end + --"CIEA" Coach Is Enabled Ask (client > server) --"CIER" Coach Is Enabled Response (server > client) --"CCS" Coach Combat Start (client > server) @@ -573,6 +616,7 @@ [CONST_PVP_ENEMY] = _detalhes.network.ReceivedEnemyPlayer, [DETAILS_PREFIX_COACH] = _detalhes.network.Coach, --coach feature + [DETAILS_PREFIX_TBC_DATA] = _detalhes.network.TBCData } ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/core/parser.lua b/core/parser.lua index 6a466c7d..b351c73c 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -5,6 +5,7 @@ local _tempo = time() local _ local DetailsFramework = DetailsFramework + local isTBC = DetailsFramework.IsTBCWow() ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> local pointers @@ -189,54 +190,60 @@ } --> spellIds override - local override_spellId = { - [184707] = 218617, --warrior rampage - [184709] = 218617, --warrior rampage - [201364] = 218617, --warrior rampage - [201363] = 218617, --warrior rampage - [85384] = 96103, --warrior raging blow - [85288] = 96103, --warrior raging blow - [280849] = 5308, --warrior execute - [163558] = 5308, --warrior execute - [217955] = 5308, --warrior execute - [217956] = 5308, --warrior execute - [217957] = 5308, --warrior execute - [224253] = 5308, --warrior execute - [199850] = 199658, --warrior whirlwind - [190411] = 199658, --warrior whirlwind - [44949] = 199658, --warrior whirlwind - [199667] = 199658, --warrior whirlwind - [199852] = 199658, --warrior whirlwind - [199851] = 199658, --warrior whirlwind - - [222031] = 199547, --deamonhunter ChaosStrike - [200685] = 199552, --deamonhunter Blade Dance - [210155] = 210153, --deamonhunter Death Sweep - [227518] = 201428, --deamonhunter Annihilation - [187727] = 178741, --deamonhunter Immolation Aura - [201789] = 201628, --deamonhunter Fury of the Illidari - [225921] = 225919, --deamonhunter Fracture talent - - [205164] = 205165, --death knight Crystalline Swords - - [193315] = 197834, --rogue Saber Slash - [202822] = 202823, --rogue greed - [280720] = 282449, --rogue Secret Technique - [280719] = 282449, --rogue Secret Technique - [27576] = 5374, --rogue mutilate - - [233496] = 233490, --warlock Unstable Affliction - [233497] = 233490, --warlock Unstable Affliction - [233498] = 233490, --warlock Unstable Affliction - [233499] = 233490, --warlock Unstable Affliction - - [261947] = 261977, --monk fist of the white tiger talent + local override_spellId - [32175] = 17364, -- shaman Stormstrike (from Turkar on github) - [32176] = 17364, -- shaman Stormstrike - [45284] = 188196, --shaman lightining bolt overloaded - - } + if (isTBC) then + override_spellId = {} + + else --retail + override_spellId = { + [184707] = 218617, --warrior rampage + [184709] = 218617, --warrior rampage + [201364] = 218617, --warrior rampage + [201363] = 218617, --warrior rampage + [85384] = 96103, --warrior raging blow + [85288] = 96103, --warrior raging blow + [280849] = 5308, --warrior execute + [163558] = 5308, --warrior execute + [217955] = 5308, --warrior execute + [217956] = 5308, --warrior execute + [217957] = 5308, --warrior execute + [224253] = 5308, --warrior execute + [199850] = 199658, --warrior whirlwind + [190411] = 199658, --warrior whirlwind + [44949] = 199658, --warrior whirlwind + [199667] = 199658, --warrior whirlwind + [199852] = 199658, --warrior whirlwind + [199851] = 199658, --warrior whirlwind + + [222031] = 199547, --deamonhunter ChaosStrike + [200685] = 199552, --deamonhunter Blade Dance + [210155] = 210153, --deamonhunter Death Sweep + [227518] = 201428, --deamonhunter Annihilation + [187727] = 178741, --deamonhunter Immolation Aura + [201789] = 201628, --deamonhunter Fury of the Illidari + [225921] = 225919, --deamonhunter Fracture talent + + [205164] = 205165, --death knight Crystalline Swords + + [193315] = 197834, --rogue Saber Slash + [202822] = 202823, --rogue greed + [280720] = 282449, --rogue Secret Technique + [280719] = 282449, --rogue Secret Technique + [27576] = 5374, --rogue mutilate + + [233496] = 233490, --warlock Unstable Affliction + [233497] = 233490, --warlock Unstable Affliction + [233498] = 233490, --warlock Unstable Affliction + [233499] = 233490, --warlock Unstable Affliction + + [261947] = 261977, --monk fist of the white tiger talent + + [32175] = 17364, -- shaman Stormstrike (from Turkar on github) + [32176] = 17364, -- shaman Stormstrike + [45284] = 188196, --shaman lightining bolt overloaded + } + end local bitfield_debuffs_ids = _detalhes.BitfieldSwapDebuffsIDs local bitfield_debuffs = {} @@ -248,13 +255,20 @@ bitfield_debuffs [spellid] = true end end - + + --tbc prayer of mending cache + local TBC_PrayerOfMendingCache = {} + --tbc earth shield cache + local TBC_EarthShieldCache = {} + --tbc life bloom cache + local TBC_LifeBloomLatestHeal + --expose the override spells table to external scripts _detalhes.OverridedSpellIds = override_spellId --> list of ignored npcs by the user local ignored_npcids = {} - + --> ignore soul link (damage from the warlock on his pet - current to demonology only) local SPELLID_WARLOCK_SOULLINK = 108446 --> when checking if can start a new combat, ignore the damage from warlock's burning rush @@ -274,6 +288,23 @@ local SPELLID_KYRIAN_DRUID_HEAL = 327149 local SPELLID_KYRIAN_DRUID_TANK = 327037 + --> shaman earth shield (bcc) + local SPELLID_SHAMAN_EARTHSHIELD_HEAL = 379 + local SPELLID_SHAMAN_EARTHSHIELD_BUFF_RANK1 = 974 + local SPELLID_SHAMAN_EARTHSHIELD_BUFF_RANK2 = 32593 + local SPELLID_SHAMAN_EARTHSHIELD_BUFF_RANK3 = 32594 + local SHAMAN_EARTHSHIELD_BUFF = { + [SPELLID_SHAMAN_EARTHSHIELD_BUFF_RANK1] = true, + [SPELLID_SHAMAN_EARTHSHIELD_BUFF_RANK2] = true, + [SPELLID_SHAMAN_EARTHSHIELD_BUFF_RANK3] = true, + } + --> holy priest prayer of mending (bcc) + local SPELLID_PRIEST_POM_BUFF = 41635 + local SPELLID_PRIEST_POM_HEAL = 33110 + --> druid lifebloom explosion (bcc) + local SPELLID_DRUID_LIFEBLOOM_BUFF = 33763 + local SPELLID_DRUID_LIFEBLOOM_HEAL = 33778 + local SPELLID_SANGUINE_HEAL = 226510 local SPELLID_BARGAST_DEBUFF = 334695 --REMOVE ON 10.0 @@ -1830,6 +1861,8 @@ if (is_using_spellId_override) then spellid = override_spellId [spellid] or spellid end + + --sanguine ichor mythic dungeon affix (heal enemies) if (spellid == SPELLID_SANGUINE_HEAL) then @@ -1848,7 +1881,31 @@ --cura_efetiva = absorbed + amount - overhealing cura_efetiva = cura_efetiva + amount - overhealing end - + + if (isTBC) then + --earth shield + if (spellid == SPELLID_SHAMAN_EARTHSHIELD_HEAL) then + --get the information of who placed the buff into this actor + local sourceData = TBC_EarthShieldCache[who_name] + if (sourceData) then + who_serial, who_name, who_flags = unpack(sourceData) + end + + --prayer of mending + elseif (spellid == SPELLID_PRIEST_POM_HEAL) then + local sourceData = TBC_PrayerOfMendingCache[who_name] + if (sourceData) then + who_serial, who_name, who_flags = unpack(sourceData) + TBC_PrayerOfMendingCache[who_name] = nil + end + + --life bloom explosion (second part of the heal) + elseif (spellid == SPELLID_DRUID_LIFEBLOOM_HEAL) then + TBC_LifeBloomLatestHeal = cura_efetiva + return + end + end + _current_heal_container.need_refresh = true if (spellid == SPELLID_KYRIAN_DRUID_HEAL) then @@ -2127,35 +2184,6 @@ } end - ------------------------------------------------------------------------------------------------ - --> - ---[=[ ---druid_kyrian_bounds - ---damager on damager - -SPELL_CAST_SUCCESS,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,326434,"Kindred Spirits",0x40,Player-3209-065BAEDE,0000000000000000,28240,28240,1233,448,472,0,0,10000,10000,200,-3298.34,5440.53,1525,5.8081,177 -SPELL_AURA_APPLIED,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,326434,"Kindred Spirits",0x40,BUFF -SPELL_AURA_REMOVED,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,326434,"Kindred Spirits",0x40,BUFF - -12/15 10:03:51.702 SPELL_CAST_SUCCESS,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,0000000000000000,nil,0x80000000,0x80000000,326446,"Empower Bond",0x40,Player-3209-065BAEDE,0000000000000000,28240,28240,1234,448,472,0,3,100,100,0,-3294.17,5437.12,1525,0.7611,177 - -12/15 10:03:51.702 SPELL_AURA_APPLIED,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,327139,"Kindred Empowerment",0x40,BUFF -12/15 10:03:51.702 SPELL_AURA_APPLIED,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,327022,"Kindred Empowerment",0x40,BUFF,1 -12/15 10:03:51.702 SPELL_AURA_APPLIED,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,327139,"Kindred Empowerment",0x40,BUFF -12/15 10:03:51.702 SPELL_AURA_APPLIED,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,327022,"Kindred Empowerment",0x40,BUFF,1 - -SPELL_DAMAGE,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Creature-0-4217-2222-22679-166718-000058B14F,"Manifestation of Envy",0x10a48,0x0,338411,"Kindred Empowerment",0x40,Creature-0-4217-2222-22679-166718-000058B14F,0000000000000000,4218,5895,0,0,651,0,0,2289,2289,0,-3290.46,5445.37,1525,4.1809,58,31,30,-1,64,0,0,0,nil,nil,nil -SPELL_DAMAGE,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Creature-0-4217-2222-22679-166718-000058B14F,"Manifestation of Envy",0x10a48,0x0,338411,"Kindred Empowerment",0x40,Creature-0-4217-2222-22679-166718-000058B14F,0000000000000000,867,5895,0,0,651,0,0,2289,2289,0,-3289.84,5446.94,1525,4.3379,58,89,89,-1,64,0,0,0,nil,nil,nil - -SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x10512,0x0,327149,"Kindred Focus",0x40,Player-3209-065BAEDE,0000000000000000,50058,50058,1575,448,1510,8832,1,1000,1000,0,-2640.65,5656.60,1525,3.3950,177,485,485,485,0,nil - -12/15 10:04:01.739 SPELL_AURA_REMOVED,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,327139,"Kindred Empowerment",0x40,BUFF -12/15 10:04:01.739 SPELL_AURA_REMOVED,Player-3209-065BAEDE,"Bullcéfalo-Azralon",0x512,0x0,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,327139,"Kindred Empowerment",0x40,BUFF - ---]=] - ------------------------------------------------------------------------------------------------ --> handle shields @@ -2176,6 +2204,15 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED necro_cheat_deaths[who_serial] = true end + if (isTBC) then + if (SHAMAN_EARTHSHIELD_BUFF[spellid]) then + TBC_EarthShieldCache[alvo_name] = {who_serial, who_name, who_flags} + + elseif (spellid == SPELLID_PRIEST_POM_BUFF) then + TBC_PrayerOfMendingCache [alvo_name] = {who_serial, who_name, who_flags} + end + end + if (_recording_buffs_and_debuffs) then if (who_name == alvo_name and raid_members_cache [who_serial] and _in_combat) then --> call record buffs uptime @@ -2429,7 +2466,7 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED parser:add_buff_uptime (token, time, alvo_serial, alvo_name, alvo_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, "BUFF_UPTIME_REFRESH") end end - + ------------------------------------------------------------------------------------------------ --> healing done (shields) if (absorb_spell_list [spellid] and _recording_healing and amount) then @@ -2447,7 +2484,17 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED 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, nil, true) end end - + + --buff refresh + if (isTBC) then + if (SHAMAN_EARTHSHIELD_BUFF[spellid]) then + TBC_EarthShieldCache[alvo_name] = {who_serial, who_name, who_flags} + + elseif (spellid == SPELLID_PRIEST_POM_BUFF) then + TBC_PrayerOfMendingCache[alvo_name] = {who_serial, who_name, who_flags} + end + end + ------------------------------------------------------------------------------------------------ --> recording buffs @@ -2571,7 +2618,23 @@ SPELL_HEAL,Player-3209-0A79112C,"Symantec-Azralon",0x511,0x0,Player-3209-065BAED elseif (spellid == SPELLID_NECROMANCER_CHEAT_DEATH) then --remove on 10.0 necro_cheat_deaths[who_serial] = nil + end + if (isTBC) then + --shaman earth shield + if (SHAMAN_EARTHSHIELD_BUFF[spellid]) then + TBC_EarthShieldCache[alvo_name] = nil + end + + --druid life bloom + if (spellid == SPELLID_DRUID_LIFEBLOOM_BUFF) then + local healAmount = TBC_LifeBloomLatestHeal + if (healAmount) then + --award the heal to the buff caster name + parser:heal("SPELL_HEAL", time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spellschool, healAmount, 0, 0, false, false) + TBC_LifeBloomLatestHeal = nil + end + end end --druid kyrian empower bounds (9.0 kyrian covenant - probably remove on 10.0) @@ -3127,6 +3190,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 ------------------------------------------------------------------------------------------------ --> check if is energy or resource + --Details:Dump({token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spelltype, amount, overpower, powertype, altpower}) + --> get resource type local is_resource, resource_amount, resource_id = resource_power_type [powertype], amount, powertype @@ -5822,7 +5887,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 for i = 1, players do local name, killingBlows, honorableKills, deaths, honorGained, faction, race, rank, class, classToken, damageDone, healingDone, bgRating, ratingChange, preMatchMMR, mmrChange, talentSpec - if (DetailsFramework.IsTBCWow()) then + if (isTBC) then name, killingBlows, honorableKills, deaths, honorGained, faction, rank, race, class, classToken, damageDone, healingDone, bgRating, ratingChange, preMatchMMR, mmrChange, talentSpec = GetBattlefieldScore(i) else name, killingBlows, honorableKills, deaths, honorGained, faction, race, class, classToken, damageDone, healingDone, bgRating, ratingChange, preMatchMMR, mmrChange, talentSpec = GetBattlefieldScore(i) diff --git a/frames/window_main.lua b/frames/window_main.lua index 988f98fb..edbaf2d7 100644 --- a/frames/window_main.lua +++ b/frames/window_main.lua @@ -2165,8 +2165,8 @@ local icon_frame_on_enter = function (self) local talent_string = "" if (talents) then for i = 1, #talents do - local talentID, name, texture, selected, available = GetTalentInfoByID (talents [i]) - talent_string = talent_string .. " |T" .. texture .. ":" .. 24 .. ":" .. 24 ..":0:0:64:64:4:60:4:60|t" + --local talentID, name, texture, selected, available = GetTalentInfoByID (talents [i]) + --talent_string = talent_string .. " |T" .. texture .. ":" .. 24 .. ":" .. 24 ..":0:0:64:64:4:60:4:60|t" end end diff --git a/frames/window_options2_sections.lua b/frames/window_options2_sections.lua index b3a7fdfa..32c3aeb1 100644 --- a/frames/window_options2_sections.lua +++ b/frames/window_options2_sections.lua @@ -335,11 +335,12 @@ do name = Loc ["STRING_OPTIONS_ED"], desc = Loc ["STRING_OPTIONS_ED_DESC"], }, + {--auto erase trash segments type = "toggle", - get = function() return _detalhes.overall_clear_logout end, + get = function() return _detalhes.trash_auto_remove end, set = function (self, fixedparam, value) - _detalhes:SetOverallResetOptions(nil, nil, value) + _detalhes.trash_auto_remove = value afterUpdate() end, name = Loc ["STRING_OPTIONS_CLEANUP"], diff --git a/functions/profiles.lua b/functions/profiles.lua index f377ddab..b8fbd7a6 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -926,7 +926,7 @@ local default_profile = { memory_ram = 64, remove_realm_from_name = true, trash_concatenate = false, - trash_auto_remove = true, + trash_auto_remove = false, world_combat_is_trash = false, --> death log @@ -1128,6 +1128,7 @@ local default_player_data = { --> current combat number cached_specs = {}, cached_talents = {}, + cached_roles = {}, last_day = date ("%d"), diff --git a/sounds/threat_warning_1.ogg b/sounds/threat_warning_1.ogg new file mode 100644 index 00000000..6a7d6cd4 Binary files /dev/null and b/sounds/threat_warning_1.ogg differ diff --git a/sounds/threat_warning_2.ogg b/sounds/threat_warning_2.ogg new file mode 100644 index 00000000..1c1f2491 Binary files /dev/null and b/sounds/threat_warning_2.ogg differ diff --git a/sounds/threat_warning_3.ogg b/sounds/threat_warning_3.ogg new file mode 100644 index 00000000..a166322f Binary files /dev/null and b/sounds/threat_warning_3.ogg differ diff --git a/sounds/threat_warning_4.ogg b/sounds/threat_warning_4.ogg new file mode 100644 index 00000000..31790834 Binary files /dev/null and b/sounds/threat_warning_4.ogg differ diff --git a/startup.lua b/startup.lua index 46864434..e40dd185 100644 --- a/startup.lua +++ b/startup.lua @@ -534,6 +534,11 @@ function Details:StartMeUp() --I'll never stop! end if (DetailsFramework.IsTBCWow()) then + + --remover isso em versões mais atualizadas + if (_detalhes.bcc_counter == 18 or _detalhes.bcc_counter == 19) then + _detalhes.trash_auto_remove = false + end local originalPosition local isOnOriginalPosition = true