PrisonLabor icon indicating copy to clipboard operation
PrisonLabor copied to clipboard

Pathfinding error

Open crazykid080 opened this issue 3 years ago • 3 comments

Hi, I've been having a consistent error that's been flooding my logs that seems to be related to pathfinding, as it seems to be related to Prison Labor I've started here Error:

Exception in BreadthFirstTraverse: System.ArgumentNullException: Value cannot be null.
Parameter name: key
  at System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) [0x00008] in <567df3e0919241ba98db88bec4c6696f>:0 
  at System.Collections.Generic.Dictionary`2[TKey,TValue].TryGetValue (TKey key, TValue& value) [0x00000] in <567df3e0919241ba98db88bec4c6696f>:0 
  at RimWorld.ListerBuildingsRepairable.HashSetFor (RimWorld.Faction fac) [0x00000] in <d72310b4d8f64d25aee502792b58549f>:0 
  at RimWorld.ListerBuildingsRepairable.Contains (RimWorld.Faction fac, Verse.Building b) [0x00000] in <d72310b4d8f64d25aee502792b58549f>:0 
  at PrisonLabor.WorkUtils.ConstructionUtils.HasJobOnThingFixed (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00029] in <7f01f69f1ca84410921348a1d376f797>:0 
  at PrisonLabor.HarmonyPatches.Patches_Construction.Patch_WorkGiver_Repair.HasJobOnThingPrefix (System.Boolean& __result, Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x0000c] in <7f01f69f1ca84410921348a1d376f797>:0 
  at (wrapper dynamic-method) RimWorld.WorkGiver_Repair.RimWorld.WorkGiver_Repair.HasJobOnThing_Patch2(RimWorld.WorkGiver_Repair,Verse.Pawn,Verse.Thing,bool)
  at PrisonLabor.Core.AI.JobGivers.JobGiver_Labor+<>c__DisplayClass7_1.<TryIssueJobPackage>b__0 (Verse.Thing t) [0x00013] in <7f01f69f1ca84410921348a1d376f797>:0 
  at Verse.GenClosest+<>c__DisplayClass4_0.<RegionwiseBFSWorker>b__1 (Verse.Region r) [0x000f7] in <d72310b4d8f64d25aee502792b58549f>:0 
  at Verse.RegionTraverser+BFSWorker.BreadthFirstTraverseWork (Verse.Region root, Verse.RegionEntryPredicate entryCondition, Verse.RegionProcessor regionProcessor, System.Int32 maxRegions, Verse.RegionType traversableRegionTypes) [0x00054] in <d72310b4d8f64d25aee502792b58549f>:0 
  at Verse.RegionTraverser.BreadthFirstTraverse (Verse.Region root, Verse.RegionEntryPredicate entryCondition, Verse.RegionProcessor regionProcessor, System.Int32 maxRegions, Verse.RegionType traversableRegionTypes) [0x00046] in <d72310b4d8f64d25aee502792b58549f>:0 
Verse.Log:Error(String, Boolean)
Verse.RegionTraverser:BreadthFirstTraverse(Region, RegionEntryPredicate, RegionProcessor, Int32, RegionType)
Verse.GenClosest:RegionwiseBFSWorker(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Predicate`1, Func`2, Int32, Int32, Single, Int32&, RegionType, Boolean)
Verse.GenClosest:ClosestThingReachable(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Single, Predicate`1, IEnumerable`1, Int32, Int32, Boolean, RegionType, Boolean)
PrisonLabor.Core.AI.JobGivers.JobGiver_Labor:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_SubtreesByTag:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.Pawn_JobTracker:DetermineNextJob(ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch2(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Verse.Pawn.Tick_Patch1(Pawn)
Verse.TickList:Tick()
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch1(TickManager)
Verse.TickManager:TickManagerUpdate()
Verse.Game:Verse.Game.UpdatePlay_Patch2(Game)
Verse.Root_Play:Verse.Root_Play.Update_Patch1(Root_Play)

crazykid080 avatar Feb 04 '21 05:02 crazykid080

Thanks for reporting. As a workaround you can disable construction job for prisoner. Does prisoner have faction?

Hazzer avatar Feb 04 '21 10:02 Hazzer

Thanks for the quick reply, most of them do, however I picked up two wild people. I decided to relook through the message myself to check if it may be related to the complex jobs mod and it seems to be related to the repair job directly, I tested this my removing the regular construct job from the one prisoner that had it, ran the game for a minute and an error did pop up. After testing this by removing the repair job I can confirm it's the repair job directly. I hope this helps. I just did another quick test by checking if it's related to the wild people I captured, it looks like that could be related

crazykid080 avatar Feb 04 '21 22:02 crazykid080

Yeah it looks like wild men doesnt have setted any faction. Thats way null exception is generated. Need to write some patches :)

Hazzer avatar Feb 05 '21 10:02 Hazzer