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); }