public static void ApplyThoughts(Pawn listener, JoyKindDef joyKindDef) { if (joyKindDef != JoyKindDefOf_Music.Music) { return; } var thought = PerformanceManager.GetThoughtDef(MusicQuality); if (thought == null) { return; } var caravan = listener.GetCaravan(); var audience = new List <Pawn>(); foreach (var pawn in caravan.pawns) { if (!pawn.NonHumanlikeOrWildMan() && pawn.health.capacities.CapableOf(PawnCapacityDefOf.Hearing) && pawn.Awake()) { audience.Add(pawn); } } #if DEBUG Verse.Log.Message(string.Format("Giving memory of {0} to {1} pawns (caravan)", thought.stages[0].label, audience.Count())); #endif foreach (var audienceMember in audience) { audienceMember.needs.mood.thoughts.memories.TryGainMemory(thought); } }