added trials saving part
René Welbers [01-27-16 - 13:02]
diff --git a/PanicModeCombatAnalyzer.lua b/PanicModeCombatAnalyzer.lua
index 70ed3f6..2b4663d 100644
--- a/PanicModeCombatAnalyzer.lua
+++ b/PanicModeCombatAnalyzer.lua
@@ -9,13 +9,17 @@ PanicModeCombatAnalyzer.author = 'silentgecko, deevilius'
PanicModeCombatAnalyzer.savedVarsName = 'PMCAVars'
PanicModeCombatAnalyzer.variables = {
- fights = {}
+ fights = {},
+ groups = {},
+ trials = {},
}
PanicModeCombatAnalyzer.tempVars = {
lastSave = 0,
inFight = false,
lastDps = 0,
lastDpsCount = 0,
+ trialRunning = false,
+ trialId = 0,
}
-- grab ftc from global
@@ -32,12 +36,47 @@ function PanicModeCombatAnalyzer.Initialize(event, addonName)
self.savedVariables = ZO_SavedVars:New(self.savedVarsName, self.versionDB, nil, self.variables)
EVENT_MANAGER:RegisterForEvent(self.name, EVENT_PLAYER_COMBAT_STATE, self.OnPlayerCombatState)
+
+ --trials
+ EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_START", EVENT_RAID_TRIAL_STARTED, self.saveTrials)
+ EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_STOP", EVENT_RAID_TRIAL_COMPLETE, self.saveTrials)
+ EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_STOP", EVENT_RAID_TRIAL_FAILED, self.saveTrials)
+ EVENT_MANAGER:RegisterForEvent(self.name .. "_TRIAL_STOP_GROUP", EVENT_GROUP_MEMBER_LEFT, self.saveTrialsFromGroup)
end
function PanicModeCombatAnalyzer.OnPlayerCombatState(event, inCombat)
PanicModeCombatAnalyzer.tempVars.inFight = inCombat
end
+function PanicModeCombatAnalyzer.saveTrials(event, raidName)
+ local self = PanicModeCombatAnalyzer
+ local timeStamp = GetTimeStamp()
+ local currentRaid = GetCurrentParticipatingRaidId()
+ local eventStr = 'start'
+ if event == 131134 or event == '131134' then
+ eventStr = 'start'
+ self.tempVars.trialRunning = true
+ self.tempVars.trialId = currentRaid
+ else
+ eventStr = 'stop'
+ end
+ self.savedVariables.trials[currentRaid] = self.savedVariables.trials[currentRaid] or {}
+ self.savedVariables.trials[currentRaid][timeStamp] = eventStr
+end
+
+function PanicModeCombatAnalyzer.saveTrialsFromGroup(_, _, reason)
+ local self = PanicModeCombatAnalyzer
+ local timeStamp = GetTimeStamp()
+ local currentRaid = self.tempVars.trialId -- we use our tempvar, because when you zone out of trial, and still in grp, raidid from api is 0
+ local eventStr = 'stop'
+
+ if (reason == GROUP_LEAVE_REASON_DISBAND or reason == GROUP_LEAVE_REASON_DESTROYED) and currentRaid > 0 and self.tempVars.trialRunning then
+ self.savedVariables.trials[currentRaid] = self.savedVariables.trials[currentRaid] or {}
+ self.savedVariables.trials[currentRaid][timeStamp] = eventStr
+ self.tempVars.trialRunning = false
+ end
+end
+
--[[
* Overwrite from origin FTC
* Update the mini DPS meter
@@ -62,8 +101,8 @@ function FTC.Stats:Update()
local secs = ZO_FormatTime( dtime , SI_TIME_FORMAT_TIMESTAMP)
-- Compute player statistics
- local dps = FTC.DisplayNumber( FTC.Stats.damage / math.max(time,1) )
- local hps = FTC.DisplayNumber( FTC.Stats.healing / math.max(time,1) )
+ local dps = FTC.DisplayNumber( FTC.Stats.damage / math.max(time, 1) )
+ local hps = FTC.DisplayNumber( FTC.Stats.healing / math.max(time, 1) )
-- added saving vars
local lastSave = self.tempVars.lastSave
@@ -74,11 +113,11 @@ function FTC.Stats:Update()
local dpsForSaving = (FTC.Stats.damage / math.max(time,1))
if self.tempVars.lastDps == dpsForSaving then
- self.tempVars.lastDpsCount = self.tempVars.lastDpsCount+1
+ self.tempVars.lastDpsCount = self.tempVars.lastDpsCount + 1
else
self.tempVars.lastDpsCount = 0
end
- self.tempVars.lastDps = dpsForSaving
+ self.tempVars.lastDps = dpsForSaving
-- only save if we don't get three times the same amount of dps, and lastSavediff is more than one second ago and we're in fight
if self.tempVars.lastDpsCount <= 2 and lastSaveDiff >= 1000 and self.tempVars.inFight then