Esempio n. 1
0
        protected override IEnumerable <Toil> MakeNewToils()
        {
            this.FailOnDespawnedOrNull(TargetIndex.A);
            this.FailOnMentalState(TargetIndex.A);
            this.FailOnNotAwake(TargetIndex.A);
            this.FailOn(() => IoM_StoryUtilities.PawnInPrivateQuarters(Talkee));
            yield return(Toils_Reserve.Reserve(TargetIndex.A, 1));

            yield return(Toils_InterpersonalToilsIoM.GotoPawn(this.pawn, this.Talkee, this.Talkee.guest.interactionMode));

            yield return(Toils_Interpersonal.WaitToBeAbleToInteract(this.pawn));

            yield return(Toils_InterpersonalToilsIoM.ChatToPawn(this.pawn, this.Talkee, ChatType));

            for (int i = 0; i < Rand.Range(2, 5); i++)
            {
                yield return(Toils_InterpersonalToilsIoM.GotoPawn(this.pawn, this.Talkee, PrisonerInteractionMode.Chat));

                yield return(Toils_InterpersonalToilsIoM.ChatToPawn(this.pawn, this.Talkee, ChatType));
            }

            yield return(Toils_Interpersonal.SetLastInteractTime(TargetIndex.A));

            if (base.CurJob.def == JobDefOf.PrisonerAttemptRecruit)
            {
                yield return(Toils_Interpersonal.TryRecruit(TargetIndex.A));
            }
        }
        protected override Job TryGiveJob(Pawn pawn)
        {
            Pawn colonist = pawn.Map.mapPawns.FreeColonistsSpawned.Where((Pawn p) => p.Awake()).RandomElement();

            if (!IoM_StoryUtilities.PawnInPrivateQuarters(colonist))
            {
                return(this.FollowJob(colonist));
            }
            return(null);
        }