public static float BoostDamage(Characters.Character stats, float damage) { if (stats.DamageBoostPercentage > 0) { return(damage * (1 + stats.DamageBoostPercentage / 100)); } return(damage); }
public static float ReduceDamage(Characters.Character stats, float damage) { if (stats.DamageReducePercentage > 0) { return(damage * (1 - stats.DamageReducePercentage / 100)); } return(damage); }
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()); }
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)); }