[1.1] Misc. Robots++

Started by alaestor, September 16, 2016, 12:08:58 AM

Previous topic - Next topic

neltnerb

How does one do this? I have the debug menus, but I can't figure out how to get that kind of debug information for a selected pawn. Sorry for the basic questions!

Harry_Dicks

Go to the actual mod folder through your operating system, not in the game. Find the mod you want to change, open the folder for it, then open the Defs folder. From there, try to figure out what sub folder you need to find in the Defs. You could just go through them all, or like I said, use Notepad++ "Find in Files" feature to find something called a <thingDef> for what you want to change. Say you want to change crafter level 2's stats on something. So use Notepad++ to find the thingDef for your crafter tier 2 bot. There you will look at every single stat there is available for crafter tier2 bot. If you don't see the stats you want to modify, then you look at the parent node. You can find the parent node for this thingdef usually in the same xml file. If it isn't in there, use your trusty "find in files" to see what xml this parent node is in. Once you find the next parent node, you can search all of the stats that this parent node modifies.

Once you understand xml inheritance, you can usually trace what you want to modifiy backwards through it's parent nodes until you find the stat you want to modify. I'm sure that I'm probably making this harder to understand that it needs to be, but if you can understand what all of the xml files are doing, then it shouldn't be too difficult to diagnose a problem like this, I would hope. :)

neltnerb

Okay, so here is what I found.

Stats_Pawns_WorkGeneral.xml has a <StatDef> called WorkSpeedGlobal with a base value of 1.

I also found in Traits_Spectrum.xml that the trait "Industrious" calls:

<statOffsets>
<WorkSpeedGlobal>0.35</WorkSpeedGlobal>
</statOffsets>

I tried simply adding those three lines to the robot definition, but it complains then when I load the game that:

"XML error: <statOffsets><WorkSpeedGlobal>10</WorkSpeedGlobal></statOffset> doesn't correspond to any field in type X2_ThingDef_AIRobot."

I then found the X2_ThingDef_AIRobot def at the top of RPP_Races.xml and just tried to add <WorkSpeedGlobal>1</WorkSpeedGlobal> in the <statBases> section.

Unfortunately the error is still there. Does anything in that chain ring a bell as wrong? This is all new to me so I'm just guessing, I don't know much about XML.

Harry_Dicks

#333
Quote from: neltnerb on February 10, 2018, 10:03:29 PM
Unfortunately the error is still there. Does anything in that chain ring a bell as wrong? This is all new to me so I'm just guessing, I don't know much about XML.

It sounds to me like you're definitely on the right trail and have made excellent progress. Honestly, I don't know the answer or I would tell you, but I would also rather see you use the tools you have available to you to be able to figure this out yourself. You're almost there, keep going, you can figure this out! Either way, come back if you are super stumped and I'm sure someone here can help you.

EDIT: It seems like what you are looking for will be in the <statOffsets> inside of whichever lifestage you want to modify, and I think the following strings might work. You can maybe try this, but no guarantees ;)

<MiningSpeed>+.5</MiningSpeed>
<MiningYield>+.5</MiningYield>

sai05

#334
Helo how to fix this ?

Crafter Bot (Tier 3) started 10 jobs in one tick. newJob=Mend (Job_27383124) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882 jobGiver=AIRobot.X2_JobGiver_Work jobList=(Mend (Job_27383104) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383106) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383108) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383110) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383112) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383114) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383116) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383118) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383120) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383122) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882) (Mend (Job_27383124) A=Thing_TableMending2210838 B=Thing_Gun_ChainShotgun3833882)  lastJobGiver=AIRobot.X2_JobGiver_Work

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)



and ER Robot Bug

JobDriver threw exception in initAction. Pawn=ER Bot (Tier 5), Job=TendPatient (Job_31960740) A=Thing_Human2883338 B=Thing_Medicine4775695, Exception: System.NullReferenceException: Object reference not set to an instance of an object
at Psychology.Harmony.TendUtility_TendPatch.BleedingHeartThought (Verse.Pawn,Verse.Pawn) <0x00015>
at (wrapper dynamic-method) RimWorld.TendUtility.DoTend_Patch1 (Verse.Pawn,Verse.Pawn,RimWorld.Medicine) <0x004e9>
at RimWorld.Toils_Tend/<FinalizeTend>c__AnonStorey1.<>m__0 () <0x000e4>
at Verse.AI.JobDriver.TryActuallyStartNextToil () <0x002e9>
lastJobGiver=AIRobot.X2_JobGiver_Work, curJob.def=TendPatient, curDriver=RimWorld.JobDriver_TendPatient

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

JobDriver threw exception in initAction. Pawn=ER Bot (Tier 5), Job=TendPatient (Job_31960926) A=Thing_Human222054 B=Thing_Medicine4775746, Exception: System.NullReferenceException: Object reference not set to an instance of an object
at Psychology.Harmony.TendUtility_TendPatch.BleedingHeartThought (Verse.Pawn,Verse.Pawn) <0x00015>
at (wrapper dynamic-method) RimWorld.TendUtility.DoTend_Patch1 (Verse.Pawn,Verse.Pawn,RimWorld.Medicine) <0x004e9>
at RimWorld.Toils_Tend/<FinalizeTend>c__AnonStorey1.<>m__0 () <0x000e4>
at Verse.AI.JobDriver.TryActuallyStartNextToil () <0x002e9>
lastJobGiver=AIRobot.X2_JobGiver_Work, curJob.def=TendPatient, curDriver=RimWorld.JobDriver_TendPatient

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

https://ludeon.com/forums/index.php?topic=39136.0


and can we fix disable Robot ?

FadingFog


Scottvrakis

I, too, have a problem related to this mod. The trace is fairly small, but it's still gibberish to me:

"Exception in Verse.AI.ThinkNode_PrioritySorter GetPriority: System.NullReferenceException: Object reference not set to an instance of an object
  at AIRobot.X2_JobGiver_RechargeEnergy.GetPriority (Verse.Pawn pawn) [0x00000] in <filename unknown>:0
  at Verse.AI.ThinkNode_PrioritySorter.TryIssueJobPackage (Verse.Pawn pawn, JobIssueParams jobParams) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional: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:EndCurrentJob(JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick_Patch1(Object)
AIRobot.X2_AIRobot:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()"

Haplo

How did you get a nullref error in a priority sorter that was created especially for the robots?
I've updated the code for this to hopefully prevent stuff like that, but still.. how did you do that?
As far as I've seen it, this could only happen if the robot has no recharge base, or the base is destroyed maybe.
You should just destroy the robot + station and debug spawn a new recharge station..

Scottvrakis

Quote from: Haplo on April 08, 2018, 03:10:45 PM
How did you get a nullref error in a priority sorter that was created especially for the robots?
I've updated the code for this to hopefully prevent stuff like that, but still.. how did you do that?
As far as I've seen it, this could only happen if the robot has no recharge base, or the base is destroyed maybe.
You should just destroy the robot + station and debug spawn a new recharge station..

Yeah I guess at some point the base made 2 bots because I had only 1 base down and 2 hauler bots were running around the base. I killed one of them with the console and it's been all good since, but now I've been getting various other errors. Likely unrelated to Robots++ and more related to Rimsenal and spawning raids.

kingind

Just installed this mod and I love it. Only issue I'm having atm is that when people are in the hospital I've created my er and omni bots will go out of their way to feed them kibble. Is there any way to prevent that? I've already set the er bots to an area, but seeing as the omni is...well a jack of all trades I don't want to limit it to one area...any help?

Devlah

Quote from: kingind on April 23, 2018, 12:23:37 AM
Just installed this mod and I love it. Only issue I'm having atm is that when people are in the hospital I've created my er and omni bots will go out of their way to feed them kibble. Is there any way to prevent that? I've already set the er bots to an area, but seeing as the omni is...well a jack of all trades I don't want to limit it to one area...any help?

I too am concerned with this.  I have two ER bots with their stations located in the Hospital, but they keep feeding patients raw food, even though I have a Fridge filled with Lavish meals in each hospital room.  Additionally, I have noticed that all bots can only be restricted to Unrestricted, Home & Animal Area 1, where "Animal Area 1" could technically be anything, but no other areas are listed.

Meanwhile, I have crafters, ER bots, Kitchen bots, etc. Wandering all over the map at random getting attacked by animals and raiders, etc.  when they have no business being anywhere other than working, or at their charging stations.

I'm sure this has been suggested in the past, but I'd like to revisit the concept of:
1.)  Have a setting or default behavior where Robots remain at their charging stations until a Job is self assigned.
2.)  Allow for more area restriction assignments beyond the first two.

I suspect that if I could restrict my ER bots to my hospital, and use the inverse function on the Omni-Bots, I could almost guarantee that my patients will be fed properly, as I have a sneaking suspicion that whenever any pawn self-assigns a "tend patient" task, they grab whichever food is closest to them at that moment, and if they happen to be near raw food at that moment, then that's what they grab.  By restricting the bots to designated areas, we can prevent problematic wandering, and potentially force the ER bots in this scenario to grab the nearest food (in my case Lavish Meals) instead of bringing raw potatoes from the kitchen.

ru22kie

hi guys I'm loving this mod and just having a small problem of the robot menu has disappeared and has not come back was wondering if anyone has had the same or may have a fix
much obliged


[attachment deleted due to age]

Canute

The robot's menu comes from Misc.Robots,  this mod just add more types of robots.

Try to move the whole package
Misc. Core, Misc. Robots, Misc. Robots++  at the end of your modlist and check if that helps.

If not, an error log would be helpful (CTRL-F12).

ru22kie

Ive tried moving the mod still no change
this is the log report
RimWorld 0.18.1722 rev1198
Verse.Log:Message(String)
RimWorld.VersionControl:LogVersionNumber()
Verse.Root:CheckGlobalInit()
Verse.Root:Start()
Verse.Root_Entry:Start()

Rimatomics is up and running.
Verse.Log:Message(String)
Rimatomics.Controller:.ctor(ModContentPack)
System.Reflection.MonoCMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoCMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MonoCMethod:Invoke(BindingFlags, Binder, Object[], CultureInfo)
System.Activator:CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
System.Activator:CreateInstance(Type, Object[], Object[])
System.Activator:CreateInstance(Type, Object[])
Verse.LoadedModManager:LoadAllActiveMods()
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:LoadAllPlayData(Boolean)
Verse.Root:<Start>m__1()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()

Fronter Developments Shields :: Loaded
Verse.Log:Message(String)
FrontierDevelopments.Shields.Mod:.ctor(ModContentPack)
System.Reflection.MonoCMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoCMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MonoCMethod:Invoke(BindingFlags, Binder, Object[], CultureInfo)
System.Activator:CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
System.Activator:CreateInstance(Type, Object[], Object[])
System.Activator:CreateInstance(Type, Object[])
Verse.LoadedModManager:LoadAllActiveMods()
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:LoadAllPlayData(Boolean)
Verse.Root:<Start>m__1()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()

RimFridge: Adding Harmony Postfix to GameComponentUtility.StartedNewGame
Verse.Log:Message(String)
RimFridge.Main:.cctor()
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
Verse.StaticConstructorOnStartupUtility:CallAll()
Verse.PlayDataLoader:<DoPlayLoad>m__2()
Verse.LongEventHandler:ExecuteToExecuteWhenFinished()
Verse.LongEventHandler:UpdateCurrentAsynchronousEvent()
Verse.LongEventHandler:LongEventsUpdate(Boolean&)
Verse.Root:Update_Patch1(Object)
Verse.Root_Entry:Update()

RimFridge: Adding Harmony Postfix to GameComponentUtility.LoadedGame
Verse.Log:Message(String)
RimFridge.Main:.cctor()
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
Verse.StaticConstructorOnStartupUtility:CallAll()
Verse.PlayDataLoader:<DoPlayLoad>m__2()
Verse.LongEventHandler:ExecuteToExecuteWhenFinished()
Verse.LongEventHandler:UpdateCurrentAsynchronousEvent()
Verse.LongEventHandler:LongEventsUpdate(Boolean&)
Verse.Root:Update_Patch1(Object)
Verse.Root_Entry:Update()

RimFridge: Adding Harmony Prefix to CompTemperatureRuinable.DoTicks - Will return false if within a RimFridge
Verse.Log:Message(String)
RimFridge.Main:.cctor()
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
Verse.StaticConstructorOnStartupUtility:CallAll()
Verse.PlayDataLoader:<DoPlayLoad>m__2()
Verse.LongEventHandler:ExecuteToExecuteWhenFinished()
Verse.LongEventHandler:UpdateCurrentAsynchronousEvent()
Verse.LongEventHandler:LongEventsUpdate(Boolean&)
Verse.Root:Update_Patch1(Object)
Verse.Root_Entry:Update()

PickUpAndHaul v0.18.1.9 welcomes you to RimWorld with pointless logspam.
Verse.Log:Message(String)
PickUpAndHaul.HarmonyPatches:.cctor()
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(IntPtr)
System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor(RuntimeTypeHandle)
Verse.StaticConstructorOnStartupUtility:CallAll()
Verse.PlayDataLoader:<DoPlayLoad>m__2()
Verse.LongEventHandler:ExecuteToExecuteWhenFinished()
Verse.LongEventHandler:UpdateCurrentAsynchronousEvent()
Verse.LongEventHandler:LongEventsUpdate(Boolean&)
Verse.Root:Update_Patch1(Object)
Verse.Root_Entry:Update()

[HugsLib] v4.1.1 initialized Children, artfulRobots
Verse.Log:Message(String)
HugsLib.Utils.ModLogger:Message(String, Object[])
HugsLib.HugsLibController:LoadReloadInitialize()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()

Loading game from file Mandalorians colony with mods Core, 818773962, 1225716710, 1296958152, 735106432, 1180721235, 1251360680, 1220397176, 1218412475, 1279012058, 1225610022, 1300947757, 1235518428, 725747149, 725956940, 1127530465, 722085442, 1325099741, 1342150438, 1299680533, 1210535987, 870089952, 1325315317, 798158924, 857164561, 755224256, 704181221, 724602224, 747645520, and 1109070805
Verse.Log:Message(String)
Verse.SavedGameLoader:LoadGameFromSaveFile_Patch1(String)
Verse.Root_Play:<Start>m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()

Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[AIRobot.X2_AIRobot].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at AIRobot.X2_Building_AIRobotRechargeStation.get_GetRobot () [0x00000] in <filename unknown>:0
  at AIRobot.X2_MainTabWindow_Robots.get_Pawns () [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.RecachePawns () [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.RecacheIfDirty () [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.get_Size () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.get_RequestedTabSize () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow.get_InitialSize () [0x00000] in <filename unknown>:0
  at Verse.Window.SetInitialSizeAndPosition () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow.SetInitialSizeAndPosition () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.SetDirty () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.PostOpen () [0x00000] in <filename unknown>:0
  at AIRobot.X2_MainTabWindow_Robots.PostOpen () [0x00000] in <filename unknown>:0
  at Verse.WindowStack.Add (Verse.Window window) [0x00000] in <filename unknown>:0
  at RimWorld.MainTabsRoot.ToggleTab (RimWorld.MainButtonDef newTab, Boolean playSound) [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonWorker_ToggleTab.Activate () [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonWorker.InterfaceTryActivate () [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonWorker.DoButton (Rect rect) [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonsRoot.DoButtons () [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonsRoot.MainButtonsOnGUI () [0x00000] in <filename unknown>:0
  at RimWorld.UIRoot_Play.UIRootOnGUI () [0x00000] in <filename unknown>:0
  at Verse.Root.OnGUI () [0x00000] in <filename unknown>:0

Exception filling window for AIRobot.X2_MainTabWindow_Robots: System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[System.Single].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.PawnTableOnGUI (Vector2 position) [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.DoWindowContents (Rect rect) [0x00000] in <filename unknown>:0
  at Verse.Window+<WindowOnGUI>c__AnonStorey0.<>m__0 (Int32 x) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.<WindowOnGUI>c__AnonStorey0:<>m__0(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)

Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[AIRobot.X2_AIRobot].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at AIRobot.X2_Building_AIRobotRechargeStation.get_GetRobot () [0x00000] in <filename unknown>:0
  at AIRobot.X2_MainTabWindow_Robots.get_Pawns () [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.RecachePawns () [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.RecacheIfDirty () [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.get_Size () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.get_RequestedTabSize () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow.get_InitialSize () [0x00000] in <filename unknown>:0
  at Verse.Window.SetInitialSizeAndPosition () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow.SetInitialSizeAndPosition () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.SetDirty () [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.PostOpen () [0x00000] in <filename unknown>:0
  at AIRobot.X2_MainTabWindow_Robots.PostOpen () [0x00000] in <filename unknown>:0
  at Verse.WindowStack.Add (Verse.Window window) [0x00000] in <filename unknown>:0
  at RimWorld.MainTabsRoot.ToggleTab (RimWorld.MainButtonDef newTab, Boolean playSound) [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonWorker_ToggleTab.Activate () [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonWorker.InterfaceTryActivate () [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonWorker.DoButton (Rect rect) [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonsRoot.DoButtons () [0x00000] in <filename unknown>:0
  at RimWorld.MainButtonsRoot.MainButtonsOnGUI () [0x00000] in <filename unknown>:0
  at RimWorld.UIRoot_Play.UIRootOnGUI () [0x00000] in <filename unknown>:0
  at Verse.Root.OnGUI () [0x00000] in <filename unknown>:0

Exception filling window for AIRobot.X2_MainTabWindow_Robots: System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[System.Single].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at RimWorld.PawnTable.PawnTableOnGUI (Vector2 position) [0x00000] in <filename unknown>:0
  at RimWorld.MainTabWindow_PawnTable.DoWindowContents (Rect rect) [0x00000] in <filename unknown>:0
  at Verse.Window+<WindowOnGUI>c__AnonStorey0.<>m__0 (Int32 x) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.<WindowOnGUI>c__AnonStorey0:<>m__0(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)

Haplo

This is actually a bug in Misc. Robots.
It is already fixed, but not uploaded outside of github yet, as I'm currently unable to update Steam.
Please download it from this collection:
https://github.com/HaploX1/RimWorld-Miscellaneous_Mods