public static List <List <object> > BuildDMGStatsData(ParsedLog log, int phaseIndex)
        {
            var list = new List <List <object> >();

            foreach (Player player in log.PlayerList)
            {
                FinalGameplayStatsAll stats = player.GetGameplayStats(log, phaseIndex);
                list.Add(PhaseDto.GetDMGStatData(stats));
            }
            return(list);
        }
        public static List <List <object> > BuildDMGStatsData(ParsedEvtcLog log, PhaseData phase)
        {
            var list = new List <List <object> >();

            foreach (Player player in log.PlayerList)
            {
                FinalGameplayStatsAll stats = player.GetGameplayStats(log, phase.Start, phase.End);
                list.Add(GetDMGStatData(stats));
            }
            return(list);
        }
Example #3
0
        public static List <List <object> > BuildDMGStatsData(ParsedEvtcLog log, PhaseData phase)
        {
            var list = new List <List <object> >();

            foreach (AbstractSingleActor actor in log.Friendlies)
            {
                FinalGameplayStatsAll stats = actor.GetGameplayStats(log, phase.Start, phase.End);
                list.Add(GetDMGStatData(stats));
            }
            return(list);
        }
Example #4
0
 public JsonGameplayStats(FinalGameplayStatsAll stats)
 {
     DirectDamageCount         = stats.DirectDamageCount;
     CritableDirectDamageCount = stats.CritableDirectDamageCount;
     CriticalRate = stats.CriticalCount;
     CriticalDmg  = stats.CriticalDmg;
     FlankingRate = stats.FlankingCount;
     GlanceRate   = stats.GlanceCount;
     Missed       = stats.Missed;
     Interrupts   = stats.Interrupts;
     Invulned     = stats.Invulned;
 }
Example #5
0
 public JsonGameplayStatsAll(FinalGameplayStatsAll stats) : base(stats)
 {
     Wasted              = stats.Wasted;
     TimeWasted          = stats.TimeWasted;
     Saved               = stats.Saved;
     TimeSaved           = stats.TimeSaved;
     StackDist           = stats.StackDist;
     AvgBoons            = stats.AvgBoons;
     AvgActiveBoons      = stats.AvgActiveBoons;
     AvgConditions       = stats.AvgConditions;
     AvgActiveConditions = stats.AvgActiveConditions;
     SwapCount           = stats.SwapCount;
 }
Example #6
0
        private void CreateBossDMGStatsTable(int phaseIndex)
        {
            //generate dmgstats table=
            WriteLine(new[] { "Sub Group", "Profession", "Name",
                              "Critical%", "Critical hits", "Critical DMG",
                              "Scholar%", "Scholar hits", "Scholar DMG", "Scholar % increase",
                              "Moving%", "Moving Hits", "Moving DMG", "Moving % increase",
                              "Flanking%", "Flanking hits",
                              "Glancing%", "Glancing Hits",
                              "Blind%", "Blind Hits",
                              "Total Hits",
                              "Hits to Interupt", "Hits Invulned", "Time wasted", "Time saved", "Weapon Swaps" });
            int count = 0;

            foreach (Player player in _log.PlayerList)
            {
                if (player.IsFakeActor)
                {
                    continue;
                }
                FinalGameplayStatsAll stats     = player.GetGameplayStats(_log, phaseIndex);
                FinalGameplayStats    statsBoss = player.GetGameplayStats(_log, phaseIndex, _legacyTarget);
                Dictionary <string, List <DamageModifierStat> > damageMods = player.GetDamageModifierStats(_log, _legacyTarget);
                var scholar = new DamageModifierStat(0, 0, 0, 0);
                var moving  = new DamageModifierStat(0, 0, 0, 0);
                if (damageMods.TryGetValue("Scholar Rune", out List <DamageModifierStat> schoDict))
                {
                    scholar = schoDict[phaseIndex];
                }
                if (damageMods.TryGetValue("Moving Bonus", out List <DamageModifierStat> moveDict))
                {
                    moving = moveDict[phaseIndex];
                }

                WriteLine(new[] { player.Group.ToString(), player.Prof, player.Character,
                                  Math.Round((double)(statsBoss.CriticalCount) / statsBoss.CritableDirectDamageCount * 100, 1).ToString(), statsBoss.CriticalCount.ToString(), statsBoss.CriticalDmg.ToString(),
                                  Math.Round((double)(scholar.HitCount) / scholar.TotalHitCount * 100, 1).ToString(), scholar.HitCount.ToString(), scholar.DamageGain.ToString(), Math.Round(100.0 * (scholar.TotalDamage / (scholar.TotalDamage - scholar.DamageGain) - 1.0), 3).ToString(),
                                  Math.Round((double)(moving.HitCount) / moving.TotalHitCount * 100, 1).ToString(), moving.HitCount.ToString(), moving.DamageGain.ToString(), Math.Round(100.0 * (moving.TotalDamage / (moving.TotalDamage - moving.DamageGain) - 1.0), 3).ToString(),
                                  Math.Round(statsBoss.FlankingCount / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.FlankingCount.ToString(),
                                  Math.Round(statsBoss.GlanceCount / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.GlanceCount.ToString(),
                                  Math.Round(statsBoss.Missed / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.Missed.ToString(),
                                  statsBoss.DirectDamageCount.ToString(),
                                  statsBoss.Interrupts.ToString(), statsBoss.Invulned.ToString(), stats.TimeWasted.ToString(), stats.TimeSaved.ToString(), stats.SwapCount.ToString() });
                count++;
            }
            while (count < 15)//so each graph has equal spacing
            {
                NewLine();
                count++;
            }
        }
        private void CreateDmgStatsTable(int phaseIndex)
        {
            //generate dmgstats table
            WriteLine(new[] { "Sub Group", "Profession", "Name",
                              "Critical%", "Critical hits", "Critical DMG",
                              "Scholar%", "Scholar hits", "Scholar DMG", "Scholar % increase",
                              "Moving%", "Moving Hits", "Moving DMG", "Moving % increase",
                              "Flanking%", "Flanking hits",
                              "Glancing%", "Glancing Hits",
                              "Blind%", "Blind Hits",
                              "Total Hits",
                              "Hits to Interupt", "Hits Invulned", "Time wasted", "Time saved", "Weapon Swaps" });
            int       count = 0;
            PhaseData phase = _phases[phaseIndex];

            foreach (Player player in _noFakePlayers)
            {
                FinalGameplayStatsAll stats = player.GetGameplayStats(_log, phase.Start, phase.End);
                IReadOnlyDictionary <string, DamageModifierStat> damageMods = player.GetDamageModifierStats(_legacyTarget, _log, phase.Start, phase.End);
                var scholar = new DamageModifierStat(0, 0, 0, 0);
                var moving  = new DamageModifierStat(0, 0, 0, 0);
                if (damageMods.TryGetValue("Scholar Rune", out DamageModifierStat schoDict))
                {
                    scholar = schoDict;
                }
                if (damageMods.TryGetValue("Moving Bonus", out DamageModifierStat moveDict))
                {
                    moving = moveDict;
                }

                WriteLine(new[] { player.Group.ToString(), player.Spec.ToString(), player.Character,
                                  Math.Round((double)(stats.CriticalCount) / stats.CritableDirectDamageCount * 100, 1).ToString(), stats.CriticalCount.ToString(), stats.CriticalDmg.ToString(),
                                  Math.Round((double)(scholar.HitCount) / scholar.TotalHitCount * 100, 1).ToString(), scholar.HitCount.ToString(), scholar.DamageGain.ToString(), Math.Round(100.0 * (scholar.TotalDamage / (scholar.TotalDamage - scholar.DamageGain) - 1.0), 3).ToString(),
                                  Math.Round((double)(moving.HitCount) / moving.TotalHitCount * 100, 1).ToString(), moving.HitCount.ToString(), moving.DamageGain.ToString(), Math.Round(100.0 * (moving.TotalDamage / (moving.TotalDamage - moving.DamageGain) - 1.0), 3).ToString(),
                                  Math.Round(stats.FlankingCount / (double)stats.ConnectedDirectDamageCount * 100, 1).ToString(), stats.FlankingCount.ToString(),
                                  Math.Round(stats.GlanceCount / (double)stats.ConnectedDirectDamageCount * 100, 1).ToString(), stats.GlanceCount.ToString(),
                                  Math.Round(stats.Missed / (double)stats.DirectDamageCount * 100, 1).ToString(), stats.Missed.ToString(),
                                  stats.DirectDamageCount.ToString(),
                                  stats.Interrupts.ToString(), stats.Invulned.ToString(), stats.TimeWasted.ToString(), stats.TimeSaved.ToString(), stats.SwapCount.ToString() });
                count++;
            }
            while (count < 15)//so each graph has equal spacing
            {
                NewLine();
                count++;
            }
        }
        // helper methods

        public static List <object> GetDMGStatData(FinalGameplayStatsAll stats)
        {
            List <object> data = GetDMGTargetStatData(stats);

            data.AddRange(new List <object>
            {
                // commons
                stats.TimeWasted,              // 9
                stats.Wasted,                  // 10

                stats.TimeSaved,               // 11
                stats.Saved,                   // 12

                stats.SwapCount,               // 13
                Math.Round(stats.StackDist, 2) // 14
            });
            return(data);
        }
Example #9
0
        public static JsonGameplayStatsAll BuildJsonGameplayStatsAll(FinalGameplayStatsAll stats)
        {
            var jsonGameplayStatsAll = new JsonGameplayStatsAll();

            FillJsonGamePlayStats(jsonGameplayStatsAll, stats);
            jsonGameplayStatsAll.Wasted              = stats.Wasted;
            jsonGameplayStatsAll.TimeWasted          = stats.TimeWasted;
            jsonGameplayStatsAll.Saved               = stats.Saved;
            jsonGameplayStatsAll.TimeSaved           = stats.TimeSaved;
            jsonGameplayStatsAll.StackDist           = stats.StackDist;
            jsonGameplayStatsAll.DistToCom           = stats.DistToCom;
            jsonGameplayStatsAll.AvgBoons            = stats.AvgBoons;
            jsonGameplayStatsAll.AvgActiveBoons      = stats.AvgActiveBoons;
            jsonGameplayStatsAll.AvgConditions       = stats.AvgConditions;
            jsonGameplayStatsAll.AvgActiveConditions = stats.AvgActiveConditions;
            jsonGameplayStatsAll.SwapCount           = stats.SwapCount;
            return(jsonGameplayStatsAll);
        }
        // helper methods

        private static List <object> GetDMGStatData(FinalGameplayStatsAll stats)
        {
            List <object> data = GetDMGTargetStatData(stats);

            data.AddRange(new List <object>
            {
                // commons
                stats.TimeWasted,               // 14
                stats.Wasted,                   // 15

                stats.TimeSaved,                // 16
                stats.Saved,                    // 17

                stats.SwapCount,                // 18
                Math.Round(stats.StackDist, 2), // 19
                Math.Round(stats.DistToCom, 2)  // 20
            });
            return(data);
        }
        public static JsonGameplayStatsAll BuildJsonGameplayStatsAll(FinalGameplayStatsAll stats)
        {
            var jsonGameplayStatsAll = new JsonGameplayStatsAll
            {
                Wasted              = stats.Wasted,
                TimeWasted          = stats.TimeWasted,
                Saved               = stats.Saved,
                TimeSaved           = stats.TimeSaved,
                StackDist           = stats.StackDist,
                DistToCom           = stats.DistToCom,
                AvgBoons            = stats.AvgBoons,
                AvgActiveBoons      = stats.AvgActiveBoons,
                AvgConditions       = stats.AvgConditions,
                AvgActiveConditions = stats.AvgActiveConditions,
                SwapCount           = stats.SwapCount
            };

            FillJsonGamePlayStats(jsonGameplayStatsAll, stats);
            return(jsonGameplayStatsAll);
        }
Example #12
0
 internal JsonGameplayStats(FinalGameplayStatsAll stats) : this(stats as FinalGameplayStats)
 {
 }