Beispiel #1
0
    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));
    }
Beispiel #2
0
    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);
    }