public Job GetSpectateJob(Pawn pawn)
        {
            if (activityCurrentStage >= data.ActivityJobs.Count())
            {
                return(null);
            }

            PawnDuty duty = pawn.mindState.duty;

            if (duty == null)
            {
                return((Job)null);
            }

            IntVec3 cell;

            ActivityUtility.TrySendStageEndedSignal(pawn);

            if (pawn == data.Organizer)
            {
                Job job = new Job(JobDefOf.SpectateCeremony, (LocalTargetInfo)data.Facility.Position);
                OrganizerReserve(pawn, job);
            }

            if (!WatchBuildingUtility.TryFindBestWatchCell(data.Facility, pawn, true, out IntVec3 result, out Building chair))
            {
                WatchBuildingUtility.TryFindBestWatchCell(data.Facility, pawn, false, out result, out chair);
            }
            return(new Job(JobDefOf.SpectateCeremony, (LocalTargetInfo)result, (LocalTargetInfo)data.Facility));
        }
 public static Toil StageEnded(Pawn pawn)
 {
     return(new Toil()
     {
         initAction = (Action)(() => ActivityUtility.TrySendStageEndedSignal(pawn))
     });
 }