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; foreach (Player player in _log.PlayerList) { if (player.Account == ":Conjured Sword") { continue; } Statistics.FinalDefenses defenses = player.GetDefenses(_log, phaseIndex); WriteLine(new [] { player.Group.ToString(), player.Prof, 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 void CreateDPSTable(int phaseIndex) { PhaseData phase = _statistics.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) { Statistics.FinalDPS dps = _statistics.DpsAll[player][phaseIndex]; Statistics.FinalDefenses defense = _statistics.Defenses[player][phaseIndex]; Statistics.FinalDPS dpsBoss = _statistics.DpsTarget[_log.LegacyTarget][player][phaseIndex]; string deathString = defense.DeadCount.ToString(); string deadthTooltip = ""; if (defense.DeadCount > 0) { TimeSpan deathDuration = TimeSpan.FromMilliseconds(defense.DeadDuration); deadthTooltip = deathDuration.TotalSeconds + " seconds dead, " + (100.0 - Math.Round((deathDuration.TotalMilliseconds / phase.GetDuration()) * 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.TrimStart(':'), 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++; } }
private void calculateDefenses() { foreach (Player player in log.getPlayerList()) { Statistics.FinalDefenses[] phaseDefense = new Statistics.FinalDefenses[phases.Count]; for (int phaseIndex = 0; phaseIndex < phases.Count; phaseIndex++) { Statistics.FinalDefenses final = new Statistics.FinalDefenses(); PhaseData phase = phases[phaseIndex]; long start = phase.getStart() + log.getBossData().getFirstAware(); long end = phase.getEnd() + log.getBossData().getFirstAware(); List <DamageLog> damageLogs = player.getDamageTakenLogs(log, phase.getStart(), phase.getEnd()); int instID = player.getInstid(); final.damageTaken = damageLogs.Select(x => (long)x.getDamage()).Sum(); final.blockedCount = 0; final.invulnedCount = 0; final.damageInvulned = 0; final.evadedCount = 0; final.damageBarrier = 0; foreach (DamageLog log in damageLogs.Where(x => x.getResult() == ParseEnum.Result.Block)) { final.blockedCount++; } foreach (DamageLog log in damageLogs.Where(x => x.getResult() == ParseEnum.Result.Absorb)) { final.invulnedCount++; final.damageInvulned += log.getDamage(); } foreach (DamageLog log in damageLogs.Where(x => x.getResult() == ParseEnum.Result.Evade)) { final.evadedCount++; } foreach (DamageLog log in damageLogs.Where(x => x.isShields() == 1)) { final.damageBarrier += log.getDamage(); } phaseDefense[phaseIndex] = final; } statistics.defenses[player] = phaseDefense; } }
public JsonDefenses(Statistics.FinalDefenses 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; }
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; foreach (Player player in _log.PlayerList) { Statistics.FinalDefenses defenses = _statistics.Defenses[player][phaseIndex]; Statistics.FinalStatsAll stats = _statistics.StatsAll[player][phaseIndex]; WriteLine(new [] { player.Group.ToString(), player.Prof, player.Character, defenses.DamageTaken.ToString(), defenses.DamageBarrier.ToString(), defenses.BlockedCount.ToString(), defenses.InvulnedCount.ToString(), defenses.EvadedCount.ToString(), stats.DodgeCount.ToString() }); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
public static List <object> GetDefenseStatData(Statistics.FinalDefenses defenses, PhaseData phase) { List <object> data = new List <object> { defenses.DamageTaken, defenses.DamageBarrier, defenses.BlockedCount, defenses.InvulnedCount, defenses.InterruptedCount, defenses.EvadedCount, defenses.DodgeCount }; if (defenses.DownDuration > 0) { TimeSpan downDuration = TimeSpan.FromMilliseconds(defenses.DownDuration); data.Add(defenses.DownCount); data.Add(downDuration.TotalSeconds + " seconds downed, " + Math.Round((downDuration.TotalMilliseconds / phase.GetDuration()) * 100, 1) + "% Downed"); } else { data.Add(0); data.Add("0% downed"); } if (defenses.DeadDuration > 0) { TimeSpan deathDuration = TimeSpan.FromMilliseconds(defenses.DeadDuration); data.Add(defenses.DeadCount); data.Add(deathDuration.TotalSeconds + " seconds dead, " + (100.0 - Math.Round((deathDuration.TotalMilliseconds / phase.GetDuration()) * 100, 1)) + "% Alive"); } else { data.Add(0); data.Add("100% Alive"); } return(data); }