private void CreateDPSTable(int phaseIndex) { PhaseData phase = _phases[phaseIndex]; WriteLine(new[] { "Sub Group", "Profession", "Role", "Name", "Account", "WepSet1_1", "WepSet1_2", "WepSet2_1", "WepSet2_2", "Boss DPS", "Boss DMG", "Boss Power DPS", "Boss Power DMG", "Boss Condi DPS", "Boss Condi DMG", "All DPS", "All DMG", "All Power DPS", "All Power DMG", "All Condi DPS", "All Condi DMG", "Times Downed", "Time Died", "Percent Alive" }); int count = 0; foreach (Player player in _log.PlayerList) { FinalDPS dps = player.GetDPSAll(_log, phaseIndex); FinalDefensesAll defense = player.GetDefenses(_log, phaseIndex); FinalDPS dpsBoss = player.GetDPSTarget(_log, phaseIndex, _legacyTarget); string deathString = defense.DeadCount.ToString(); string deadthTooltip = ""; if (defense.DeadCount > 0) { var deathDuration = TimeSpan.FromMilliseconds(defense.DeadDuration); deadthTooltip = deathDuration.TotalSeconds + " seconds dead, " + (100.0 - Math.Round((deathDuration.TotalMilliseconds / phase.DurationInMS) * 100, 1)) + "% Alive"; } string[] wep = player.GetWeaponsArray(_log); string build = ""; if (player.Condition > 0) { build += " Condi:" + player.Condition; } if (player.Concentration > 0) { build += " Concentration:" + player.Concentration; } if (player.Healing > 0) { build += " Healing:" + player.Healing; } if (player.Toughness > 0) { build += " Toughness:" + player.Toughness; } WriteLine(new[] { player.Group.ToString(), player.Prof, build, player.Character, player.Account, wep[0], wep[1], wep[2], wep[3], dpsBoss.Dps.ToString(), dpsBoss.Damage.ToString(), dpsBoss.PowerDps.ToString(), dpsBoss.PowerDamage.ToString(), dpsBoss.CondiDps.ToString(), dpsBoss.CondiDamage.ToString(), dps.Dps.ToString(), dps.Damage.ToString(), dps.PowerDps.ToString(), dps.PowerDamage.ToString(), dps.CondiDps.ToString(), dps.CondiDamage.ToString(), defense.DownCount.ToString(), deathString, deadthTooltip }); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
public static List <List <object> > BuildDefenseData(ParsedEvtcLog log, PhaseData phase) { var list = new List <List <object> >(); foreach (AbstractSingleActor actor in log.Friendlies) { FinalDefensesAll defenses = actor.GetDefenseStats(log, phase.Start, phase.End); list.Add(GetDefenseStatData(defenses, phase)); } return(list); }
public static List <List <object> > BuildDefenseData(ParsedEvtcLog log, PhaseData phase) { var list = new List <List <object> >(); foreach (Player player in log.PlayerList) { FinalDefensesAll defenses = player.GetDefenseStats(log, phase.Start, phase.End); list.Add(GetDefenseStatData(defenses, phase)); } return(list); }
public static List <List <object> > BuildDefenseData(ParsedLog log, int phaseIndex) { var list = new List <List <object> >(); PhaseData phase = log.FightData.GetPhases(log)[phaseIndex]; foreach (Player player in log.PlayerList) { FinalDefensesAll defenses = player.GetDefenses(log, phaseIndex); list.Add(PhaseDto.GetDefenseStatData(defenses, phase)); } return(list); }
public JsonDefensesAll(FinalDefensesAll defenses) { DamageTaken = defenses.DamageTaken; BlockedCount = defenses.BlockedCount; DodgeCount = defenses.DodgeCount; EvadedCount = defenses.EvadedCount; InvulnedCount = defenses.InvulnedCount; DamageInvulned = defenses.DamageInvulned; DamageBarrier = defenses.DamageBarrier; InterruptedCount = defenses.InterruptedCount; DownCount = defenses.DownCount; DownDuration = defenses.DownDuration; DeadCount = defenses.DeadCount; DeadDuration = defenses.DeadDuration; DcCount = defenses.DcCount; DcDuration = defenses.DcDuration; }
public static DmgDistributionDto BuildDMGTakenDistData(ParsedEvtcLog log, AbstractSingleActor p, PhaseData phase, Dictionary <long, SkillItem> usedSkills, Dictionary <long, Buff> usedBuffs) { var dto = new DmgDistributionDto { Distribution = new List <object[]>() }; FinalDefensesAll incomingDamageStats = p.GetDefenseStats(log, phase.Start, phase.End); IReadOnlyList <AbstractHealthDamageEvent> damageLogs = p.GetDamageTakenEvents(null, log, phase.Start, phase.End); var damageLogsBySkill = damageLogs.GroupBy(x => x.Skill).ToDictionary(x => x.Key, x => x.ToList()); dto.ContributedDamage = incomingDamageStats.DamageTaken; dto.ContributedShieldDamage = incomingDamageStats.DamageBarrier; foreach (KeyValuePair <SkillItem, List <AbstractHealthDamageEvent> > pair in damageLogsBySkill) { dto.Distribution.Add(GetDMGDtoItem(pair.Key, pair.Value, null, usedSkills, usedBuffs, log.Buffs, phase)); } return(dto); }
internal JsonDefensesAll(FinalDefensesAll defenses) { DamageTaken = defenses.DamageTaken; BreakbarDamageTaken = defenses.BreakbarDamageTaken; BlockedCount = defenses.BlockedCount; DodgeCount = defenses.DodgeCount; MissedCount = defenses.MissedCount; EvadedCount = defenses.EvadedCount; InvulnedCount = defenses.InvulnedCount; DamageBarrier = defenses.DamageBarrier; InterruptedCount = defenses.InterruptedCount; DownCount = defenses.DownCount; DownDuration = defenses.DownDuration; DeadCount = defenses.DeadCount; DeadDuration = defenses.DeadDuration; DcCount = defenses.DcCount; DcDuration = defenses.DcDuration; }
public static JsonDefensesAll BuildJsonDefensesAll(FinalDefensesAll defenses) { var jsonDefensesAll = new JsonDefensesAll(); jsonDefensesAll.DamageTaken = defenses.DamageTaken; jsonDefensesAll.BreakbarDamageTaken = defenses.BreakbarDamageTaken; jsonDefensesAll.BlockedCount = defenses.BlockedCount; jsonDefensesAll.DodgeCount = defenses.DodgeCount; jsonDefensesAll.MissedCount = defenses.MissedCount; jsonDefensesAll.EvadedCount = defenses.EvadedCount; jsonDefensesAll.InvulnedCount = defenses.InvulnedCount; jsonDefensesAll.DamageBarrier = defenses.DamageBarrier; jsonDefensesAll.InterruptedCount = defenses.InterruptedCount; jsonDefensesAll.DownCount = defenses.DownCount; jsonDefensesAll.DownDuration = defenses.DownDuration; jsonDefensesAll.DeadCount = defenses.DeadCount; jsonDefensesAll.DeadDuration = defenses.DeadDuration; jsonDefensesAll.DcCount = defenses.DcCount; jsonDefensesAll.DcDuration = defenses.DcDuration; return(jsonDefensesAll); }
private void CreateDefTable(int phaseIndex) { //generate defstats table WriteLine(new[] { "Sub Group", "Profession", "Name", "DMG Taken", "DMG Barrier", "Blocked", "Invulned", "Evaded", "Dodges" }); int count = 0; PhaseData phase = _phases[phaseIndex]; foreach (Player player in _noFakePlayers) { FinalDefensesAll defenses = player.GetDefenseStats(_log, phase.Start, phase.End); WriteLine(new[] { player.Group.ToString(), player.Spec.ToString(), player.Character, defenses.DamageTaken.ToString(), defenses.DamageBarrier.ToString(), defenses.BlockedCount.ToString(), defenses.InvulnedCount.ToString(), defenses.EvadedCount.ToString(), defenses.DodgeCount.ToString() }); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
private static List <object> GetDefenseStatData(FinalDefensesAll defenses, PhaseData phase) { var data = new List <object> { defenses.DamageTaken, defenses.DamageBarrier, defenses.MissedCount, defenses.InterruptedCount, defenses.InvulnedCount, defenses.EvadedCount, defenses.BlockedCount, defenses.DodgeCount, }; if (defenses.DownDuration > 0) { var downDuration = TimeSpan.FromMilliseconds(defenses.DownDuration); data.Add(defenses.DownCount); data.Add(downDuration.TotalSeconds + " seconds downed, " + Math.Round((downDuration.TotalMilliseconds / phase.DurationInMS) * 100, 1) + "% Downed"); } else { data.Add(0); data.Add("0% downed"); } if (defenses.DeadCount > 0) { var deathDuration = TimeSpan.FromMilliseconds(defenses.DeadDuration); data.Add(defenses.DeadCount); data.Add(deathDuration.TotalSeconds + " seconds dead, " + (100.0 - Math.Round((deathDuration.TotalMilliseconds / phase.DurationInMS) * 100, 1)) + "% Alive"); } else { data.Add(0); data.Add("100% Alive"); } return(data); }