From f091ef2dd233eef1e55960270f8777d15aa023d7 Mon Sep 17 00:00:00 2001 From: Tercio Date: Sat, 5 Oct 2013 14:35:38 -0300 Subject: [PATCH] fixes --- boot.lua | 2 +- classes/classe_combate.lua | 2 +- classes/container_historico.lua | 2 + core/parser.lua | 136 ++++++++++++++++-- functions/savedata.lua | 8 +- functions/spells.lua | 63 ++++++-- locales/Details-enUS.lua | 2 + locales/Details-ptBR.lua | 2 + .../SiegeOfOrgrimmar.lua | 12 +- 9 files changed, 202 insertions(+), 27 deletions(-) diff --git a/boot.lua b/boot.lua index dde7028b..e36ad5b7 100644 --- a/boot.lua +++ b/boot.lua @@ -7,7 +7,7 @@ --> global name declaration _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.userversion = "v1.4.12" + _detalhes.userversion = "v1.4.13" _detalhes.version = "Alpha 007" _detalhes.realversion = 7 diff --git a/classes/classe_combate.lua b/classes/classe_combate.lua index 664f5224..dbc17745 100644 --- a/classes/classe_combate.lua +++ b/classes/classe_combate.lua @@ -133,7 +133,7 @@ function combate:NovaTabela (iniciada, _tabela_overall, combatId, ...) interrupt = 0, --> armazena quantos interrupt a pessoa deu dispell = 0, --> armazena quantos dispell esta pessoa recebeu dead = 0, --> armazena quantas vezes essa pessia morreu - cooldowns_defensive = 0 --> armazena quantos cooldowns a raid usou + cooldowns_defensive = 0, --> armazena quantos cooldowns a raid usou } } diff --git a/classes/container_historico.lua b/classes/container_historico.lua index 523ff8a1..249ad791 100644 --- a/classes/container_historico.lua +++ b/classes/container_historico.lua @@ -63,6 +63,7 @@ function historico:adicionar (tabela) end end + --[[ if (self.tabelas[3]) then if (self.tabelas[3].is_trash and self.tabelas[2].is_trash and not self.tabelas[3].is_boss and not self.tabelas[2].is_boss) then --> tabela 2 deve ser deletada e somada a tabela 1 @@ -82,6 +83,7 @@ function historico:adicionar (tabela) --self.tabelas[2] = self.tabelas[2] + self.tabelas[3] --_table_remove (self.tabelas, 3) end + --]] end diff --git a/core/parser.lua b/core/parser.lua index 3f2ba391..2c3d1c72 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -34,6 +34,7 @@ local parser = _detalhes.parser --details local local absorb_spell_list = _detalhes.AbsorbSpells --details local local defensive_cooldown_spell_list = _detalhes.DefensiveCooldownSpells --details local + local defensive_cooldown_spell_list_no_buff = _detalhes.DefensiveCooldownSpellsNoBuff --details local local cc_spell_list = _detalhes.CrowdControlSpells --details local local container_combatentes = _detalhes.container_combatentes --details local local container_habilidades = _detalhes.container_habilidades --details local @@ -137,9 +138,9 @@ if (not _in_combat) then if ( token ~= "SPELL_PERIODIC_DAMAGE" and ( - ( _bit_band (who_flags, AFFILIATION_GROUP) ~= 0 and _UnitAffectingCombat (who_name) ) + (who_flags and _bit_band (who_flags, AFFILIATION_GROUP) ~= 0 and _UnitAffectingCombat (who_name) ) or - (_bit_band (alvo_flags, AFFILIATION_GROUP) ~= 0 and _UnitAffectingCombat (alvo_name) ) + (alvo_flags and _bit_band (alvo_flags, AFFILIATION_GROUP) ~= 0 and _UnitAffectingCombat (alvo_name) ) )) then --> não entra em combate se for DOT @@ -697,10 +698,9 @@ else escudo [alvo_name] [spellid] [who_name] = amount end - elseif (defensive_cooldown_spell_list [spellid]) then --> usou cooldown - return parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount) + return parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname) ------------------------------------------------------------------------------------------------ --> recording buffs @@ -1108,7 +1108,7 @@ --> MISC search key: ~cooldown | ----------------------------------------------------------------------------------------------------------------------------------------- - function parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, _, tipo, amount) + function parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname) ------------------------------------------------------------------------------------------------ --> early checks and fixes @@ -1297,6 +1297,114 @@ return spell:Add (alvo_serial, alvo_name, alvo_flags, who_name, token, extraSpellID, extraSpellName) end + + --> search key: ~spellcast castspell + function parser:spellcast (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype) + + --print (token, time, "WHO:",who_serial, who_name, who_flags, "TARGET:",alvo_serial, alvo_name, alvo_flags, "SPELL:",spellid, spellname, spelltype) + + --> esta dando erro onde o nome é NIL, fazendo um fix para isso + if (who_flags and _bit_band (who_flags, OBJECT_TYPE_PLAYER) ~= 0) then + --> check if is a cooldown :D + if (defensive_cooldown_spell_list_no_buff [spellid]) then + --> usou cooldown + if (not alvo_name) then + if (defensive_cooldown_spell_list_no_buff [spellid][3] == 1) then + alvo_name = who_name + else + alvo_name = Loc ["STRING_RAID_WIDE"] + end + end + return parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname) + else + return + end + else + + + + --> spells de boss + return + end + + if (not who_name) then + --print ( "DISPELL sem who_name: [*] "..extraSpellName ) + --print (alvo_name) + --print (spellname) + who_name = "[*] ".. spellname + end + + if (not alvo_name) then + --print ("DISPELL sem alvo_name: [*] "..extraSpellName) + --print (who_name) + --print (spellname) + alvo_name = "[*] ".. spellid + end + + _current_misc_container.need_refresh = true + _overall_misc_container.need_refresh = true + + + + ------------------------------------------------------------------------------------------------ + --> get actors + + --> main actor + --> debug - no cache + --[[ + local este_jogador, meu_dono, who_name = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true) + --]] + --[ + + + + local este_jogador, meu_dono = misc_cache [who_name] + if (not este_jogador) then --> pode ser um desconhecido ou um pet + este_jogador, meu_dono, who_name = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true) + if (not meu_dono) then --> se não for um pet, adicionar no cache + misc_cache [who_name] = este_jogador + end + end + --]] + local shadow = este_jogador.shadow + + ------------------------------------------------------------------------------------------------ + --> build containers on the fly + + if (not este_jogador.spellcast) then + --> constrói aqui a tabela dele + este_jogador.spellcast = 0 + este_jogador.spellcast_spell_tables = container_habilidades:NovoContainer (container_misc) + + if (not shadow.spellcast_targets) then + shadow.spellcast = 0 + shadow.spellcast_spell_tables = container_habilidades:NovoContainer (container_misc) + end + + este_jogador.spellcast_targets.shadow = shadow.spellcast_targets + este_jogador.spellcast_spell_tables.shadow = shadow.spellcast_spell_tables + end + + ------------------------------------------------------------------------------------------------ + --> add amount + + --> last event update + este_jogador.last_event = _tempo + + --> actor dispell amount + este_jogador.spellcast = este_jogador.spellcast + 1 + shadow.spellcast = shadow.spellcast + 1 + + --> actor spells table + local spell = este_jogador.spellcast_spell_tables._ActorTable [spellid] + if (not spell) then + spell = este_jogador.spellcast_spell_tables:PegaHabilidade (spellid, true, token) + end + return spell:Add (alvo_serial, alvo_name, alvo_flags, who_name, token) + + -- FIM FIM + end + --serach key: ~dispell function parser:dispell (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, extraSpellID, extraSpellName, extraSchool, auraType) @@ -1838,7 +1946,7 @@ --serach key: ~capture - _detalhes.capture_types = {"damage", "heal", "energy", "miscdata", "aura"} + _detalhes.capture_types = {"damage", "heal", "energy", "miscdata", "aura", "spellcast"} function _detalhes:CaptureIsAllEnabled() for _, _thisType in _ipairs (_detalhes.capture_types) do @@ -1914,6 +2022,9 @@ token_list ["SPELL_ENERGIZE"] = nil token_list ["SPELL_PERIODIC_ENERGIZE"] = nil + elseif (capture_type == "spellcast") then + token_list ["SPELL_CAST_SUCCESS"] = nil + elseif (capture_type == "miscdata") then -- dispell token_list ["SPELL_DISPEL"] = nil @@ -1961,6 +2072,9 @@ token_list ["SPELL_ENERGIZE"] = parser.energize token_list ["SPELL_PERIODIC_ENERGIZE"] = parser.energize + elseif (capture_type == "spellcast") then + token_list ["SPELL_CAST_SUCCESS"] = parser.spellcast + elseif (capture_type == "miscdata") then -- dispell token_list ["SPELL_DISPEL"] = parser.dispell @@ -1987,10 +2101,12 @@ --print (token) -- DEBUG - - --local a, b, c, d, e, f, g, h, i, j, k = select (1, ...) - --print (token, who_name, a, b, c, d, e, f, g, h, i, j, k) - + --[[ + if (who_name == "Trcioo") then + local a, b, c, d, e, f, g, h, i, j, k = select (1, ...) + print (token, who_name, a, b, c, d, e, f, g, h, i, j, k) + end + --]] --[[ if (who_name == "Ditador") then if (token:find ("CAST")) then diff --git a/functions/savedata.lua b/functions/savedata.lua index 805c4794..62060d5c 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -278,13 +278,19 @@ end --]] ["energy"] = true, ["miscdata"] = true, ["aura"] = true, + ["spellcast"] = true, } - _detalhes.cloud_capture = _detalhes_database.cloud_capture + + if (_detalhes.capture_real.spellcast == nil) then + _detalhes.capture_real.spellcast = true + end _detalhes.capture_current = {} for captureType, captureValue in pairs (_detalhes.capture_real) do _detalhes.capture_current [captureType] = captureValue end + + _detalhes.cloud_capture = _detalhes_database.cloud_capture _detalhes.minimum_combat_time = _detalhes_database.minimum_combat_time diff --git a/functions/spells.lua b/functions/spells.lua index 45ab4820..3f2d22b7 100644 --- a/functions/spells.lua +++ b/functions/spells.lua @@ -368,6 +368,51 @@ do } + _detalhes.DefensiveCooldownSpellsNoBuff = { + + --["DEATHKNIGHT"] = {}, + [48707] = {45, 5, 1}, -- Anti-Magic Shell + [48743] = {120, 0, 1}, --Death Pact + [51052] = {120, 3, 0}, --Anti-Magic Zone + + --["DRUID"] = {}, + [740] = {480, 8, 0}, --Tranquility + [22842] = {0, 0, 1}, --Frenzied Regeneration + + --["HUNTER"] = {}, + + --["MAGE"] = {}, + + --["MONK"] = {}, + [115295] = {30, 30, 1}, -- Guard + [116849] = {120, 12, 0}, -- Life Cocoon (a) + [115310] = {180, 0, 0}, -- Revival + [119582] = {60, 0, 0}, -- Purifying Brew + [116844] = {45, 8, 0}, --Ring of Peace + + --["PALADIN"] = {}, + [633] = {600, 0, 0}, --Lay on Hands + + --["PRIEST"] = {}, + [62618] = {180, 10, 0}, --Power Word: Barrier + [109964] = {60, 10, 0}, --Spirit Shell + [64843] = {180, 8, 0}, --Divine Hymn + [108968] = {300, 0, 0}, --Void Shift holy disc + [142723] = {600, 0, 0}, --Void Shift shadow + + --["ROGUE"] = {}, + [76577] = {180, 0, 0}, --Smoke Bomb + + --["SHAMAN"] = {}, + [108270] = {60, 5, 1}, -- Stone Bulwark Totem + + --["WARLOCK"] = {108416, 6229}, + [108416] = {60, 20, 1}, -- Sacrificial Pact 1 = self + [6229] = {30, 30, 1}, -- Twilight Ward 1 = self + + --["WARRIOR"] = {}, + } + _detalhes.DefensiveCooldownSpells = { --> spellid = {cooldown, duration} @@ -375,11 +420,10 @@ do -- Death Knigh [55233] = {60, 10}, -- Vampiric Blood [49222] = {60, 300}, -- Bone Shield - [48707] = {45, 5}, -- Anti-Magic Shell [48792] = {180, 12}, -- Icebound Fortitude [48743] = {120, 0}, -- Death Pact [49039] = {12, 10}, -- Lichborne - ["DEATHKNIGHT"] = {55233, 49222, 48707, 48792, 48743, 49039}, + ["DEATHKNIGHT"] = {55233, 49222, 48707, 48792, 48743, 49039, 48743, 51052}, -- Druid [62606] = {1.5, 6}, -- Savage Defense @@ -387,7 +431,7 @@ do [102342] = {60, 12}, -- Ironbark [61336] = {180, 12}, -- Survival Instincts [22812] = {60, 12}, -- Barkskin - ["DRUID"] = {62606, 106922, 102342, 61336, 22812}, + ["DRUID"] = {62606, 106922, 102342, 61336, 22812, 740, 22842}, -- Hunter [19263] = {120, 5}, -- Deterrence @@ -398,11 +442,9 @@ do ["MAGE"] = {45438}, -- Monk - [115295] = {30, 30}, -- Guard [115203] = {180, 20}, -- Fortifying Brew [122470] = {90, 10}, -- Touch of Karma [115176] = {180, 8}, -- Zen Meditation - [116849] = {120, 12}, -- Life Cocoon [115213] = {180, 6}, -- Avert Harm [122278] = {90, 45}, -- Dampen Harm [122783] = {90, 6}, -- Diffuse Magic @@ -423,7 +465,7 @@ do [47788] = {180, 10}, -- Guardian Spirit [47585] = {120, 6}, -- Dispersion [33206] = {180, 8}, -- Pain Suppression - ["PRIEST"] = {15286, 47788, 47585, 33206}, + ["PRIEST"] = {15286, 47788, 47585, 33206, 62618, 109964, 64843}, -- Rogue [1966] = {1.5, 5}, -- Feint @@ -434,15 +476,13 @@ do -- Shaman [30823] = {60, 15}, -- Shamanistic Rage [108271] = {120, 6}, -- Astral Shift - [108270] = {60, 5}, -- Stone Bulwark Totem ["SHAMAN"] = {30823, 108271, 108270}, -- Warlock [104773] = {180, 8}, -- Unending Resolve [108359] = {120, 12}, -- Dark Regeneration - [108416] = {60, 20}, -- Sacrificial Pact [110913] = {180, 8}, -- Dark Bargain - ["WARLOCK"] = {104773, 108359, 108416, 110913}, + ["WARLOCK"] = {104773, 108359, 108416, 110913, 6229}, -- Warrior [871] = {180, 12}, -- Shield Wall @@ -455,9 +495,8 @@ do local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) _detalhes.SpellOverwrite = { - [124464] = {name = GetSpellInfo (124464) .. " (" .. Loc ["STRING_MASTERY"] .. ")"}, --> shadow word: pain mastery proc - [124465] = {name = GetSpellInfo (124465) .. " (" .. Loc ["STRING_MASTERY"] .. ")"} --> vampiric touch mastery proc - + [124464] = {name = GetSpellInfo (124464) .. " (" .. Loc ["STRING_MASTERY"] .. ")"}, --> shadow word: pain mastery proc (priest) + [124465] = {name = GetSpellInfo (124465) .. " (" .. Loc ["STRING_MASTERY"] .. ")"} --> vampiric touch mastery proc (priest) } end \ No newline at end of file diff --git a/locales/Details-enUS.lua b/locales/Details-enUS.lua index ee7d98fb..4c4244d0 100644 --- a/locales/Details-enUS.lua +++ b/locales/Details-enUS.lua @@ -22,6 +22,8 @@ if not Loc then return end Loc ["STRING_PLEASE_WAIT"] = "Please wait" Loc ["STRING_UPTADING"] = "updating" + Loc ["STRING_RAID_WIDE"] = "[*] raid wide cooldown" + Loc ["STRING_RIGHTCLICK_CLOSE_SHORT"] = "Right click to close." Loc ["STRING_RIGHTCLICK_CLOSE_MEDIUM"] = "Use right click to close this window." Loc ["STRING_RIGHTCLICK_CLOSE_LARGE"] = "Click with right mouse button to close this window." diff --git a/locales/Details-ptBR.lua b/locales/Details-ptBR.lua index 6389468e..30225459 100644 --- a/locales/Details-ptBR.lua +++ b/locales/Details-ptBR.lua @@ -21,6 +21,8 @@ if not Loc then return end Loc ["STRING_PLEASE_WAIT"] = "Por favor espere" Loc ["STRING_UPTADING"] = "atualizando" + + Loc ["STRING_RAID_WIDE"] = "[*] cooldown de raide" Loc ["STRING_RIGHTCLICK_CLOSE_SHORT"] = "Botao direito para fechar." Loc ["STRING_RIGHTCLICK_CLOSE_MEDIUM"] = "Use o botao direito para fechar esta janela." diff --git a/plugins/Details_RaidInfo-SiegeOfOrgrimmar/SiegeOfOrgrimmar.lua b/plugins/Details_RaidInfo-SiegeOfOrgrimmar/SiegeOfOrgrimmar.lua index 54262f44..76f00ca0 100644 --- a/plugins/Details_RaidInfo-SiegeOfOrgrimmar/SiegeOfOrgrimmar.lua +++ b/plugins/Details_RaidInfo-SiegeOfOrgrimmar/SiegeOfOrgrimmar.lua @@ -140,6 +140,7 @@ local siege_of_orgrimmar = { [143295] = {0x1, 0x2000}, --> Sha Bolt [143309] = {0x8, 0x40}, --> Swirl [143413] = {0x8, 0x40}, --> Swirl + [143412] = {0x8, 0x40}, -- Swirl [143436] = {0x100}, --> Corrosive Blast [143281] = {0x8}, --> Seeping Sha [143574] = {0x200}, --> Swelling Corruption @@ -149,7 +150,9 @@ local siege_of_orgrimmar = { [143297] = {0x200}, --> Sha Splash [145377] = {0x1}, --> Erupting Water [143574] = {0x200}, --> Swelling Corruption (H) - [143460] = {0x200} --> + [143460] = {0x200}, --> + [143579] = {} -- Sha Corruption + }, phases = { @@ -164,11 +167,13 @@ local siege_of_orgrimmar = { 143574, --> Swelling Corruption 143297, --> Sha Splash 145377, --> Erupting Water - 143574 --> Swelling Corruption (H) + 143574, --> Swelling Corruption (H) + 143579 -- Sha Corruption }, adds = { 71543, --> Immerseus + 71642, --> Congealed Sha } }, --> phase 2 - Split @@ -188,6 +193,7 @@ local siege_of_orgrimmar = { adds = { 71603, --> Sha Puddle 71604, --> Contaminated Puddle + 71642, --> Congealed Sha } } } @@ -320,6 +326,7 @@ local siege_of_orgrimmar = { [145073] = {0x200, 0x8}, --> Residual Corruption [144548] = {0x200}, --> Expel Corruption [145134] = {0x200}, --> Expel Corruption -live + [144482] = {} --> Tear Reality }, continuo = { @@ -341,6 +348,7 @@ local siege_of_orgrimmar = { 145073, --> Residual Corruption 144548, --> Expel Corruption 145134, --> Expel Corruption + 144482, --> Tear Reality }, phases = {