/// <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); }
/// <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); }