RimWorld

RimWorld

Repairable Gear
 This topic has been pinned, so it's probably important
SteveZero  [developer] 23 May, 2021 @ 4:20pm
Report Here: Bugs & Balance Concerns
If there are error logs please share link if you can, otherwise paste the text here. Please add some context on what you were doing if possible. How to recreate the issue.

* Don't forget to subscribe to discussion, at least until your bug is fixed. I might need to ask some follow up questions to be able to fix. Thanks!
Last edited by SteveZero; 25 May, 2021 @ 8:51pm
< >
Showing 1-15 of 64 comments
Reedwhisker 24 May, 2021 @ 2:01am 
hey, cool mod! But i have a bug. Some items (both modded and vanilla) cant be repaired via right click .When i right click the item, nothing happens, so i cant even haul the item. But my ALL work priorities for ALL colonists become set to "1" after that. Idk what causes the bug, but i beg u just to make checkbox in mod's settings, disabling the ability to repair the item with right click. Thanks. Sorry for my "goodest" english. I'll try to get the error log
Last edited by Reedwhisker; 24 May, 2021 @ 6:26am
Reedwhisker 24 May, 2021 @ 4:51am 
Root level exception in OnGUI(): System.NullReferenceException: Object reference not set to an instance of an object
at RepairableGear.WorkGiver_RepairItem.GetBillGiverRootCell (Verse.Thing billGiver, Verse.Pawn forPawn) [0x00010] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.WorkGiver_RepairItem.TryFindBestIngredients (Verse.Pawn pawn, Verse.Thing workbench, Verse.Thing repairableThing, System.Collections.Generic.List`1[T] ingredients, RimWorld.Bill bill, System.Collections.Generic.List`1[T] repairCost) [0x00071] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.CompRepairableThing+<CompFloatMenuOptions>d__2.MoveNext () [0x00272] in <42fcf2625362430dab868a30c8138bf8>:0
at Verse.ThingWithComps+<GetFloatMenuOptions>d__40.MoveNext () [0x00102] in <c36f9493c9844ddaa7fb5c788416098f>:0
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.AddHumanlikeOrders_Patch7(UnityEngine.Vector3,Verse.Pawn,System.Collections.Generic.List`1<Verse.FloatMenuOption>)
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.ChoicesAtFor_Patch3(UnityEngine.Vector3,Verse.Pawn)
at RimWorld.FloatMenuMakerMap.TryMakeFloatMenu (Verse.Pawn pawn) [0x00056] in <c36f9493c9844ddaa7fb5c788416098f>:0
at (wrapper dynamic-method) RimWorld.Selector.RimWorld.Selector.HandleMapClicks_Patch1(RimWorld.Selector)
at RimWorld.Selector.SelectorOnGUI () [0x00000] in <c36f9493c9844ddaa7fb5c788416098f>:0
at RimWorld.MapInterface.HandleLowPriorityInput () [0x0000f] in <c36f9493c9844ddaa7fb5c788416098f>:0
at RimWorld.UIRoot_Play.UIRootOnGUI () [0x000d3] in <c36f9493c9844ddaa7fb5c788416098f>:0
at (wrapper dynamic-method) Verse.Root.Verse.Root.OnGUI_Patch1(Verse.Root)
Verse.Log:Error(String, Boolean)
Verse.Root:Verse.Root.OnGUI_Patch1(Root)
Koris 24 May, 2021 @ 10:15am 
Hey there! Loving the mod, but some items can't be right-clicked. I'm using "Achtung" and it tells me it caught and prevented some mod exception. It then offers me to copy it to the clipboard, the result is this:

System.NullReferenceException: Object reference not set to an instance of an object
at RepairableGear.WorkGiver_RepairItem.GetBillGiverRootCell (Verse.Thing billGiver, Verse.Pawn forPawn) [0x00010] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.WorkGiver_RepairItem.TryFindBestIngredients (Verse.Pawn pawn, Verse.Thing workbench, Verse.Thing repairableThing, System.Collections.Generic.List`1[T] ingredients, RimWorld.Bill bill, System.Collections.Generic.List`1[T] repairCost) [0x00071] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.CompRepairableThing+<CompFloatMenuOptions>d__2.MoveNext () [0x00272] in <42fcf2625362430dab868a30c8138bf8>:0
at Verse.ThingWithComps+<GetFloatMenuOptions>d__40.MoveNext () [0x00102] in <c36f9493c9844ddaa7fb5c788416098f>:0
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.AddHumanlikeOrders_Patch6(UnityEngine.Vector3,Verse.Pawn,System.Collections.Generic.List`1<Verse.FloatMenuOption>)
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.ChoicesAtFor_Patch5(UnityEngine.Vector3,Verse.Pawn)

Any idea what might be causing this?
SteveZero  [developer] 24 May, 2021 @ 12:09pm 
@Koris, @ReedWhisker, Can you give an example of what were you trying to right-click? The error seems to be complaining about not knowing where the repair bench is. I'll fix this soon. I thought I had in the last update.

Is it breaking your game or is it just spamming your log console?
Last edited by SteveZero; 24 May, 2021 @ 12:10pm
Koris 24 May, 2021 @ 3:18pm 
For me it's not breaking my game, it just doesn't allow me to do this context menu action. I noticed that it reacts differently depending on how damaged the apparel is. I've did some testing. It does not break my game, just "disables" a context menu option for some apparel.

Uninstalled repair bench:

Apparel undamaged/only lightly damaged -> I get a greyed-out option showing me the item can't be repaired as there's no workbench available.

Apparel a bit damaged --> I get the error message mentioned above.

Apparel heavily damaged -> I get the error message mentioned above.

Installed and powered repair bench:

Apparel undamaged/only lightly damaged -> I get the option showing me that I can repair the item for maintenance only.

Apparel a bit damaged -> it shows me the cost and repair chance.

Apparel heavily damaged -> It shows me the greyed-out box telling me the item is irreparably damaged.

If you'd like a mod list or some other testing, feel free to ask for more specifics.


Originally posted by SteveZero:
@Koris, @ReedWhisker, Can you give an example of what were you trying to right-click? The error seems to be complaining about not knowing where the repair bench is. I'll fix this soon. I thought I had in the last update.

Is it breaking your game or is it just spamming your log console?
Last edited by Koris; 24 May, 2021 @ 3:18pm
Wolski 25 May, 2021 @ 12:49am 
This log appears when someone is trying to reapair flak apparel. Causing massive lag spikes and seems to repeat it self until a pawn gives up repairing that piece of apparel. (I'm using "Flak fabrick" mod)

Cannot get AdjustedCostList for Apparel_FlakPants with null Stuff.
Verse.Log:Verse.Log.Error_Patch2(String, Boolean)
RimWorld.CostListCalculator:CostListAdjusted(BuildableDef, ThingDef, Boolean)
RimWorld.CostListCalculator:CostListAdjusted(Thing)
RepairableGear.ThingExtensions:GetRepairCostList(Thing)
RepairableGear.ThingExtensions:IsRepairable(Thing)
RepairableGear.ThingExtensions:IsRepairable(Thing, Pawn, Thing, Bill, Boolean)
RepairableGear.<>c__DisplayClass16_0:<FindRepairableThings>b__2(Thing)
System.Linq.WhereListIterator`1:MoveNext()
System.Collections.Generic.List`1:InsertRange(Int32, IEnumerable`1)
System.Collections.Generic.List`1:AddRange(IEnumerable`1)
RepairableGear.<>c__DisplayClass16_0:<FindRepairableThings>b__1(Region)
Verse.BFSWorker:BreadthFirstTraverseWork(Region, RegionEntryPredicate, RegionProcessor, Int32, RegionType)
Verse.RegionTraverser:BreadthFirstTraverse(Region, RegionEntryPredicate, RegionProcessor, Int32, RegionType)
RepairableGear.WorkGiver_RepairItem:FindRepairableThings(Pawn, Thing, Bill)
RepairableGear.WorkGiver_RepairItem:JobOnThing(Pawn, Thing, Boolean)
RimWorld.WorkGiver_Scanner:HasJobOnThing(Pawn, Thing, Boolean)
RimWorld.<>c__DisplayClass3_1:<TryIssueJobPackage>b__0(Thing)
Verse.<>c__DisplayClass2_0:<ClosestThingReachable>b__0(Thing)
Verse.GenClosest:<ClosestThing_Global>g__Process|5_0(Thing, <>c__DisplayClass5_0&)
Verse.GenClosest:ClosestThing_Global(IntVec3, IEnumerable, Single, Predicate`1, Func`2)
Verse.GenClosest:ClosestThingReachable(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Single, Predicate`1, IEnumerable`1, Int32, Int32, Boolean, RegionType, Boolean)
RimWorld.JobGiver_Work:RimWorld.JobGiver_Work.TryIssueJobPackage_Patch0(JobGiver_Work, Pawn, JobIssueParams)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Tagger:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Subtree: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:Verse.AI.Pawn_JobTracker.DetermineNextJob_Patch4(Pawn_JobTracker, ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:CheckForJobOverride()
Verse.AI.<>c__DisplayClass2_0:<DoRecipeWork>b__1()
CarpenterTable.<>c__DisplayClass0_0:<Postfix>b__0()
Verse.AI.JobDriver:Verse.AI.JobDriver.DriverTick_Patch0(JobDriver)
Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.JobTrackerTick_Patch0(Pawn_JobTracker)
Verse.Pawn:Verse.Pawn.Tick_Patch3(Pawn)
Verse.TickList:Tick()
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch3(TickManager)
Verse.TickManager:Verse.TickManager.TickManagerUpdate_Patch1(TickManager)
Verse.Game:Verse.Game.UpdatePlay_Patch1(Game)
Verse.Root_Play:Verse.Root_Play.Update_Patch0(Root_Play)

followed by this log:

Could not reserve Thing_Apparel_FlakJacket87279419 (layer: null) for Ben for job RG_RepairItem (Job_8197806) A=Thing_RG_ElectricRepairTable72223535 B=Thing_Apparel_FlakJacket87279419 (now doing job RG_RepairItem (Job_8197806) A=Thing_RG_ElectricRepairTable72223535 B=Thing_Apparel_FlakJacket87279419(curToil=2)) for maxPawns 1 and stackCount -1. Existing reserver: Mahoney doing job HaulToInventory (Job_8197654) A=Thing_Apparel_FlakJacket87279419 B=(128, 0, 148) (toilIndex=1)
Verse.Log:Verse.Log.Warning_Patch1(String, Boolean)
Verse.AI.ReservationManager:Verse.AI.ReservationManager.LogCouldNotReserveError_Patch1(ReservationManager, Pawn, Job, LocalTargetInfo, Int32, Int32, ReservationLayerDef)
Verse.AI.ReservationManager:Verse.AI.ReservationManager.Reserve_Patch2(ReservationManager, Pawn, Job, LocalTargetInfo, Int32, Int32, ReservationLayerDef, Boolean)
Verse.AI.ReservationUtility:Reserve(Pawn, LocalTargetInfo, Job, Int32, Int32, ReservationLayerDef, Boolean)
Verse.AI.<>c__DisplayClass0_0:<Reserve>b__0()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.StartJob_Patch2(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:CheckForJobOverride()
Verse.AI.<>c__DisplayClass2_0:<DoRecipeWork>b__1()
CarpenterTable.<>c__DisplayClass0_0:<Postfix>b__0()
Verse.AI.JobDriver:Verse.AI.JobDriver.DriverTick_Patch0(JobDriver)
Verse.AI.Pawn_JobTracker:Verse.AI.Pawn_JobTracker.JobTrackerTick_Patch0(Pawn_JobTracker)
Verse.Pawn:Verse.Pawn.Tick_Patch3(Pawn)
Verse.TickList:Tick()
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch3(TickManager)
Verse.TickManager:Verse.TickManager.TickManagerUpdate_Patch1(TickManager)
Verse.Game:Verse.Game.UpdatePlay_Patch1(Game)
Verse.Root_Play:Verse.Root_Play.Update_Patch0(Root_Play)
Wolski 25 May, 2021 @ 1:08am 
It seems to happen only for flak pants for some reason.
GKore 25 May, 2021 @ 2:05am 
Happy to read the right-click bug is already getting attention!
I also have this on vanilla and modded weapons (thought is was an issue with VE first). I did not find any logic yet to why some weapons are and others aren't right clickable...
SteveZero  [developer] 25 May, 2021 @ 7:46am 
@Gkore, not all weapons are repairable. E.g. anything without quality or one time use weapons. I'll add a message for these situations so its more clear when something is intentionally not repairable vs. something is wrong.

@Wolski, I'll try to see if I can replicate.
GVLT 25 May, 2021 @ 9:37am 
I double that issue. Before installing repair bench any apparel item wasn't interactable via rightclick
GKore 25 May, 2021 @ 2:24pm 
Originally posted by SteveZero:
@Gkore, not all weapons are repairable. E.g. anything without quality or one time use weapons. I'll add a message for these situations so its more clear when something is intentionally not repairable vs. something is wrong.

But i have the exact same issue as Reedwhisker. Extract from right clicking the vanilla revolver:

Root level exception in OnGUI(): System.NullReferenceException: Object reference not set to an instance of an object
at RepairableGear.WorkGiver_RepairItem.GetBillGiverRootCell (Verse.Thing billGiver, Verse.Pawn forPawn) [0x00010] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.WorkGiver_RepairItem.TryFindBestIngredients (Verse.Pawn pawn, Verse.Thing workbench, Verse.Thing repairableThing, System.Collections.Generic.List`1[T] ingredients, RimWorld.Bill bill, System.Collections.Generic.List`1[T] repairCost) [0x00071] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.CompRepairableThing+<CompFloatMenuOptions>d__2.MoveNext () [0x00272] in <42fcf2625362430dab868a30c8138bf8>:0
at Verse.ThingWithComps+<GetFloatMenuOptions>d__40.MoveNext () [0x00102] in <7927e938de4c4089b4add4215e58d5b1>:0
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.AddHumanlikeOrders_Patch23(UnityEngine.Vector3,Verse.Pawn,System.Collections.Generic.List`1<Verse.FloatMenuOption>)
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.ChoicesAtFor_Patch3(UnityEngine.Vector3,Verse.Pawn)
at RimWorld.FloatMenuMakerMap.TryMakeFloatMenu (Verse.Pawn pawn) [0x00056] in <7927e938de4c4089b4add4215e58d5b1>:0
at (wrapper dynamic-method) RimWorld.Selector.RimWorld.Selector.HandleMapClicks_Patch1(RimWorld.Selector)
at RimWorld.Selector.SelectorOnGUI () [0x00000] in <7927e938de4c4089b4add4215e58d5b1>:0
at RimWorld.MapInterface.HandleLowPriorityInput () [0x0000f] in <7927e938de4c4089b4add4215e58d5b1>:0
at (wrapper dynamic-method) RimWorld.UIRoot_Play.RimWorld.UIRoot_Play.UIRootOnGUI_Patch1(RimWorld.UIRoot_Play)
at (wrapper dynamic-method) Verse.Root.Verse.Root.OnGUI_Patch1(Verse.Root)
Verse.Log:Verse.Log.Error_Patch2(String, Boolean)
Verse.Root:Verse.Root.OnGUI_Patch1(Root)
Reedwhisker 26 May, 2021 @ 12:46am 
hey. Idk if it helps you, but i forgot to mention that i use Combat Extended. Can it cause this bug?
Last edited by Reedwhisker; 26 May, 2021 @ 12:46am
SteveZero  [developer] 26 May, 2021 @ 7:53am 
Originally posted by Reedwhisker:
hey. Idk if it helps you, but i forgot to mention that i use Combat Extended. Can it cause this bug?

No, CE isn't the problem. I've replicated and fixed the bug already. I'm bundling the fix with an update I'm releasing sometime this week.
Inquisition 26 May, 2021 @ 8:58pm 
Achtung is also giving me an error when right clicking any damaged clothing with a pawn I want to put on clothes. I do not have a repair thing built.

Screenshot: https://ibb.co/0BYxsBC

System.NullReferenceException: Object reference not set to an instance of an object
at RepairableGear.WorkGiver_RepairItem.GetBillGiverRootCell (Verse.Thing billGiver, Verse.Pawn forPawn) [0x00010] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.WorkGiver_RepairItem.TryFindBestIngredients (Verse.Pawn pawn, Verse.Thing workbench, Verse.Thing repairableThing, System.Collections.Generic.List`1[T] ingredients, RimWorld.Bill bill, System.Collections.Generic.List`1[T] repairCost) [0x00071] in <42fcf2625362430dab868a30c8138bf8>:0
at RepairableGear.CompRepairableThing+<CompFloatMenuOptions>d__2.MoveNext () [0x00272] in <42fcf2625362430dab868a30c8138bf8>:0
at Verse.ThingWithComps+<GetFloatMenuOptions>d__40.MoveNext () [0x00102] in <7927e938de4c4089b4add4215e58d5b1>:0
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.AddHumanlikeOrders_Patch18(UnityEngine.Vector3,Verse.Pawn,System.Collections.Generic.List`1<Verse.FloatMenuOption>)
at (wrapper dynamic-method) RimWorld.FloatMenuMakerMap.RimWorld.FloatMenuMakerMap.ChoicesAtFor_Patch6(UnityEngine.Vector3,Verse.Pawn)

GM9 29 May, 2021 @ 9:53am 
Floor breaks under the reparing table then colonist start reparing
< >
Showing 1-15 of 64 comments
Per page: 1530 50