public static JsonGameplayStats BuildJsonGameplayStats(FinalOffensiveStats stats) { var jsonGameplayStats = new JsonGameplayStats(); FillJsonGamePlayStats(jsonGameplayStats, stats); return(jsonGameplayStats); }
private static List <object> GetOffensiveStatData(FinalOffensiveStats stats) { var data = new List <object> { stats.DirectDamageCount, // 0 stats.CritableDirectDamageCount, // 1 stats.CriticalCount, // 2 stats.CriticalDmg, // 3 stats.FlankingCount, // 4 stats.GlanceCount, // 5 stats.Missed, // 6 stats.Interrupts, // 7 stats.Invulned, // 8 stats.Evaded, // 9 stats.Blocked, // 10 stats.ConnectedDirectDamageCount, // 11 stats.Killed, // 12 stats.Downed, // 13 stats.AgainstMovingCount, // 14 stats.ConnectedDamageCount, // 15 stats.TotalDamageCount, // 16 }; return(data); }
public static List <List <object> > BuildOffensiveStatsData(ParsedEvtcLog log, PhaseData phase) { var list = new List <List <object> >(); foreach (AbstractSingleActor actor in log.Friendlies) { FinalOffensiveStats stats = actor.GetOffensiveStats(null, log, phase.Start, phase.End); list.Add(GetOffensiveStatData(stats)); } return(list); }
private void CreateDmgStatsTable(int phaseIndex) { //generate dmgstats table WriteLine(new[] { "Sub Group", "Profession", "Name", "Critical%", "Critical hits", "Critical DMG", "Scholar%", "Scholar hits", "Scholar DMG", "Scholar % increase", "Moving%", "Moving Hits", "Moving DMG", "Moving % increase", "Flanking%", "Flanking hits", "Glancing%", "Glancing Hits", "Blind%", "Blind Hits", "Total Hits", "Hits to Interupt", "Hits Invulned", "Time wasted", "Time saved", "Weapon Swaps" }); int count = 0; PhaseData phase = _phases[phaseIndex]; foreach (Player player in _noFakePlayers) { FinalGameplayStats gameplayStats = player.GetGameplayStats(_log, phase.Start, phase.End); FinalOffensiveStats offStats = player.GetOffensiveStats(null, _log, phase.Start, phase.End); IReadOnlyDictionary <string, DamageModifierStat> damageMods = player.GetDamageModifierStats(_legacyTarget, _log, phase.Start, phase.End); var scholar = new DamageModifierStat(0, 0, 0, 0); var moving = new DamageModifierStat(0, 0, 0, 0); if (damageMods.TryGetValue("Scholar Rune", out DamageModifierStat schoDict)) { scholar = schoDict; } if (damageMods.TryGetValue("Moving Bonus", out DamageModifierStat moveDict)) { moving = moveDict; } WriteLine(new[] { player.Group.ToString(), player.Spec.ToString(), player.Character, Math.Round((double)(offStats.CriticalCount) / offStats.CritableDirectDamageCount * 100, 1).ToString(), offStats.CriticalCount.ToString(), offStats.CriticalDmg.ToString(), Math.Round((double)(scholar.HitCount) / scholar.TotalHitCount * 100, 1).ToString(), scholar.HitCount.ToString(), scholar.DamageGain.ToString(), Math.Round(100.0 * (scholar.TotalDamage / (scholar.TotalDamage - scholar.DamageGain) - 1.0), 3).ToString(), Math.Round((double)(moving.HitCount) / moving.TotalHitCount * 100, 1).ToString(), moving.HitCount.ToString(), moving.DamageGain.ToString(), Math.Round(100.0 * (moving.TotalDamage / (moving.TotalDamage - moving.DamageGain) - 1.0), 3).ToString(), Math.Round(offStats.FlankingCount / (double)offStats.ConnectedDirectDamageCount * 100, 1).ToString(), offStats.FlankingCount.ToString(), Math.Round(offStats.GlanceCount / (double)offStats.ConnectedDirectDamageCount * 100, 1).ToString(), offStats.GlanceCount.ToString(), Math.Round(offStats.Missed / (double)offStats.DirectDamageCount * 100, 1).ToString(), offStats.Missed.ToString(), offStats.DirectDamageCount.ToString(), offStats.Interrupts.ToString(), offStats.Invulned.ToString(), gameplayStats.TimeWasted.ToString(), gameplayStats.TimeSaved.ToString(), gameplayStats.SwapCount.ToString() }); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
public static List <List <List <object> > > BuildOffensiveStatsTargetsData(ParsedEvtcLog log, PhaseData phase) { var list = new List <List <List <object> > >(); foreach (AbstractSingleActor actor in log.Friendlies) { var playerData = new List <List <object> >(); foreach (AbstractSingleActor target in phase.Targets) { FinalOffensiveStats statsTarget = actor.GetOffensiveStats(target, log, phase.Start, phase.End); playerData.Add(GetOffensiveStatData(statsTarget)); } list.Add(playerData); } return(list); }
public static JsonGameplayStatsAll BuildJsonGameplayStatsAll(FinalGameplayStats stats, FinalOffensiveStats offStats) { var jsonGameplayStatsAll = new JsonGameplayStatsAll { Wasted = stats.Wasted, TimeWasted = stats.TimeWasted, Saved = stats.Saved, TimeSaved = stats.TimeSaved, StackDist = stats.StackDist, DistToCom = stats.DistToCom, AvgBoons = stats.AvgBoons, AvgActiveBoons = stats.AvgActiveBoons, AvgConditions = stats.AvgConditions, AvgActiveConditions = stats.AvgActiveConditions, SwapCount = stats.SwapCount, SkillCastUptime = stats.SkillCastUptime, SkillCastUptimeNoAA = stats.SkillCastUptimeNoAA, }; FillJsonGamePlayStats(jsonGameplayStatsAll, offStats); return(jsonGameplayStatsAll); }
private static void FillJsonGamePlayStats(JsonGameplayStats jsonGameplayStats, FinalOffensiveStats stats) { jsonGameplayStats.TotalDamageCount = stats.TotalDamageCount; jsonGameplayStats.DirectDamageCount = stats.DirectDamageCount; jsonGameplayStats.ConnectedDirectDamageCount = stats.ConnectedDirectDamageCount; jsonGameplayStats.ConnectedDamageCount = stats.ConnectedDamageCount; jsonGameplayStats.CritableDirectDamageCount = stats.CritableDirectDamageCount; jsonGameplayStats.CriticalRate = stats.CriticalCount; jsonGameplayStats.CriticalDmg = stats.CriticalDmg; jsonGameplayStats.FlankingRate = stats.FlankingCount; jsonGameplayStats.GlanceRate = stats.GlanceCount; jsonGameplayStats.AgainstMovingRate = stats.AgainstMovingCount; jsonGameplayStats.Missed = stats.Missed; jsonGameplayStats.Blocked = stats.Blocked; jsonGameplayStats.Evaded = stats.Evaded; jsonGameplayStats.Interrupts = stats.Interrupts; jsonGameplayStats.Invulned = stats.Invulned; jsonGameplayStats.Killed = stats.Killed; jsonGameplayStats.Downed = stats.Downed; }