RimWorld

RimWorld

Prison Labor
Specter Jan 22, 2023 @ 6:49am
Prisoners take multiple jobs in one tick
leads to spikes...
tried having a look at the source, but couldn't figure out what causes this

Lyra started 10 jobs in one tick. newJob=OperateDeepDrill (Job_88306034) A=Thing_DeepDrill2043125 jobGiver=PrisonLabor.Core.AI.JobGivers.JobGiver_Labor jobList=(OperateDeepDrill (Job_88306024) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306025) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306026) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306027) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306028) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306029) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306030) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306031) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306032) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306033) A=Thing_DeepDrill2043125) (OperateDeepDrill (Job_88306034) A=Thing_DeepDrill2043125) UnityEngine.StackTraceUtility:ExtractStackTrace () Verse.Log:Warning (string) (wrapper dynamic-method) Verse.AI.JobUtility:Verse.AI.JobUtility.TryStartErrorRecoverJob_Patch1 (Verse.Pawn,string,System.Exception,Verse.AI.JobDriver) (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) Verse.AI.JobDriver:EndJobWith (Verse.AI.JobCondition) Verse.AI.JobDriver:CheckCurrentToilEndOrFail () Verse.AI.JobDriver:TryActuallyStartNextToil () Verse.AI.JobDriver:ReadyForNextToil () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch5 (Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool,System.Nullable`1<bool>,bool,bool) Verse.AI.Pawn_JobTracker:TryFindAndStartJob () (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch4 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool) (wrapper dynamic-method) Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.JobTrackerTick_Patch0 (Verse.AI.Pawn_JobTracker) (wrapper dynamic-method) Verse.Pawn:Verse.Pawn.Tick_Patch3 (Verse.Pawn) Verse.TickList:Tick () (wrapper dynamic-method) Verse.TickManager:Verse.TickManager.DoSingleTick_Patch4 (Verse.TickManager) Verse.TickManager:TickManagerUpdate () (wrapper dynamic-method) Verse.Game:Verse.Game.UpdatePlay_Patch1 (Verse.Game) (wrapper dynamic-method) Verse.Root_Play:Verse.Root_Play.Update_Patch1 (Verse.Root_Play)