public override float Calculate(Pawn observer, Pawn assessed) { float observerValue = AttractionUtility.GetObjectiveSkillAttractiveness(observer); float assessedValue = AttractionUtility.GetObjectiveSkillAttractiveness(assessed); float value = assessedValue / observerValue; if (value < 1) { value = Mathf.Pow(value, SkillAttractivenessDampenerUpper); } else { value = Mathf.Pow(value, SkillAttractivenessDampenerLower); } return(value); }