public List <AttributeModifier> GetAttributeModifiers(int level, float multiplier = 1) { var modifiers = new List <AttributeModifier>(); foreach (var attributeModifierCurveData in this.data.Attributes) { var amount = Curve.Evaluate( level, attributeModifierCurveData.Min, attributeModifierCurveData.Max, attributeModifierCurveData.CurveType) * multiplier; amount *= Quality; var attributeData = new AttributeModifierData { Type = ModifierType.Flat, Amount = amount }; var attributeModifier = new AttributeModifier( this.attributeRepository.Find(attributeModifierCurveData.AttributeId), attributeData); modifiers.Add(attributeModifier); } modifiers.AddRange(ItemModifiers.SelectMany(m => m.GetAttributeModifiers(level, multiplier))); return(modifiers); }
public AttributeModifier(Attribute attribute, AttributeModifierData data) : base(data.Amount, data.Type) { Data = data; Attribute = attribute; }
public AttributeModifier Make(AttributeModifierData data) { return(new AttributeModifier(this.attributeRepository.Find(data.AttributeId), data)); }