コード例 #1
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);
    }
コード例 #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 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);
    }
コード例 #4
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);
    }
コード例 #5
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);
    }
コード例 #6
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;
                }
            }
        }
    }