/// <summary> /// Evaluating a Stat by wiring it through all skillsets on this StatMachine. /// </summary> /// <param name="stat">The stat to be evaluating.</param> /// <returns>The value this Stat resolves to after applying all effects.</returns> public object EvaluateStat(Stat stat, List <SkillsetStackEntry> Stack) { RefreshSkillsetStack(false); object value = stat.GetValueAsObject(); foreach (SkillsetStackEntry entry in Stack) { FunctionSolver.VariableAssignments variableAssignments = new FunctionSolver.VariableAssignments() .AddVariable("t", (entry.IgnoreTimeScale ? Time.realtimeSinceStartup : Time.time) - entry.EntryTime); float Strength; if (entry.StrengthFunction == null) { Strength = entry.Strength; } else { Strength = entry.StrengthFunction.Solve(variableAssignments); } value = entry.Skillset.ProcessStat(stat, value, Strength, this); } return(value); }
public FactFunction ReplaceAssignements(FunctionSolver.VariableAssignments newAssignements) { assignements = newAssignements; return(this); }