Exemplo n.º 1
0
        public static JsonGameplayStats BuildJsonGameplayStats(FinalOffensiveStats stats)
        {
            var jsonGameplayStats = new JsonGameplayStats();

            FillJsonGamePlayStats(jsonGameplayStats, stats);
            return(jsonGameplayStats);
        }
Exemplo n.º 2
0
        private static List <object> GetOffensiveStatData(FinalOffensiveStats stats)
        {
            var data = new List <object>
            {
                stats.DirectDamageCount,          // 0
                stats.CritableDirectDamageCount,  // 1
                stats.CriticalCount,              // 2
                stats.CriticalDmg,                // 3

                stats.FlankingCount,              // 4

                stats.GlanceCount,                // 5

                stats.Missed,                     // 6
                stats.Interrupts,                 // 7
                stats.Invulned,                   // 8
                stats.Evaded,                     // 9
                stats.Blocked,                    // 10
                stats.ConnectedDirectDamageCount, // 11
                stats.Killed,                     // 12
                stats.Downed,                     // 13
                stats.AgainstMovingCount,         // 14
                stats.ConnectedDamageCount,       // 15
                stats.TotalDamageCount,           // 16
            };

            return(data);
        }
Exemplo n.º 3
0
        public static List <List <object> > BuildOffensiveStatsData(ParsedEvtcLog log, PhaseData phase)
        {
            var list = new List <List <object> >();

            foreach (AbstractSingleActor actor in log.Friendlies)
            {
                FinalOffensiveStats stats = actor.GetOffensiveStats(null, log, phase.Start, phase.End);
                list.Add(GetOffensiveStatData(stats));
            }
            return(list);
        }
        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)
            {
                FinalGameplayStats  gameplayStats = player.GetGameplayStats(_log, phase.Start, phase.End);
                FinalOffensiveStats offStats      = player.GetOffensiveStats(null, _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)(offStats.CriticalCount) / offStats.CritableDirectDamageCount * 100, 1).ToString(), offStats.CriticalCount.ToString(), offStats.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(offStats.FlankingCount / (double)offStats.ConnectedDirectDamageCount * 100, 1).ToString(), offStats.FlankingCount.ToString(),
                                  Math.Round(offStats.GlanceCount / (double)offStats.ConnectedDirectDamageCount * 100, 1).ToString(), offStats.GlanceCount.ToString(),
                                  Math.Round(offStats.Missed / (double)offStats.DirectDamageCount * 100, 1).ToString(), offStats.Missed.ToString(),
                                  offStats.DirectDamageCount.ToString(),
                                  offStats.Interrupts.ToString(), offStats.Invulned.ToString(), gameplayStats.TimeWasted.ToString(), gameplayStats.TimeSaved.ToString(), gameplayStats.SwapCount.ToString() });
                count++;
            }
            while (count < 15)//so each graph has equal spacing
            {
                NewLine();
                count++;
            }
        }
Exemplo n.º 5
0
        public static List <List <List <object> > > BuildOffensiveStatsTargetsData(ParsedEvtcLog log, PhaseData phase)
        {
            var list = new List <List <List <object> > >();

            foreach (AbstractSingleActor actor in log.Friendlies)
            {
                var playerData = new List <List <object> >();
                foreach (AbstractSingleActor target in phase.Targets)
                {
                    FinalOffensiveStats statsTarget = actor.GetOffensiveStats(target, log, phase.Start, phase.End);
                    playerData.Add(GetOffensiveStatData(statsTarget));
                }
                list.Add(playerData);
            }
            return(list);
        }
Exemplo n.º 6
0
        public static JsonGameplayStatsAll BuildJsonGameplayStatsAll(FinalGameplayStats stats, FinalOffensiveStats offStats)
        {
            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,
                SkillCastUptime     = stats.SkillCastUptime,
                SkillCastUptimeNoAA = stats.SkillCastUptimeNoAA,
            };

            FillJsonGamePlayStats(jsonGameplayStatsAll, offStats);
            return(jsonGameplayStatsAll);
        }
Exemplo n.º 7
0
 private static void FillJsonGamePlayStats(JsonGameplayStats jsonGameplayStats, FinalOffensiveStats stats)
 {
     jsonGameplayStats.TotalDamageCount           = stats.TotalDamageCount;
     jsonGameplayStats.DirectDamageCount          = stats.DirectDamageCount;
     jsonGameplayStats.ConnectedDirectDamageCount = stats.ConnectedDirectDamageCount;
     jsonGameplayStats.ConnectedDamageCount       = stats.ConnectedDamageCount;
     jsonGameplayStats.CritableDirectDamageCount  = stats.CritableDirectDamageCount;
     jsonGameplayStats.CriticalRate      = stats.CriticalCount;
     jsonGameplayStats.CriticalDmg       = stats.CriticalDmg;
     jsonGameplayStats.FlankingRate      = stats.FlankingCount;
     jsonGameplayStats.GlanceRate        = stats.GlanceCount;
     jsonGameplayStats.AgainstMovingRate = stats.AgainstMovingCount;
     jsonGameplayStats.Missed            = stats.Missed;
     jsonGameplayStats.Blocked           = stats.Blocked;
     jsonGameplayStats.Evaded            = stats.Evaded;
     jsonGameplayStats.Interrupts        = stats.Interrupts;
     jsonGameplayStats.Invulned          = stats.Invulned;
     jsonGameplayStats.Killed            = stats.Killed;
     jsonGameplayStats.Downed            = stats.Downed;
 }