static void Postfix(Pawn p, List <JoyKindDef> outJoyKinds, ref Caravan ___caravan) { if (!p.health.capacities.CapableOf(PawnCapacityDefOf.Hearing) || !p.Awake()) { return; } if (p.needs.joy.tolerances.BoredOf(JoyKindDefOf_Music.Music)) { return; } float quality; List <Pawn> pawnsTmp = new List <Pawn>(); pawnsTmp.AddRange(___caravan.pawns); Pawn musician; while (pawnsTmp.TryRandomElement(out musician)) { if (PerformanceManager.IsPotentialCaravanMusician(musician, out quality)) { outJoyKinds.Add(JoyKindDefOf_Music.Music); PatchTrySatisfyJoyNeed.MusicQuality = quality; #if DEBUG Verse.Log.Message(String.Format("Checking caravanner {0} for music availability : yes", p.Label)); #endif return; } else { pawnsTmp.Remove(musician); } } #if DEBUG Verse.Log.Message(String.Format("Checking caravanner {0} for music availability: no", p.Label)); #endif }