コード例 #1
0
    public static Dictionary <Attribute, short> GetAttributes(this ICharacterData data, bool sumWithEquipments = true, bool sumWithBuffs = true)
    {
        var result = data.GetCharacterAttributes();

        if (sumWithEquipments)
        {
            result = GameDataHelpers.CombineAttributeAmountsDictionary(result, data.GetEquipmentAttributes());
        }
        if (sumWithBuffs)
        {
            result = GameDataHelpers.CombineAttributeAmountsDictionary(result, data.GetBuffAttributes());
        }
        return(result);
    }
コード例 #2
0
    public static Dictionary <Attribute, short> GetEquipmentAttributes(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <Attribute, short>());
        }
        var result = new Dictionary <Attribute, short>();
        // Armors
        Item tempEquipment = null;
        var  equipItems    = data.EquipItems;

        foreach (var equipItem in equipItems)
        {
            tempEquipment = equipItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result = GameDataHelpers.CombineAttributeAmountsDictionary(result,
                                                                           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 = GameDataHelpers.CombineAttributeAmountsDictionary(result,
                                                                           tempEquipment.GetIncreaseAttributes(rightHandItem.level, rightHandItem.GetEquipmentBonusRate()));
            }
            // Left hand equipment
            var leftHandItem = equipWeapons.leftHand;
            tempEquipment = leftHandItem.GetEquipmentItem();
            if (tempEquipment != null)
            {
                result = GameDataHelpers.CombineAttributeAmountsDictionary(result,
                                                                           tempEquipment.GetIncreaseAttributes(leftHandItem.level, leftHandItem.GetEquipmentBonusRate()));
            }
        }
        return(result);
    }
コード例 #3
0
    public static Dictionary <Attribute, short> GetCharacterAttributes(this ICharacterData data)
    {
        if (data == null)
        {
            return(new Dictionary <Attribute, short>());
        }
        var result = new Dictionary <Attribute, short>();
        // Attributes from character database
        var character = data.GetDatabase();

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

        // Added attributes
        var characterAttributes = data.Attributes;

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

        return(result);
    }
コード例 #4
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);
    }