コード例 #1
0
        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);
            }
        }