コード例 #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++;
            }
        }
コード例 #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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #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;
 }
コード例 #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);
        }
コード例 #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;
 }
コード例 #8
0
        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);
        }
コード例 #9
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;
            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++;
            }
        }
コード例 #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);
        }