Beispiel #1
0
        /// <summary>
        ///     Gets the calculated damage based on the given damage type onto the target from source.
        /// </summary>
        /// <param name="source">
        ///     The source
        /// </param>
        /// <param name="target">
        ///     The target
        /// </param>
        /// <param name="damageType">
        ///     The damage type
        /// </param>
        /// <param name="amount">
        ///     The amount
        /// </param>
        /// <returns>
        ///     The estimated damage from calculations.
        /// </returns>
        public static double CalculateDamage(
            this Obj_AI_Base source,
            Obj_AI_Base target,
            DamageType damageType,
            double amount)
        {
            var damage = 0d;

            switch (damageType)
            {
            case DamageType.Magical:
                damage = source.CalculateMagicDamage(target, amount);
                break;

            case DamageType.Physical:
                damage = source.CalculatePhysicalDamage(target, amount);
                break;

            case DamageType.Mixed:
                damage = source.CalculateMixedDamage(target, damage / 2, damage / 2);
                break;

            case DamageType.True:
                damage = Math.Max(Math.Floor(amount), 0);
                break;
            }

            return(damage);
        }
Beispiel #2
0
        /// <summary>
        ///     Calculates the damage.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="target">The target.</param>
        /// <param name="damageType">Type of the damage.</param>
        /// <param name="amount">The amount.</param>
        /// <returns>System.Double.</returns>
        /// <exception cref="ArgumentOutOfRangeException">damageType - null</exception>
        public static double CalculateDamage(
            this Obj_AI_Base source,
            Obj_AI_Base target,
            DamageType damageType,
            double amount)
        {
            var damage = 0d;

            switch (damageType)
            {
            case DamageType.Magical:
                damage = source.CalculateMagicDamage(target, amount);
                break;

            case DamageType.Physical:
                damage = source.CalculatePhysicalDamage(target, amount);
                break;

            case DamageType.Mixed:
                damage = source.CalculateMixedDamage(target, damage / 2d, damage / 2d);
                break;

            case DamageType.True:
                damage = Math.Max(Math.Floor(amount), 0);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(damageType), damageType, null);
            }

            return(damage);
        }