public static KeyValuePair <DamageElement, MinMaxFloat> MakeDamageAmountPair(DamageIncremental source, short level, float rate, float effectiveness) { var gameInstance = GameInstance.Singleton; var damageElement = source.damageElement; if (damageElement == null) { damageElement = gameInstance.DefaultDamageElement; } return(new KeyValuePair <DamageElement, MinMaxFloat>(damageElement, (source.amount.GetAmount(level) * rate) + effectiveness)); }
public static Dictionary <DamageElement, MinMaxFloat> MakeDamageAmountWithInflictions(DamageIncremental source, short level, float rate, float effectiveness, Dictionary <DamageElement, float> damageInflictionAmounts) { var result = new Dictionary <DamageElement, MinMaxFloat>(); var gameInstance = GameInstance.Singleton; var baseDamage = (source.amount.GetAmount(level) * rate) + effectiveness; if (damageInflictionAmounts != null && damageInflictionAmounts.Count > 0) { foreach (var damageInflictionAmount in damageInflictionAmounts) { var damageElement = damageInflictionAmount.Key; result = CombineDamageAmountsDictionary(result, new KeyValuePair <DamageElement, MinMaxFloat>(damageElement, baseDamage * damageInflictionAmount.Value)); } } else { var damageElement = source.damageElement; if (damageElement == null) { damageElement = gameInstance.DefaultDamageElement; } result = CombineDamageAmountsDictionary(result, new KeyValuePair <DamageElement, MinMaxFloat>(damageElement, baseDamage)); } return(result); }