Example #1
0
        public bool TryDoRandomMoodCausedMentalBreak()
        {
            if (!CanDoRandomMentalBreaks || pawn.Downed || !pawn.Awake() || pawn.InMentalState)
            {
                return(false);
            }
            if (pawn.Faction != Faction.OfPlayer && CurrentDesiredMoodBreakIntensity != MentalBreakIntensity.Extreme)
            {
                return(false);
            }
            if (QuestUtility.AnyQuestDisablesRandomMoodCausedMentalBreaksFor(pawn))
            {
                return(false);
            }
            if (!CurrentPossibleMoodBreaks.TryRandomElementByWeight((MentalBreakDef d) => d.Worker.CommonalityFor(pawn, moodCaused: true), out MentalBreakDef result))
            {
                return(false);
            }
            Thought      thought      = RandomFinalStraw();
            TaggedString taggedString = "MentalStateReason_Mood".Translate();

            if (thought != null)
            {
                taggedString += "\n\n" + "FinalStraw".Translate(thought.LabelCap);
            }
            return(result.Worker.TryStart(pawn, taggedString, causedByMood: true));
        }