コード例 #1
0
 public JsonBuffDamageModifierItem(Statistics.DamageModifierData extraData)
 {
     HitCount      = extraData.HitCount;
     TotalHitCount = extraData.TotalHitCount;
     DamageGain    = extraData.DamageGain;
     TotalDamage   = extraData.TotalDamage;
 }
コード例 #2
0
ファイル: CSVBuilder.cs プロジェクト: Lego6245/ThornParser
        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.Account == ":Conjured Sword")
                {
                    continue;
                }
                Statistics.FinalStatsAll stats     = player.GetStatsAll(_log, phaseIndex);
                Statistics.FinalStats    statsBoss = player.GetStatsTarget(_log, phaseIndex, _log.LegacyTarget);
                Dictionary <string, List <Statistics.DamageModifierData> > damageMods = player.GetDamageModifierData(_log, _log.LegacyTarget);
                Statistics.DamageModifierData scholar = new Statistics.DamageModifierData(0, 0, 0, 0);
                Statistics.DamageModifierData moving  = new Statistics.DamageModifierData(0, 0, 0, 0);
                if (damageMods.TryGetValue("Scholar Rune", out var schoDict))
                {
                    scholar = schoDict[phaseIndex];
                }
                if (damageMods.TryGetValue("Moving Bonus", out var moveDict))
                {
                    moving = moveDict[phaseIndex];
                }

                WriteLine(new [] { player.Group.ToString(), player.Prof, player.Character,
                                   Math.Round((double)(statsBoss.CriticalRate) / statsBoss.CritableDirectDamageCount * 100, 1).ToString(), statsBoss.CriticalRate.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 / (double)(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 / (double)(moving.TotalDamage - moving.DamageGain) - 1.0), 3).ToString(),
                                   Math.Round(statsBoss.FlankingRate / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.FlankingRate.ToString(),
                                   Math.Round(statsBoss.GlanceRate / (double)statsBoss.DirectDamageCount * 100, 1).ToString(), statsBoss.GlanceRate.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++;
            }
        }
コード例 #3
0
        public DamageModData(Player player, ParsedLog log, List <DamageModifier> listToUse, int phaseIndex)
        {
            Dictionary <string, List <Statistics.DamageModifierData> > dModData = player.GetDamageModifierData(log, null);
            List <PhaseData> phases = log.FightData.GetPhases(log);

            foreach (DamageModifier dMod in listToUse)
            {
                if (dModData.TryGetValue(dMod.Name, out var list))
                {
                    Statistics.DamageModifierData data = list[phaseIndex];
                    Data.Add(new object[]
                    {
                        data.HitCount,
                        data.TotalHitCount,
                        data.DamageGain,
                        dMod.Multiplier ? data.TotalDamage : 0
                    });
                }
                else
                {
                    Data.Add(new object[]
                    {
                        0,
                        dMod.GetDamageLogs(player, log, null, phases[phaseIndex]).Count,
                        0,
                        dMod.Multiplier ? dMod.GetTotalDamage(player, log, null, phaseIndex) : 0
                    });
                }
            }
            PhaseData phase = log.FightData.GetPhases(log)[phaseIndex];

            foreach (Target target in phase.Targets)
            {
                List <object[]> pTarget = new List <object[]>();
                DataTarget.Add(pTarget);
                dModData = player.GetDamageModifierData(log, target);
                foreach (DamageModifier dMod in listToUse)
                {
                    if (dModData.TryGetValue(dMod.Name, out var list))
                    {
                        Statistics.DamageModifierData data = list[phaseIndex];
                        pTarget.Add(new object[]
                        {
                            data.HitCount,
                            data.TotalHitCount,
                            data.DamageGain,
                            dMod.Multiplier ? data.TotalDamage : 0
                        });
                    }
                    else
                    {
                        pTarget.Add(new object[]
                        {
                            0,
                            dMod.GetDamageLogs(player, log, target, phases[phaseIndex]).Count,
                            0,
                            dMod.Multiplier ? dMod.GetTotalDamage(player, log, target, phaseIndex) : 0
                        });
                    }
                }
            }
        }