示例#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));
        }
示例#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);
        }