private List<Plant> GetValidForagingTargetsSorted()
{
IntVec3 position = manager.map.GetBaseCenter();
return manager.map.listerThings.AllThings
.Where( IsValidForagingTarget )
// OrderBy defaults to ascending, switch sign on current yield to get descending
.Select( p => p as Plant )
.OrderBy( p => -p.YieldNow() / ( Math.Sqrt( position.DistanceToSquared( p.Position ) ) * 2 ) )
.ToList();
}