public static void ChangeToil(ref Toil toil, JobDriver driver) { Pawn pawn = toil.actor ?? driver.pawn; if (pawn == null) { Log.Error("TF_BaseMessage".Translate() + "TF_Error_ChangeToil".Translate(toil.Named(null), "", typeof(JobDriver_DoBill).Named(null))); return; } var billGiver = pawn.CurJob.targetA.Thing.def; #if DEBUG Log.Message($"Test 3.0: {Dictionaries.billGiverToolType.TryGetValue(billGiver, out var toolType2)} : {toolType2}"); #endif if (!pawn.CanUseTools(out var tracker) || !Dictionaries.billGiverToolType.TryGetValue(billGiver, out var toolType)) { return; } var tool = tracker.UsedHandler.BestTool[toolType]; #if DEBUG var test = new System.Text.StringBuilder($"Test 3.1: {tracker.UsedHandler.BestTool[toolType]}\n"); foreach (var a in tracker.UsedHandler.BestTool) { test.AppendLine($"{a.Key} : {a.Value}"); } Log.Message(test.ToString()); #endif if (tool != null) { ToilPatch.HasTool(ref toil, pawn, tool, tracker); } else { ToilPatch.NoTool(ref toil, pawn, tracker); } }