Ejemplo n.º 1
0
        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++;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 4
0
 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++;
            }
        }
Ejemplo n.º 6
0
        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);
        }