Esempio n. 1
0
        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++;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 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++;
            }
        }
Esempio n. 10
0
        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);
        }