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); }
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); }
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); }
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); }