public static List <List <object> > BuildDMGStatsData(ParsedLog log, int phaseIndex) { var list = new List <List <object> >(); foreach (Player player in log.PlayerList) { FinalGameplayStatsAll stats = player.GetGameplayStats(log, phaseIndex); list.Add(PhaseDto.GetDMGStatData(stats)); } return(list); }
public static List <List <object> > BuildDMGStatsData(ParsedEvtcLog log, PhaseData phase) { var list = new List <List <object> >(); foreach (Player player in log.PlayerList) { FinalGameplayStatsAll stats = player.GetGameplayStats(log, phase.Start, phase.End); list.Add(GetDMGStatData(stats)); } return(list); }
public static List <List <object> > BuildDMGStatsData(ParsedEvtcLog log, PhaseData phase) { var list = new List <List <object> >(); foreach (AbstractSingleActor actor in log.Friendlies) { FinalGameplayStatsAll stats = actor.GetGameplayStats(log, phase.Start, phase.End); list.Add(GetDMGStatData(stats)); } return(list); }
public JsonGameplayStats(FinalGameplayStatsAll stats) { DirectDamageCount = stats.DirectDamageCount; CritableDirectDamageCount = stats.CritableDirectDamageCount; CriticalRate = stats.CriticalCount; CriticalDmg = stats.CriticalDmg; FlankingRate = stats.FlankingCount; GlanceRate = stats.GlanceCount; Missed = stats.Missed; Interrupts = stats.Interrupts; Invulned = stats.Invulned; }
public JsonGameplayStatsAll(FinalGameplayStatsAll stats) : base(stats) { Wasted = stats.Wasted; TimeWasted = stats.TimeWasted; Saved = stats.Saved; TimeSaved = stats.TimeSaved; StackDist = stats.StackDist; AvgBoons = stats.AvgBoons; AvgActiveBoons = stats.AvgActiveBoons; AvgConditions = stats.AvgConditions; AvgActiveConditions = stats.AvgActiveConditions; SwapCount = stats.SwapCount; }
private void CreateBossDMGStatsTable(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; foreach (Player player in _log.PlayerList) { if (player.IsFakeActor) { continue; } FinalGameplayStatsAll stats = player.GetGameplayStats(_log, phaseIndex); FinalGameplayStats statsBoss = player.GetGameplayStats(_log, phaseIndex, _legacyTarget); Dictionary <string, List <DamageModifierStat> > damageMods = player.GetDamageModifierStats(_log, _legacyTarget); var scholar = new DamageModifierStat(0, 0, 0, 0); var moving = new DamageModifierStat(0, 0, 0, 0); if (damageMods.TryGetValue("Scholar Rune", out List <DamageModifierStat> schoDict)) { scholar = schoDict[phaseIndex]; } if (damageMods.TryGetValue("Moving Bonus", out List <DamageModifierStat> moveDict)) { moving = moveDict[phaseIndex]; } WriteLine(new[] { player.Group.ToString(), player.Prof, player.Character, Math.Round((double)(statsBoss.CriticalCount) / statsBoss.CritableDirectDamageCount * 100, 1).ToString(), statsBoss.CriticalCount.ToString(), statsBoss.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(statsBoss.FlankingCount / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.FlankingCount.ToString(), Math.Round(statsBoss.GlanceCount / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.GlanceCount.ToString(), Math.Round(statsBoss.Missed / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.Missed.ToString(), statsBoss.DirectDamageCount.ToString(), statsBoss.Interrupts.ToString(), statsBoss.Invulned.ToString(), stats.TimeWasted.ToString(), stats.TimeSaved.ToString(), stats.SwapCount.ToString() }); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
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) { FinalGameplayStatsAll stats = player.GetGameplayStats(_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)(stats.CriticalCount) / stats.CritableDirectDamageCount * 100, 1).ToString(), stats.CriticalCount.ToString(), stats.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(stats.FlankingCount / (double)stats.ConnectedDirectDamageCount * 100, 1).ToString(), stats.FlankingCount.ToString(), Math.Round(stats.GlanceCount / (double)stats.ConnectedDirectDamageCount * 100, 1).ToString(), stats.GlanceCount.ToString(), Math.Round(stats.Missed / (double)stats.DirectDamageCount * 100, 1).ToString(), stats.Missed.ToString(), stats.DirectDamageCount.ToString(), stats.Interrupts.ToString(), stats.Invulned.ToString(), stats.TimeWasted.ToString(), stats.TimeSaved.ToString(), stats.SwapCount.ToString() }); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
// helper methods public static List <object> GetDMGStatData(FinalGameplayStatsAll stats) { List <object> data = GetDMGTargetStatData(stats); data.AddRange(new List <object> { // commons stats.TimeWasted, // 9 stats.Wasted, // 10 stats.TimeSaved, // 11 stats.Saved, // 12 stats.SwapCount, // 13 Math.Round(stats.StackDist, 2) // 14 }); return(data); }
public static JsonGameplayStatsAll BuildJsonGameplayStatsAll(FinalGameplayStatsAll stats) { var jsonGameplayStatsAll = new JsonGameplayStatsAll(); FillJsonGamePlayStats(jsonGameplayStatsAll, stats); jsonGameplayStatsAll.Wasted = stats.Wasted; jsonGameplayStatsAll.TimeWasted = stats.TimeWasted; jsonGameplayStatsAll.Saved = stats.Saved; jsonGameplayStatsAll.TimeSaved = stats.TimeSaved; jsonGameplayStatsAll.StackDist = stats.StackDist; jsonGameplayStatsAll.DistToCom = stats.DistToCom; jsonGameplayStatsAll.AvgBoons = stats.AvgBoons; jsonGameplayStatsAll.AvgActiveBoons = stats.AvgActiveBoons; jsonGameplayStatsAll.AvgConditions = stats.AvgConditions; jsonGameplayStatsAll.AvgActiveConditions = stats.AvgActiveConditions; jsonGameplayStatsAll.SwapCount = stats.SwapCount; return(jsonGameplayStatsAll); }
// helper methods private static List <object> GetDMGStatData(FinalGameplayStatsAll stats) { List <object> data = GetDMGTargetStatData(stats); data.AddRange(new List <object> { // commons stats.TimeWasted, // 14 stats.Wasted, // 15 stats.TimeSaved, // 16 stats.Saved, // 17 stats.SwapCount, // 18 Math.Round(stats.StackDist, 2), // 19 Math.Round(stats.DistToCom, 2) // 20 }); return(data); }
public static JsonGameplayStatsAll BuildJsonGameplayStatsAll(FinalGameplayStatsAll stats) { 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 }; FillJsonGamePlayStats(jsonGameplayStatsAll, stats); return(jsonGameplayStatsAll); }
internal JsonGameplayStats(FinalGameplayStatsAll stats) : this(stats as FinalGameplayStats) { }