コード例 #1
0
    public static Dictionary <DamageElement, MinMaxFloat> GetBuffIncreaseDamages(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <DamageElement, MinMaxFloat>());
        }
        Dictionary <DamageElement, MinMaxFloat> result = new Dictionary <DamageElement, MinMaxFloat>();
        IList <CharacterBuff> buffs = data.Buffs;

        foreach (CharacterBuff buff in buffs)
        {
            result = GameDataHelpers.CombineDamages(result, buff.GetIncreaseDamages());
        }

        // Passive skills
        IList <CharacterSkill> skills = data.Skills;

        foreach (CharacterSkill skill in skills)
        {
            if (skill.GetSkill() == null || skill.GetSkill().skillType != SkillType.Passive || skill.level <= 0)
            {
                continue;
            }
            result = GameDataHelpers.CombineDamages(result, skill.GetPassiveBuffIncreaseDamages());
        }
        return(result);
    }
コード例 #2
0
    public static CharacterStats GetBuffStats(this ICharacterData data)
    {
        if (data == null)
        {
            return(new CharacterStats());
        }
        var result = new CharacterStats();
        var buffs  = data.Buffs;

        foreach (var buff in buffs)
        {
            result += buff.GetIncreaseStats();
            result += GameDataHelpers.GetStatsFromAttributes(buff.GetIncreaseAttributes());
        }

        // Passive skills
        var  skills = data.Skills;
        Buff tempBuff;

        foreach (var skill in skills)
        {
            if (skill.GetSkill() == null || skill.GetSkill().skillType != SkillType.Passive || skill.level <= 0)
            {
                continue;
            }
            tempBuff = skill.GetSkill().buff;
            result  += tempBuff.GetIncreaseStats(skill.level);
            result  += GameDataHelpers.GetStatsFromAttributes(tempBuff.GetIncreaseAttributes(skill.level));
        }
        return(result);
    }
コード例 #3
0
    public static Dictionary <DamageElement, float> GetBuffResistances(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <DamageElement, float>());
        }
        var result = new Dictionary <DamageElement, float>();
        var buffs  = data.Buffs;

        foreach (var buff in buffs)
        {
            result = GameDataHelpers.CombineResistanceAmountsDictionary(result, buff.GetIncreaseResistances());
        }

        // Passive skills
        var skills = data.Skills;

        foreach (var skill in skills)
        {
            if (skill.GetSkill() == null || skill.GetSkill().skillType != SkillType.Passive || skill.level <= 0)
            {
                continue;
            }
            result = GameDataHelpers.CombineResistanceAmountsDictionary(result,
                                                                        skill.GetSkill().buff.GetIncreaseResistances(skill.level));
        }
        return(result);
    }
コード例 #4
0
    public static CharacterStats GetBuffStats(this ICharacterData data)
    {
        if (data == null)
        {
            return(new CharacterStats());
        }
        CharacterStats        result = new CharacterStats();
        IList <CharacterBuff> buffs  = data.Buffs;

        foreach (CharacterBuff buff in buffs)
        {
            result += buff.GetIncreaseStats();
            result += GameDataHelpers.GetStatsFromAttributes(buff.GetIncreaseAttributes());
        }

        // Passive skills
        IList <CharacterSkill> skills = data.Skills;

        foreach (CharacterSkill skill in skills)
        {
            if (skill.GetSkill() == null || skill.GetSkill().skillType != SkillType.Passive || skill.level <= 0)
            {
                continue;
            }
            result += skill.GetPassiveBuffIncreaseStats();
            result += GameDataHelpers.GetStatsFromAttributes(skill.GetPassiveBuffIncreaseAttributes());
        }
        return(result);
    }
コード例 #5
0
 public static Dictionary <DamageElement, MinMaxFloat> GetDamageAmountWithInflictions(this Item weaponItem, short level, float rate, ICharacterData character, Dictionary <DamageElement, float> damageInflictionAmounts)
 {
     if (weaponItem == null ||
         !weaponItem.IsWeapon())
     {
         return(new Dictionary <DamageElement, MinMaxFloat>());
     }
     return(GameDataHelpers.MakeDamageAmountWithInflictions(weaponItem.damageAmount, level, rate, weaponItem.GetEffectivenessDamage(character), damageInflictionAmounts));
 }
コード例 #6
0
 public static KeyValuePair <DamageElement, MinMaxFloat> GetDamageAmount(this Item weaponItem, short level, float rate, ICharacterData character)
 {
     if (weaponItem == null ||
         !weaponItem.IsWeapon())
     {
         return(new KeyValuePair <DamageElement, MinMaxFloat>());
     }
     return(GameDataHelpers.MakeDamageAmountPair(weaponItem.damageAmount, level, rate, weaponItem.GetEffectivenessDamage(character)));
 }
コード例 #7
0
    public static Dictionary <Skill, short> GetSkills(this ICharacterData data, bool sumWithEquipments = true)
    {
        Dictionary <Skill, short> result = data.GetCharacterSkills();

        if (sumWithEquipments)
        {
            result = GameDataHelpers.CombineSkills(result, data.GetEquipmentSkills());
        }
        return(result);
    }
コード例 #8
0
 public static float GetEffectivenessDamage(this Item weaponItem, ICharacterData character)
 {
     if (weaponItem == null ||
         !weaponItem.IsWeapon() ||
         character == null)
     {
         return(0f);
     }
     return(GameDataHelpers.CalculateEffectivenessDamage(weaponItem.WeaponType.CacheEffectivenessAttributes, character));
 }
コード例 #9
0
    public static Dictionary <DamageElement, MinMaxFloat> GetIncreaseDamages(this Item equipmentItem, short level, float rate)
    {
        var result = new Dictionary <DamageElement, MinMaxFloat>();

        if (equipmentItem != null &&
            equipmentItem.IsEquipment())
        {
            result = GameDataHelpers.MakeDamageAmountsDictionary(equipmentItem.increaseDamages, result, level, rate);
        }
        return(result);
    }
コード例 #10
0
    public static Dictionary <DamageElement, float> GetResistances(this ICharacterData data, bool sumWithEquipments = true, bool sumWithBuffs = true)
    {
        Dictionary <DamageElement, float> result = data.GetCharacterResistances();

        if (sumWithEquipments)
        {
            result = GameDataHelpers.CombineResistances(result, data.GetEquipmentResistances());
        }
        if (sumWithBuffs)
        {
            result = GameDataHelpers.CombineResistances(result, data.GetBuffResistances());
        }
        return(result);
    }
コード例 #11
0
    public static Dictionary <DamageElement, MinMaxFloat> GetIncreaseDamages(this ICharacterData data, bool sumWithEquipments = true, bool sumWithBuffs = true)
    {
        Dictionary <DamageElement, MinMaxFloat> result = new Dictionary <DamageElement, MinMaxFloat>();

        if (sumWithEquipments)
        {
            result = GameDataHelpers.CombineDamages(result, data.GetEquipmentIncreaseDamages());
        }
        if (sumWithBuffs)
        {
            result = GameDataHelpers.CombineDamages(result, data.GetBuffIncreaseDamages());
        }
        return(result);
    }
コード例 #12
0
    public static Dictionary <Attribute, short> GetAttributes(this ICharacterData data, bool sumWithEquipments = true, bool sumWithBuffs = true)
    {
        Dictionary <Attribute, short> result = data.GetCharacterAttributes();

        if (sumWithEquipments)
        {
            result = GameDataHelpers.CombineAttributes(result, data.GetEquipmentAttributes());
        }
        if (sumWithBuffs)
        {
            result = GameDataHelpers.CombineAttributes(result, data.GetBuffAttributes());
        }
        return(result);
    }
コード例 #13
0
    public static Dictionary <DamageElement, float> GetCharacterResistances(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <DamageElement, float>());
        }
        Dictionary <DamageElement, float> result = new Dictionary <DamageElement, float>();
        BaseCharacter character = data.GetDatabase();

        if (character != null)
        {
            result = GameDataHelpers.CombineResistances(result, character.GetCharacterResistances(data.Level));
        }
        return(result);
    }
コード例 #14
0
    public static void GetAllStats(this ICharacterData data,
                                   out CharacterStats resultStats,
                                   Dictionary <Attribute, short> resultAttributes,
                                   Dictionary <DamageElement, float> resultResistances,
                                   Dictionary <DamageElement, MinMaxFloat> resultIncreaseDamages,
                                   Dictionary <Skill, short> resultSkills,
                                   Dictionary <EquipmentSet, int> resultEquipmentSets,
                                   out int resultMaxHp,
                                   out int resultMaxMp,
                                   out int resultMaxStamina,
                                   out int resultMaxFood,
                                   out int resultMaxWater,
                                   out float resultTotalItemWeight,
                                   out float resultAtkSpeed,
                                   out float resultMoveSpeed)
    {
        resultStats = new CharacterStats();
        resultAttributes.Clear();
        resultResistances.Clear();
        resultIncreaseDamages.Clear();
        resultSkills.Clear();
        resultEquipmentSets.Clear();

        GetEquipmentSetBonus(data, out resultStats, resultAttributes, resultResistances, resultIncreaseDamages, resultSkills, resultEquipmentSets);
        resultStats           = resultStats + data.GetStats();
        resultAttributes      = GameDataHelpers.CombineAttributes(resultAttributes, data.GetAttributes());
        resultResistances     = GameDataHelpers.CombineResistances(resultResistances, data.GetResistances());
        resultIncreaseDamages = GameDataHelpers.CombineDamages(resultIncreaseDamages, data.GetIncreaseDamages());
        resultSkills          = GameDataHelpers.CombineSkills(resultSkills, data.GetSkills());
        // Sum with other stats
        resultMaxHp           = (int)resultStats.hp;
        resultMaxMp           = (int)resultStats.mp;
        resultMaxStamina      = (int)resultStats.stamina;
        resultMaxFood         = (int)resultStats.food;
        resultMaxWater        = (int)resultStats.water;
        resultTotalItemWeight = GameInstance.Singleton.GameplayRule.GetTotalWeight(data);
        resultAtkSpeed        = resultStats.atkSpeed;
        resultMoveSpeed       = resultStats.moveSpeed;
        // Validate max amount
        foreach (Attribute attribute in new List <Attribute>(resultAttributes.Keys))
        {
            if (attribute.maxAmount > 0 && resultAttributes[attribute] > attribute.maxAmount)
            {
                resultAttributes[attribute] = attribute.maxAmount;
            }
        }
    }
コード例 #15
0
    public static CharacterStats GetCharacterStats(this ICharacterData data)
    {
        if (data == null)
        {
            return(new CharacterStats());
        }
        var level     = data.Level;
        var character = data.GetDatabase();
        var result    = new CharacterStats();

        if (character != null)
        {
            result += character.GetCharacterStats(level);
        }
        result += GameDataHelpers.CaculateStats(GetAttributes(data));
        return(result);
    }
コード例 #16
0
    public static CharacterStats GetCharacterStats(this ICharacterData data)
    {
        if (data == null)
        {
            return(new CharacterStats());
        }
        short          level     = data.Level;
        BaseCharacter  character = data.GetDatabase();
        CharacterStats result    = new CharacterStats();

        if (character != null)
        {
            result += character.GetCharacterStats(level);
        }
        result += GameDataHelpers.GetStatsFromAttributes(GetAttributes(data));
        return(result);
    }
コード例 #17
0
    public static CharacterStats GetEquipmentStats(this ICharacterData data)
    {
        if (data == null)
        {
            return(new CharacterStats());
        }
        CharacterStats result = new CharacterStats();
        // Armors
        IList <CharacterItem> equipItems = data.EquipItems;

        foreach (CharacterItem equipItem in equipItems)
        {
            if (equipItem.IsEmpty())
            {
                continue;
            }
            result += equipItem.GetIncreaseStats();
            result += equipItem.GetSocketsIncreaseStats();
            result += GameDataHelpers.GetStatsFromAttributes(equipItem.GetIncreaseAttributes());
            result += GameDataHelpers.GetStatsFromAttributes(equipItem.GetSocketsIncreaseAttributes());
        }
        // Weapons
        EquipWeapons equipWeapons = data.EquipWeapons;

        if (equipWeapons != null)
        {
            // Right hand equipment
            if (!equipWeapons.rightHand.IsEmpty())
            {
                result += equipWeapons.rightHand.GetIncreaseStats();
                result += equipWeapons.rightHand.GetSocketsIncreaseStats();
                result += GameDataHelpers.GetStatsFromAttributes(equipWeapons.rightHand.GetIncreaseAttributes());
                result += GameDataHelpers.GetStatsFromAttributes(equipWeapons.rightHand.GetSocketsIncreaseAttributes());
            }
            // Left hand equipment
            if (!equipWeapons.leftHand.IsEmpty())
            {
                result += equipWeapons.leftHand.GetIncreaseStats();
                result += equipWeapons.leftHand.GetSocketsIncreaseStats();
                result += GameDataHelpers.GetStatsFromAttributes(equipWeapons.leftHand.GetIncreaseAttributes());
                result += GameDataHelpers.GetStatsFromAttributes(equipWeapons.leftHand.GetSocketsIncreaseAttributes());
            }
        }
        return(result);
    }
コード例 #18
0
    public static Dictionary <DamageElement, MinMaxFloat> GetEquipmentIncreaseDamages(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <DamageElement, MinMaxFloat>());
        }
        var result = new Dictionary <DamageElement, MinMaxFloat>();
        // Armors
        Item tempEquipment = null;
        var  equipItems    = data.EquipItems;

        foreach (var equipItem in equipItems)
        {
            tempEquipment = equipItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result = GameDataHelpers.CombineDamageAmountsDictionary(result,
                                                                        tempEquipment.GetIncreaseDamages(equipItem.level, equipItem.GetEquipmentBonusRate()));
            }
        }
        // Weapons
        var equipWeapons = data.EquipWeapons;

        if (equipWeapons != null)
        {
            // Right hand equipment
            var rightHandItem = equipWeapons.rightHand;
            tempEquipment = rightHandItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result = GameDataHelpers.CombineDamageAmountsDictionary(result,
                                                                        tempEquipment.GetIncreaseDamages(rightHandItem.level, rightHandItem.GetEquipmentBonusRate()));
            }
            // Left hand equipment
            var leftHandItem = equipWeapons.leftHand;
            tempEquipment = leftHandItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result = GameDataHelpers.CombineDamageAmountsDictionary(result,
                                                                        tempEquipment.GetIncreaseDamages(leftHandItem.level, leftHandItem.GetEquipmentBonusRate()));
            }
        }
        return(result);
    }
コード例 #19
0
    public static CharacterStats GetEquipmentStats(this ICharacterData data)
    {
        if (data == null)
        {
            return(new CharacterStats());
        }
        var result = new CharacterStats();
        // Armors
        Item tempEquipment = null;
        var  equipItems    = data.EquipItems;

        foreach (var equipItem in equipItems)
        {
            tempEquipment = equipItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result += tempEquipment.GetIncreaseStats(equipItem.level, equipItem.GetEquipmentBonusRate());
                result += GameDataHelpers.GetStatsFromAttributes(tempEquipment.GetIncreaseAttributes(equipItem.level, equipItem.GetEquipmentBonusRate()));
            }
        }
        // Weapons
        var equipWeapons = data.EquipWeapons;

        if (equipWeapons != null)
        {
            // Right hand equipment
            var rightHandItem = equipWeapons.rightHand;
            tempEquipment = rightHandItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result += tempEquipment.GetIncreaseStats(rightHandItem.level, rightHandItem.GetEquipmentBonusRate());
                result += GameDataHelpers.GetStatsFromAttributes(tempEquipment.GetIncreaseAttributes(rightHandItem.level, rightHandItem.GetEquipmentBonusRate()));
            }
            // Left hand equipment
            var leftHandItem = equipWeapons.leftHand;
            tempEquipment = leftHandItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result += tempEquipment.GetIncreaseStats(leftHandItem.level, leftHandItem.GetEquipmentBonusRate());
                result += GameDataHelpers.GetStatsFromAttributes(tempEquipment.GetIncreaseAttributes(leftHandItem.level, leftHandItem.GetEquipmentBonusRate()));
            }
        }
        return(result);
    }
コード例 #20
0
    public Dictionary <Skill, short> GetSocketsIncreaseSkills()
    {
        if (GetEquipmentItem() == null || Sockets.Count == 0)
        {
            return(null);
        }
        Dictionary <Skill, short> result = new Dictionary <Skill, short>();
        Item tempEnhancer;

        foreach (int socketId in Sockets)
        {
            if (GameInstance.Items.TryGetValue(socketId, out tempEnhancer))
            {
                // Level for increase stats always 1
                result = GameDataHelpers.CombineSkills(tempEnhancer.socketEnhanceEffect.skills, result);
            }
        }
        return(result);
    }
コード例 #21
0
    public static Dictionary <DamageElement, MinMaxFloat> GetEquipmentIncreaseDamages(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <DamageElement, MinMaxFloat>());
        }
        Dictionary <DamageElement, MinMaxFloat> result = new Dictionary <DamageElement, MinMaxFloat>();
        // Armors
        IList <CharacterItem> equipItems = data.EquipItems;

        foreach (CharacterItem equipItem in equipItems)
        {
            if (equipItem.IsEmpty())
            {
                continue;
            }
            result = GameDataHelpers.CombineDamages(result, equipItem.GetIncreaseDamages());
            result = GameDataHelpers.CombineDamages(result, equipItem.GetSocketsIncreaseDamages());
        }
        // Weapons
        EquipWeapons equipWeapons = data.EquipWeapons;

        if (equipWeapons != null)
        {
            // Right hand equipment
            if (equipWeapons.rightHand.IsEmpty())
            {
                result = GameDataHelpers.CombineDamages(result, equipWeapons.rightHand.GetIncreaseDamages());
                result = GameDataHelpers.CombineDamages(result, equipWeapons.rightHand.GetSocketsIncreaseDamages());
            }
            // Left hand equipment
            if (equipWeapons.leftHand.IsEmpty())
            {
                result = GameDataHelpers.CombineDamages(result, equipWeapons.leftHand.GetIncreaseDamages());
                result = GameDataHelpers.CombineDamages(result, equipWeapons.leftHand.GetSocketsIncreaseDamages());
            }
        }
        return(result);
    }
コード例 #22
0
    public static Dictionary <Attribute, short> GetCharacterAttributes(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <Attribute, short>());
        }
        Dictionary <Attribute, short> result = new Dictionary <Attribute, short>();
        // Attributes from character database
        BaseCharacter character = data.GetDatabase();

        if (character != null)
        {
            result = GameDataHelpers.CombineAttributes(result,
                                                       character.GetCharacterAttributes(data.Level));
        }

        // Added attributes
        IList <CharacterAttribute> characterAttributes = data.Attributes;

        foreach (CharacterAttribute characterAttribute in characterAttributes)
        {
            Attribute key   = characterAttribute.GetAttribute();
            short     value = characterAttribute.amount;
            if (key == null)
            {
                continue;
            }
            if (!result.ContainsKey(key))
            {
                result[key] = value;
            }
            else
            {
                result[key] += value;
            }
        }

        return(result);
    }
コード例 #23
0
    public static Dictionary <Attribute, short> GetBuffAttributes(this ICharacterData data)
    {
        var result = new Dictionary <Attribute, short>();
        var buffs  = data.Buffs;

        foreach (var buff in buffs)
        {
            result = GameDataHelpers.CombineAttributeAmountsDictionary(result, buff.GetIncreaseAttributes());
        }

        // Passive skills
        var skills = data.Skills;

        foreach (var skill in skills)
        {
            if (skill.GetSkill() == null || skill.GetSkill().skillType != SkillType.Passive || skill.level <= 0)
            {
                continue;
            }
            result = GameDataHelpers.CombineAttributeAmountsDictionary(result,
                                                                       skill.GetSkill().buff.GetIncreaseAttributes(skill.level));
        }
        return(result);
    }
コード例 #24
0
 public Dictionary <DamageElement, float> GetCharacterResistances(short level)
 {
     return(GameDataHelpers.MakeResistanceAmountsDictionary(resistances, new Dictionary <DamageElement, float>(), level, 1f));
 }
コード例 #25
0
 public Dictionary <Attribute, short> GetCharacterAttributes(short level)
 {
     return(GameDataHelpers.MakeAttributeAmountsDictionary(attributes, new Dictionary <Attribute, short>(), level, 1f));
 }
コード例 #26
0
 // -------------------------------------------------------------------
 // Protected
 // -------------------------------------------------------------------
 public static IList <GameDataRace> GetAvailable()
 {
     return(GameDataHelpers.FindGameDataList(TypeCache <GameDataRace> .Value).Cast <GameDataRace>().ToList());
 }
コード例 #27
0
    public static void GetEquipmentSetBonus(this ICharacterData data,
                                            out CharacterStats bonusStats,
                                            Dictionary <Attribute, short> bonusAttributes,
                                            Dictionary <DamageElement, float> bonusResistances,
                                            Dictionary <DamageElement, MinMaxFloat> bonusIncreaseDamages,
                                            Dictionary <Skill, short> bonusSkills,
                                            Dictionary <EquipmentSet, int> equipmentSets)
    {
        bonusStats = new CharacterStats();
        bonusAttributes.Clear();
        bonusResistances.Clear();
        bonusIncreaseDamages.Clear();
        bonusSkills.Clear();
        // Equipment Set
        equipmentSets.Clear();
        // Armor equipment set
        foreach (CharacterItem equipItem in data.EquipItems)
        {
            if (equipItem.NotEmptySlot() && equipItem.GetItem().equipmentSet != null)
            {
                if (equipmentSets.ContainsKey(equipItem.GetItem().equipmentSet))
                {
                    ++equipmentSets[equipItem.GetItem().equipmentSet];
                }
                else
                {
                    equipmentSets.Add(equipItem.GetItem().equipmentSet, 0);
                }
            }
        }
        // Weapon equipment set
        if (data.EquipWeapons != null)
        {
            // Right hand equipment set
            if (data.EquipWeapons.rightHand.NotEmptySlot() && data.EquipWeapons.rightHand.GetItem().equipmentSet != null)
            {
                if (equipmentSets.ContainsKey(data.EquipWeapons.rightHand.GetItem().equipmentSet))
                {
                    ++equipmentSets[data.EquipWeapons.rightHand.GetItem().equipmentSet];
                }
                else
                {
                    equipmentSets.Add(data.EquipWeapons.rightHand.GetItem().equipmentSet, 0);
                }
            }
            // Left hand equipment set
            if (data.EquipWeapons.leftHand.NotEmptySlot() && data.EquipWeapons.leftHand.GetItem().equipmentSet != null)
            {
                if (equipmentSets.ContainsKey(data.EquipWeapons.leftHand.GetItem().equipmentSet))
                {
                    ++equipmentSets[data.EquipWeapons.leftHand.GetItem().equipmentSet];
                }
                else
                {
                    equipmentSets.Add(data.EquipWeapons.leftHand.GetItem().equipmentSet, 0);
                }
            }
        }
        // Apply set items
        Dictionary <Attribute, short>           tempIncreaseAttributes;
        Dictionary <DamageElement, float>       tempIncreaseResistances;
        Dictionary <DamageElement, MinMaxFloat> tempIncreaseDamages;
        Dictionary <Skill, short> tempIncreaseSkills;
        CharacterStats            tempIncreaseStats;

        foreach (KeyValuePair <EquipmentSet, int> cacheEquipmentSet in equipmentSets)
        {
            EquipmentBonus[] effects = cacheEquipmentSet.Key.effects;
            int setAmount            = cacheEquipmentSet.Value;
            for (int i = 0; i < setAmount; ++i)
            {
                if (i < effects.Length)
                {
                    // Make temp of data
                    tempIncreaseAttributes  = GameDataHelpers.CombineAttributes(effects[i].attributes, null, 1f);
                    tempIncreaseResistances = GameDataHelpers.CombineResistances(effects[i].resistances, null, 1f);
                    tempIncreaseDamages     = GameDataHelpers.CombineDamages(effects[i].damages, null, 1f);
                    tempIncreaseSkills      = GameDataHelpers.CombineSkills(effects[i].skills, null);
                    tempIncreaseStats       = effects[i].stats + GameDataHelpers.GetStatsFromAttributes(tempIncreaseAttributes);
                    // Combine to result dictionaries
                    bonusAttributes      = GameDataHelpers.CombineAttributes(bonusAttributes, tempIncreaseAttributes);
                    bonusResistances     = GameDataHelpers.CombineResistances(bonusResistances, tempIncreaseResistances);
                    bonusIncreaseDamages = GameDataHelpers.CombineDamages(bonusIncreaseDamages, tempIncreaseDamages);
                    bonusSkills          = GameDataHelpers.CombineSkills(bonusSkills, tempIncreaseSkills);
                    bonusStats          += tempIncreaseStats;
                }
                else
                {
                    break;
                }
            }
        }
    }