Esempio n. 1
0
        public double GetDamageOfDoTTick(StatsGroup stats)
        {
            double critRate            = RatingConversions.GetCritChance(stats.CritRating);
            double critMult            = RatingConversions.GetCritDamageMultiplier(stats.CritRating);
            double directHitRate       = RatingConversions.GetDirectHitChance(stats.DirectHitRating);
            double directHitMult       = RatingConversions.GetDirectHitDamageFactor(stats.DirectHitRating);
            double determinationFactor = RatingConversions.GetDeterminationFactor(stats.Determination);
            double tenacityFactor      = RatingConversions.GetTenacityFactor(stats.Tenacity);
            double speedFactor         = RatingConversions.GetSpeedDoTContribution(stats.SpeedRating);

            bool isCrit      = (rng.NextDouble() < critRate);
            bool isDirectHit = (rng.NextDouble() < directHitRate);

            double damage = 1;

            if (isCrit)
            {
                damage *= critMult;
            }
            if (isDirectHit)
            {
                damage *= directHitMult;
            }
            damage *= determinationFactor;
            damage *= tenacityFactor;
            damage *= speedFactor;
            return(damage);
        }
Esempio n. 2
0
        public double GetDamageOfGCDAttack(StatsGroup stats, out bool isCrit, out bool isDirectHit)
        {
            double critRate            = RatingConversions.GetCritChance(stats.CritRating);
            double critMult            = RatingConversions.GetCritDamageMultiplier(stats.CritRating);
            double directHitRate       = RatingConversions.GetDirectHitChance(stats.DirectHitRating);
            double determinationFactor = RatingConversions.GetDeterminationFactor(stats.Determination);
            double tenacityFactor      = RatingConversions.GetTenacityFactor(stats.Tenacity);

            isCrit      = (rng.NextDouble() < critRate);
            isDirectHit = (rng.NextDouble() < directHitRate);

            double damage = 1;

            if (isCrit)
            {
                damage *= critMult;
            }
            if (isDirectHit)
            {
                damage *= RatingConversions.GetDirectHitDamageFactor(stats.DirectHitRating);
            }
            damage *= determinationFactor;
            damage *= tenacityFactor;

            TotalCrits      += isCrit ? 1 : 0;
            TotalDirectHits += isDirectHit ? 1 : 0;
            TotalAttacks++;

            return(damage);
        }
Esempio n. 3
0
        public static double CalculateDamageFromAbility(StatsGroup stats)
        {
            double critRate            = RatingConversions.GetCritChance(stats.CritRating);
            double critMult            = RatingConversions.GetCritDamageMultiplier(stats.CritRating);
            double directHitRate       = RatingConversions.GetDirectHitChance(stats.DirectHitRating);
            double determinationFactor = RatingConversions.GetDeterminationFactor(stats.Determination);
            double tenacityFactor      = RatingConversions.GetTenacityFactor(stats.Tenacity);

            return(CalculateDamageFromGCD(critRate, critMult, 1.0, directHitRate, determinationFactor, tenacityFactor));
        }
Esempio n. 4
0
        private static void PrintInfo()
        {
            Console.WriteLine($"Crit Chance:  {RatingConversions.GetCritChance(CurrentStats.CritRating) * 100:0.0}%");
            Console.WriteLine($"Crit Mult:    {RatingConversions.GetCritDamageMultiplier(CurrentStats.CritRating) * 100:0.0}%");
            Console.WriteLine($"DH   Chance:  {RatingConversions.GetDirectHitChance(CurrentStats.DirectHitRating) * 100:0.0}%");
            Console.WriteLine($"GCD:          {2.5 / RatingConversions.GetSpeedFactor(CurrentStats.SpeedRating):0.00}");
            Console.WriteLine($"Ten/Det Mult: {RatingConversions.GetDeterminationFactor(CurrentStats.Determination) * RatingConversions.GetTenacityFactor(CurrentStats.Tenacity):0.00}");

            Console.WriteLine();
            Console.ReadKey(true);
        }
        public double GetDamageOfGCDAttack(StatsGroup stats)
        {
            double critRate            = RatingConversions.GetCritChance(stats.CritRating);
            double critMult            = RatingConversions.GetCritDamageMultiplier(stats.CritRating);
            double directHitRate       = RatingConversions.GetDirectHitChance(stats.DirectHitRating);
            double determinationFactor = RatingConversions.GetDeterminationFactor(stats.Determination);
            double tenacityFactor      = RatingConversions.GetTenacityFactor(stats.Tenacity);

            double critFactor      = (1 - critRate) + (critRate * critMult);
            double directHitFactor = (1 - directHitRate) + (directHitRate * 1.25);

            return(critFactor * directHitFactor * determinationFactor * tenacityFactor);
        }