Files
coa-details/functions/bossmods.lua
T
QartemisT 0207a8a094 Remove debug print statements.
User reports from DBM discord have reported messages from DBM spamming into their chat, so removing the obvious debug statements that got pushed into public.
2021-01-29 13:11:21 +00:00

234 lines
9.3 KiB
Lua

local Details = _G.Details
--> get the total of damage and healing of a phase of an encounter
function Details:OnCombatPhaseChanged()
local current_combat = Details:GetCurrentCombat()
local current_phase = current_combat.PhaseData [#current_combat.PhaseData][1]
local phase_damage_container = current_combat.PhaseData.damage [current_phase]
local phase_healing_container = current_combat.PhaseData.heal [current_phase]
local phase_damage_section = current_combat.PhaseData.damage_section
local phase_healing_section = current_combat.PhaseData.heal_section
if (not phase_damage_container) then
phase_damage_container = {}
current_combat.PhaseData.damage [current_phase] = phase_damage_container
end
if (not phase_healing_container) then
phase_healing_container = {}
current_combat.PhaseData.heal [current_phase] = phase_healing_container
end
for index, damage_actor in ipairs (Details.cache_damage_group) do
local phase_damage = damage_actor.total - (phase_damage_section [damage_actor.nome] or 0)
phase_damage_section [damage_actor.nome] = damage_actor.total
phase_damage_container [damage_actor.nome] = (phase_damage_container [damage_actor.nome] or 0) + phase_damage
end
for index, healing_actor in ipairs (Details.cache_healing_group) do
local phase_heal = healing_actor.total - (phase_healing_section [healing_actor.nome] or 0)
phase_healing_section [healing_actor.nome] = healing_actor.total
phase_healing_container [healing_actor.nome] = (phase_healing_container [healing_actor.nome] or 0) + phase_heal
end
end
function Details:BossModsLink()
if (_G.DBM) then
local dbm_callback_phase = function (event, msg, ...)
--print("D!", event, msg, ...)
local mod = Details.encounter_table.DBM_Mod
if (not mod) then
local id = Details:GetEncounterIdFromBossIndex (Details.encounter_table.mapid, Details.encounter_table.id)
if (id) then
for index, tmod in ipairs (DBM.Mods) do
if (tmod.id == id) then
Details.encounter_table.DBM_Mod = tmod
mod = tmod
end
end
end
end
local newPhase = 1
--D! DBM_Announce Stage 3 136116 stagechange 0 2429 false
if (event == "DBM_Announce") then
if (msg:find("Stage")) then
msg = msg:gsub("%a", "")
msg = msg:gsub("%s+", "")
newPhase = tonumber(msg)
--print("New Phase: ", newPhase)
local ID, msg2, someId, someNumber, aBool = ...
if (msg2 == "stagechange") then
--print("D! yeash", msg2)
end
local phase = newPhase
if (phase and Details.encounter_table.phase ~= phase) then
Details:Msg ("Current phase is now:", phase)
Details:OnCombatPhaseChanged()
Details.encounter_table.phase = phase
local cur_combat = Details:GetCurrentCombat()
local time = cur_combat:GetCombatTime()
if (time > 5) then
tinsert (cur_combat.PhaseData, {phase, time})
end
Details:SendEvent ("COMBAT_ENCOUNTER_PHASE_CHANGED", nil, phase)
end
end
end
end
local dbm_callback_pull = function (event, mod, delay, synced, startHp)
Details.encounter_table.DBM_Mod = mod
Details.encounter_table.DBM_ModTime = time()
end
DBM:RegisterCallback ("DBM_Announce", dbm_callback_phase)
DBM:RegisterCallback ("pull", dbm_callback_pull)
end
if (BigWigsLoader and not _G.DBM) then
function Details:BigWigs_SetStage (event, module, phase)
--print(" ===== BigWigs_SetStage ===== ", event, module, phase)
phase = tonumber(phase)
if (phase and type (phase) == "number" and Details.encounter_table.phase ~= phase) then
Details:OnCombatPhaseChanged()
Details.encounter_table.phase = phase
local cur_combat = Details:GetCurrentCombat()
local time = cur_combat:GetCombatTime()
if (time > 5) then
tinsert (cur_combat.PhaseData, {phase, time})
end
Details:SendEvent ("COMBAT_ENCOUNTER_PHASE_CHANGED", nil, phase)
Details:Msg ("Current phase is now:", phase)
end
end
function Details:BigWigs_Message (event, module, key, text, ...)
if (key == "stages") then
local phase = module:GetStage()
--print("BW new stage:", phase)
--local phase = text:gsub (".*%s", "")
--phase = tonumber (phase)
if (phase and type (phase) == "number" and Details.encounter_table.phase ~= phase) then
Details:OnCombatPhaseChanged()
Details.encounter_table.phase = phase
local cur_combat = Details:GetCurrentCombat()
local time = cur_combat:GetCombatTime()
if (time > 5) then
tinsert (cur_combat.PhaseData, {phase, time})
end
Details:SendEvent ("COMBAT_ENCOUNTER_PHASE_CHANGED", nil, phase)
end
end
end
if (BigWigsLoader.RegisterMessage) then
BigWigsLoader.RegisterMessage (Details, "BigWigs_Message")
BigWigsLoader.RegisterMessage (Details, "BigWigs_SetStage")
end
end
Details:CreateCallbackListeners()
end
function Details:CreateCallbackListeners()
Details.DBM_timers = {}
local current_encounter = false
local current_table_dbm = {}
local current_table_bigwigs = {}
local event_frame = CreateFrame ("frame", nil, UIParent, "BackdropTemplate")
event_frame:SetScript ("OnEvent", function (self, event, ...)
if (event == "ENCOUNTER_START") then
local encounterID, encounterName, difficultyID, raidSize = select (1, ...)
current_encounter = encounterID
elseif (event == "ENCOUNTER_END" or event == "PLAYER_REGEN_ENABLED") then
if (current_encounter) then
if (_G.DBM) then
local db = Details.boss_mods_timers
for spell, timer_table in pairs (current_table_dbm) do
if (not db.encounter_timers_dbm [timer_table[1]]) then
timer_table.id = current_encounter
db.encounter_timers_dbm [timer_table[1]] = timer_table
end
end
end
if (BigWigs) then
local db = Details.boss_mods_timers
for timer_id, timer_table in pairs (current_table_bigwigs) do
if (not db.encounter_timers_bw [timer_id]) then
timer_table.id = current_encounter
db.encounter_timers_bw [timer_id] = timer_table
end
end
end
end
current_encounter = false
wipe (current_table_dbm)
wipe (current_table_bigwigs)
end
end)
event_frame:RegisterEvent ("ENCOUNTER_START")
event_frame:RegisterEvent ("ENCOUNTER_END")
event_frame:RegisterEvent ("PLAYER_REGEN_ENABLED")
if (_G.DBM) then
local dbm_timer_callback = function (bar_type, id, msg, timer, icon, bartype, spellId, colorId, modid)
local spell = tostring (spellId)
if (spell and not current_table_dbm [spell]) then
current_table_dbm [spell] = {spell, id, msg, timer, icon, bartype, spellId, colorId, modid}
end
end
DBM:RegisterCallback ("DBM_TimerStart", dbm_timer_callback)
end
function Details:RegisterBigWigsCallBack()
if (BigWigsLoader) then
function Details:BigWigs_StartBar (event, module, spellid, bar_text, time, icon, ...)
spellid = tostring (spellid)
if (not current_table_bigwigs [spellid]) then
current_table_bigwigs [spellid] = {(type (module) == "string" and module) or (module and module.moduleName) or "", spellid or "", bar_text or "", time or 0, icon or ""}
end
end
if (BigWigsLoader.RegisterMessage) then
BigWigsLoader.RegisterMessage (Details, "BigWigs_StartBar")
end
end
end
Details.Schedules.NewTimer(5, Details.RegisterBigWigsCallBack, Details)
--Details:ScheduleTimer ("RegisterBigWigsCallBack", 5)
end