示例#1
0
        public static float BoostDamage(Characters.Character stats, float damage)
        {
            if (stats.DamageBoostPercentage > 0)
            {
                return(damage * (1 + stats.DamageBoostPercentage / 100));
            }

            return(damage);
        }
示例#2
0
        public static float ReduceDamage(Characters.Character stats, float damage)
        {
            if (stats.DamageReducePercentage > 0)
            {
                return(damage * (1 - stats.DamageReducePercentage / 100));
            }

            return(damage);
        }
示例#3
0
        public static float GetCurrentFraction(bool health, Characters.Character target)
        {
            if (health)
            {
                return(target.CurrentHealth / target.stats[0].GetValue());
            }

            return(target.CurrentMana / target.stats[1].GetValue());
        }
示例#4
0
        public static float MagicDamage(Characters.Character source, Characters.Character target, float damage, float magicResist, float penetration)
        {
            damage *= 1 - (magicResist - penetration) / (damage - magicResist - penetration);

            damage = ReduceDamage(target, damage);
            damage = BoostDamage(source, damage);

            if (CritChance(source.stats[30].GetValue()))
            {
                damage *= 2;
            }

            return((float)Math.Round(Mathf.Clamp(damage, 0, float.MaxValue), 2));
        }