public JsonBuffDamageModifierItem(Statistics.DamageModifierData extraData) { HitCount = extraData.HitCount; TotalHitCount = extraData.TotalHitCount; DamageGain = extraData.DamageGain; TotalDamage = extraData.TotalDamage; }
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.Account == ":Conjured Sword") { continue; } Statistics.FinalStatsAll stats = player.GetStatsAll(_log, phaseIndex); Statistics.FinalStats statsBoss = player.GetStatsTarget(_log, phaseIndex, _log.LegacyTarget); Dictionary <string, List <Statistics.DamageModifierData> > damageMods = player.GetDamageModifierData(_log, _log.LegacyTarget); Statistics.DamageModifierData scholar = new Statistics.DamageModifierData(0, 0, 0, 0); Statistics.DamageModifierData moving = new Statistics.DamageModifierData(0, 0, 0, 0); if (damageMods.TryGetValue("Scholar Rune", out var schoDict)) { scholar = schoDict[phaseIndex]; } if (damageMods.TryGetValue("Moving Bonus", out var moveDict)) { moving = moveDict[phaseIndex]; } WriteLine(new [] { player.Group.ToString(), player.Prof, player.Character, Math.Round((double)(statsBoss.CriticalRate) / statsBoss.CritableDirectDamageCount * 100, 1).ToString(), statsBoss.CriticalRate.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 / (double)(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 / (double)(moving.TotalDamage - moving.DamageGain) - 1.0), 3).ToString(), Math.Round(statsBoss.FlankingRate / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.FlankingRate.ToString(), Math.Round(statsBoss.GlanceRate / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.GlanceRate.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++; } }
public DamageModData(Player player, ParsedLog log, List <DamageModifier> listToUse, int phaseIndex) { Dictionary <string, List <Statistics.DamageModifierData> > dModData = player.GetDamageModifierData(log, null); List <PhaseData> phases = log.FightData.GetPhases(log); foreach (DamageModifier dMod in listToUse) { if (dModData.TryGetValue(dMod.Name, out var list)) { Statistics.DamageModifierData data = list[phaseIndex]; Data.Add(new object[] { data.HitCount, data.TotalHitCount, data.DamageGain, dMod.Multiplier ? data.TotalDamage : 0 }); } else { Data.Add(new object[] { 0, dMod.GetDamageLogs(player, log, null, phases[phaseIndex]).Count, 0, dMod.Multiplier ? dMod.GetTotalDamage(player, log, null, phaseIndex) : 0 }); } } PhaseData phase = log.FightData.GetPhases(log)[phaseIndex]; foreach (Target target in phase.Targets) { List <object[]> pTarget = new List <object[]>(); DataTarget.Add(pTarget); dModData = player.GetDamageModifierData(log, target); foreach (DamageModifier dMod in listToUse) { if (dModData.TryGetValue(dMod.Name, out var list)) { Statistics.DamageModifierData data = list[phaseIndex]; pTarget.Add(new object[] { data.HitCount, data.TotalHitCount, data.DamageGain, dMod.Multiplier ? data.TotalDamage : 0 }); } else { pTarget.Add(new object[] { 0, dMod.GetDamageLogs(player, log, target, phases[phaseIndex]).Count, 0, dMod.Multiplier ? dMod.GetTotalDamage(player, log, target, phaseIndex) : 0 }); } } } }