private IValue BuildInModifierSourceJewelRadiusValue( BuildParameters parameters, IStatBuilder stat, Func <IValue, IValue> condition) { return(GetNodesInRadius(parameters) .Select(GetValue) .Aggregate((l, r) => l + r) .Build(parameters)); ValueBuilder GetValue(PassiveNodeDefinition d) => stat.AsPassiveNodePropertyFor(d.Id).Value .If(condition(NodeSkilled(d.Id).Value.Build(parameters))); }
public IEnumerable <StatBuilderResult> Build(BuildParameters parameters) { foreach (var node in _getNodesInRadius(parameters)) { var value = _source.AsPassiveNodePropertyFor(node.Id).ValueFor(NodeType.BaseSet); var stat = _target.AsPassiveNodePropertyFor(node.Id); foreach (var(stats, source, valueConverter) in stat.Build(parameters)) { yield return(new StatBuilderResult(stats, source, valueConverter.AndThen(v => v.Multiply(value)))); } } }
private IValue BuildInModifierSourceJewelRadiusValue( BuildParameters parameters, IStatBuilder stat, Func <IValue, IValue> condition) => BuildInModifierSourceJewelRadiusValue(parameters, d => stat.AsPassiveNodePropertyFor(d.Id).Value, condition);