private void ApplyAttributeSpecifier(ItemTable definition)
{
foreach (var effect in definition.Attribute)
{
float result;
if (FormulaScript.Evaluate(effect.Formula.ToArray(), this.RandomGenerator, out result))
{
//Logger.Debug("Randomized value for attribute " + GameAttribute.Attributes[effect.AttributeId].Name + " is " + result);
if (GameAttribute.Attributes[effect.AttributeId] is GameAttributeF)
{
var attr = GameAttribute.Attributes[effect.AttributeId] as GameAttributeF;
if (effect.SNOParam != -1)
Attributes[attr, effect.SNOParam] += result;
else
Attributes[attr] += result;
}
else if (GameAttribute.Attributes[effect.AttributeId] is GameAttributeI)
{
var attr = GameAttribute.Attributes[effect.AttributeId] as GameAttributeI;
if (effect.SNOParam != -1)
Attributes[attr, effect.SNOParam] += (int)result;
else
Attributes[attr] += (int)result;
}
}
}
}