- Full rework on how deaths are handled, now the last events before death should be more precise.

- Added damage taken from environment, like falling, lava, drowning, etc.
- Added Fire and Brimstone spell customizations for warlocks.
- Bookmark now are shared between all characters.
- Fixed few inconsistencies with trash recognition.
- Fixed Cloud Capture where sometimes it wasn't sharing.
- Fixed report where it wasn't sharing for guild and raid when the player name box were empty.
- Report box now also saves the position and last report channel.
- You Are Not Prepared plugin now have tooltips for spells and auto open after a boss encounter.
- Advanced Death Logs plugin got full rewrite (and still are in development).

- New API: _detalhes:GetFramework() return the framework object.
- New API: combat:GetDifficult() return the raid difficult on the combat object.
- New API: combat:GetBossInfo() return the boss info object.
- New API: combat:GetDeaths() return the table used to store deaths.
- New API: _detalhes:CreatePluginOptionsFrame (name, title, template), create a preset frame for options.
- New API Alias: framework:CreateLabel (parent, text, size, color, font, member, name)
This commit is contained in:
tercio
2014-07-30 11:41:45 -03:00
parent e5eff411c9
commit 2d1cf1b220
24 changed files with 591 additions and 610 deletions
+7 -23
View File
@@ -93,7 +93,7 @@ function _detalhes:LoadGlobalAndCharacterData()
if (_detalhes_global and not _detalhes_global.profile_pool) then
_detalhes_global.profile_pool = {}
end
for key, value in pairs (_detalhes.default_player_data) do
--> check if key exists
@@ -109,7 +109,7 @@ function _detalhes:LoadGlobalAndCharacterData()
if (type (value) == "table") then
_detalhes [key] = table_deepcopy (_detalhes_database [key])
else
_detalhes [key] = value
_detalhes [key] = _detalhes_database [key]
end
end
@@ -118,7 +118,7 @@ function _detalhes:LoadGlobalAndCharacterData()
if (not _detalhes_global) then
_detalhes_global = table_deepcopy (_detalhes.default_global_data)
end
for key, value in pairs (_detalhes.default_global_data) do
--> check if key exists
@@ -145,9 +145,9 @@ function _detalhes:LoadGlobalAndCharacterData()
if (type (value) == "table") then
_detalhes [key] = table_deepcopy (_detalhes_global [key])
else
_detalhes [key] = value
_detalhes [key] = _detalhes_global [key]
end
end
--> end
@@ -270,25 +270,9 @@ function _detalhes:LoadConfig()
end
end
--if (_detalhes_database.RaidTablesSaved) then
--for id, instance in ipairs (_detalhes.tabela_instancias) do
-- if (instance.modo == _detalhes._detalhes_props["MODO_RAID"]) then
-- _detalhes:AlteraModo (instance, _detalhes._detalhes_props["MODO_GROUP"])
-- end
--end
--if (_detalhes_database.RaidTablesSaved.Mode) then
-- _detalhes.RaidTables.Mode = _detalhes_database.RaidTablesSaved.Mode
-- _detalhes.RaidTables.LastSelected = _detalhes_database.RaidTablesSaved.LastSelected
--else
-- _detalhes.RaidTables.Mode = 1
--end
--end
--> switch tables
_detalhes.switch.slots = _detalhes_database.switchSaved.slots
_detalhes.switch.table = _detalhes_database.switchSaved.table
_detalhes.switch.slots = _detalhes_global.switchSaved.slots
_detalhes.switch.table = _detalhes_global.switchSaved.table
--> last boss
_detalhes.last_encounter = _detalhes_database.last_encounter
+5 -2
View File
@@ -632,8 +632,6 @@ local default_player_data = {
--> plugins tables
SoloTablesSaved = {},
RaidTablesSaved = {},
--> switch tables
switchSaved = {slots = 6, table = {}},
--> saved skins
savedStyles = {},
}
@@ -649,6 +647,11 @@ local default_global_data = {
savedCustomSpells = {},
savedTimeCaptures = {},
lastUpdateWarning = 0,
report_where = "SAY",
--> switch tables
switchSaved = {slots = 6, table = {}},
report_pos = {1, 1},
--> tutorial
tutorial = {
logons = 0,
unlock_button = 0,
+3 -272
View File
@@ -1,269 +1,8 @@
--[[this file save the data when player logout and load data and player login back again]]
--[[this file save the data when player leave the game]]
local _detalhes = _G._detalhes
function _detalhes:SaveData()
if (_G._detalhes_saver) then
return
end
_detalhes:SaveDataOnLogout()
end
function _detalhes:SaveDataOnLogout()
if (true) then
return
end
end
local force_reset = function()
print ("Check Point: Force reset.")
_detalhes.tabela_instancias = {}
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
_detalhes_database = {}
return
end
function _detalhes:LoadData()
--[[
if (true) then --> DEBUG, force empty data
return force_reset()
end --]]
local _detalhes_database = _G._detalhes_database
if (_detalhes_database) then
----------------------------------------------------------------------------------------
--> fora dos profiles
----------------------------------------------------------------------------------------
--> nicktag cache
_detalhes.nick_tag_cache = _detalhes_database.nick_tag_cache or {}
_detalhes:NickTagSetCache (_detalhes.nick_tag_cache)
--> plugin data
_detalhes.plugin_database = _detalhes_database.plugin_database
--> character info
_detalhes.character_data = _detalhes_database.character_data
--> build basic containers
_detalhes.tabela_historico = _detalhes_database.tabela_historico or _detalhes.historico:NovoHistorico() -- segments
_detalhes.tabela_overall = _detalhes.combate:NovaTabela() -- overall
_detalhes.tabela_pets = _detalhes_database.tabela_pets or _detalhes.container_pets:NovoContainer() -- pets
--> version
_detalhes.last_realversion = _detalhes_database.last_realversion or _detalhes.realversion --> core
_detalhes.last_version = _detalhes_database.last_version or "v1.0.0" --> version
if (_detalhes.last_realversion < _detalhes.realversion) then
--> details was been hard upgraded
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
end
if (_detalhes.last_version ~= _detalhes.userversion) then
_detalhes.is_version_first_run = true
end
--> re-build all indexes and metatables
_detalhes:RestauraMetaTables()
--> get last combat table
local historico_UM = _detalhes.tabela_historico.tabelas[1]
if (historico_UM) then
_detalhes.tabela_vigente = historico_UM --> significa que elas eram a mesma tabela, então aqui elas se tornam a mesma tabela
else
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
end
_detalhes.combat_id = _detalhes_database.combat_id
----------------------------------------------------------------------------------------
--> estão nos profiles
----------------------------------------------------------------------------------------
--> minimap
_detalhes.minimap = _detalhes_database.minimap
--> PvP
_detalhes.only_pvp_frags = _detalhes_database.only_pvp_frags
--> instances (windows)
_detalhes.tabela_instancias = _detalhes_database.tabela_instancias or {}
_detalhes.class_icons_small = _detalhes_database.class_icons_small
_detalhes.class_coords = _detalhes_database.class_coords
_detalhes.class_colors = _detalhes_database.class_colors
if (_detalhes_database.SoloTables) then
if (_detalhes_database.SoloTables.Mode) then
_detalhes.SoloTables.Mode = _detalhes_database.SoloTables.Mode
_detalhes.SoloTables.LastSelected = _detalhes_database.SoloTables.LastSelected
else
_detalhes.SoloTables.Mode = 1
end
end
if (_detalhes_database.RaidTables) then
if (_detalhes_database.RaidTables.Mode) then
_detalhes.RaidTables.Mode = _detalhes_database.RaidTables.Mode
_detalhes.RaidTables.LastSelected = _detalhes_database.RaidTables.LastSelected
else
_detalhes.RaidTables.Mode = 1
end
end
--> load options data
--window size
_detalhes.max_window_size = _detalhes_database.max_window_size
_detalhes.new_window_size = _detalhes_database.new_window_size
_detalhes.window_clamp = _detalhes_database.window_clamp
-- max segments
_detalhes.segments_amount = _detalhes_database.segments_amount
_detalhes.instances_amount = _detalhes_database.instances_amount
_detalhes.clear_ungrouped = _detalhes_database.clear_ungrouped
_detalhes.clear_graphic = _detalhes_database.clear_graphic
--> text sizes
_detalhes.font_sizes = _detalhes_database.font_sizes
_detalhes.ps_abbreviation = _detalhes_database.ps_abbreviation
-- row animation
_detalhes.use_row_animations = _detalhes_database.use_row_animations
_detalhes.animate_scroll = _detalhes_database.animate_scroll
_detalhes.use_scroll = _detalhes_database.use_scroll
-- death log
_detalhes.deadlog_limit = _detalhes_database.deadlog_limit
-- report
_detalhes.report_lines = _detalhes_database.report_lines
_detalhes.report_to_who = _detalhes_database.report_to_who
-- colors
_detalhes.default_bg_color = _detalhes_database.default_bg_color
_detalhes.default_bg_alpha = _detalhes_database.default_bg_alpha
-- fades
_detalhes.row_fade_in = _detalhes_database.row_fade_in
_detalhes.windows_fade_in = _detalhes_database.windows_fade_in
_detalhes.row_fade_out = _detalhes_database.row_fade_out
_detalhes.windows_fade_out = _detalhes_database.windows_fade_out
-- modes
_detalhes.solo = _detalhes_database.solo
_detalhes.raid = _detalhes_database.tank
-- switch
if (_detalhes_database.switch) then
_detalhes.switch.slots = _detalhes_database.switch.slots
_detalhes.switch.table = _detalhes_database.switch.table
end
--> buffs
_detalhes.savedbuffs = _detalhes_database.savedbuffs
_detalhes.Buffs:BuildTables()
--> customs
_detalhes.custom = _detalhes_database.custom
--> need refresh for all containers
for _, container in ipairs (_detalhes.tabela_overall) do
container.need_refresh = true
end
for _, container in ipairs (_detalhes.tabela_vigente) do
container.need_refresh = true
end
_detalhes_database.tabela_vigente = nil
_detalhes_database.tabela_historico = nil
_detalhes_database.tabela_pets = nil
else
_detalhes.tabela_instancias = {}
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
_detalhes_database = {}
end
-- capture
_detalhes.capture_real = _detalhes_database and _detalhes_database.capture_real or {
["damage"] = true,
["heal"] = true,
["energy"] = false,
["miscdata"] = true,
["aura"] = true,
["spellcast"] = true,
}
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
-- On Account
local _detalhes_global = _G._detalhes_global
if (_detalhes_global) then
--saved styles
--vardump (_detalhes_global.savedStyles)
_detalhes.__profiiles = _detalhes_global.__profiiles
_detalhes.savedStyles = _detalhes_global.savedStyles or _detalhes.savedStyles
_detalhes.standard_skin = _detalhes_global.standard_skin
if (not _detalhes_global.got_first_run) then
_detalhes.is_first_run = true
end
--max segments
_detalhes.segments_amount = _detalhes_global.segments_amount or _detalhes.segments_amount
_detalhes.segments_amount_to_save = _detalhes_global.segments_amount_to_save or _detalhes.segments_amount_to_save
_detalhes.segments_panic_mode = _detalhes_global.segments_panic_mode or _detalhes.segments_panic_mode
-- row animation
_detalhes.use_row_animations = _detalhes_global.use_row_animations or _detalhes.use_row_animations
_detalhes.animate_scroll = _detalhes_global.animate_scroll or _detalhes.animate_scroll
-- scrollbar
_detalhes.use_scroll = _detalhes_global.use_scroll or _detalhes.use_scroll
-- core
_detalhes.clear_ungrouped = _detalhes_global.clear_ungrouped or _detalhes.clear_ungrouped
_detalhes.update_speed = _detalhes_global.update_speed or _detalhes.update_speed
_detalhes.time_type = _detalhes_global.time_type or _detalhes.time_type
_detalhes.memory_threshold = _detalhes_global.memory_threshold
_detalhes.memory_ram = _detalhes_global.memory_ram
_detalhes.remove_realm_from_name = _detalhes_global.remove_realm_from_name
_detalhes.trash_concatenate = _detalhes_global.trash_concatenate
_detalhes.trash_auto_remove = _detalhes_global.trash_auto_remove
_detalhes.SpellOverwriteUser = _detalhes_global.SpellOverwriteUser or _detalhes.SpellOverwriteUser
--tutorial
_detalhes.tutorial = _detalhes_global.tutorial
--profiles
_detalhes.__profiiles = _detalhes_global.__profiiles
else
_detalhes.is_first_run = true
end
return true
end
function _detalhes:WipeConfig()
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
local b = CreateFrame ("button", "DetailsResetConfigButton", UIParent, "OptionsButtonTemplate")
@@ -273,7 +12,6 @@ function _detalhes:WipeConfig()
b:SetText (Loc ["STRING_SLASH_WIPECONFIG_CONFIRM"])
b:SetScript ("OnClick", function() _detalhes.wipe_full_config = true; ReloadUI(); end)
b:SetPoint ("center", UIParent, "center", 0, 0)
end
local is_exception = {
@@ -324,18 +62,11 @@ function _detalhes:SaveConfig()
end
end
--if (_detalhes.RaidTables.Mode) then
-- _detalhes_database.RaidTablesSaved = {}
-- _detalhes_database.RaidTablesSaved.Mode = _detalhes.RaidTables.Mode
-- if (_detalhes.RaidTables.Plugins [_detalhes.RaidTables.Mode]) then
-- _detalhes_database.RaidTablesSaved.LastSelected = _detalhes.RaidTables.Plugins [_detalhes.RaidTables.Mode].real_name
-- end
--end
_detalhes_database.RaidTablesSaved = nil
--> salva switch tables
_detalhes_database.switchSaved.slots = _detalhes.switch.slots
_detalhes_database.switchSaved.table = _detalhes.switch.table
_detalhes_global.switchSaved.slots = _detalhes.switch.slots
_detalhes_global.switchSaved.table = _detalhes.switch.table
--> last boss
_detalhes_database.last_encounter = _detalhes.last_encounter
+10
View File
@@ -58,6 +58,12 @@ do
local default_user_spells = {
[1] = {name = Loc ["STRING_MELEE"], icon = [[Interface\AddOns\Details\images\melee.tga]]},
[2] = {name = Loc ["STRING_AUTOSHOT"], icon = [[Interface\AddOns\Details\images\autoshot.tga]]},
[3] = {name = Loc ["STRING_ENVIRONMENTAL_FALLING"], icon = [[Interface\ICONS\Spell_Magic_FeatherFall]]},
[4] = {name = Loc ["STRING_ENVIRONMENTAL_DROWNING"], icon = [[Interface\ICONS\Ability_Suffocate]]},
[5] = {name = Loc ["STRING_ENVIRONMENTAL_FATIGUE"], icon = [[Interface\ICONS\Spell_Arcane_MindMastery]]},
[6] = {name = Loc ["STRING_ENVIRONMENTAL_FIRE"], icon = [[Interface\ICONS\INV_SummerFest_FireSpirit]]},
[7] = {name = Loc ["STRING_ENVIRONMENTAL_LAVA"], icon = [[Interface\ICONS\Ability_Rhyolith_Volcano]]},
[8] = {name = Loc ["STRING_ENVIRONMENTAL_SLIME"], icon = [[Interface\ICONS\Ability_Creature_Poison_02]]},
[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)
@@ -74,6 +80,10 @@ do
[131079] = {name = GetSpellInfo (131079) .. " (Icy Veins)"}, --> frostbolt with icy veins glyph (mage)
[131080] = {name = GetSpellInfo (131080) .. " (Icy Veins)"}, --> ice lance with icy veins glyph (mage)
[131081] = {name = GetSpellInfo (131081) .. " (Icy Veins)"}, --> frostfire with icy veins glyph (mage)
[108686] = {name = GetSpellInfo (108686) .. " (" .. GetSpellInfo (108683) .. ")" }, --> immolate (brimstone)
[108685] = {name = GetSpellInfo (108685) .. " (" .. GetSpellInfo (108683) .. ")" }, --> conflagrate (brimstone)
[114654] = {name = GetSpellInfo (114654) .. " (" .. GetSpellInfo (108683) .. ")" }, --> incinetate (brimstone)
}
function _detalhes:UserCustomSpellUpdate (index, name, icon)