rheirman / WhatTheHack

Mechanoid hacking
16 stars 18 forks source link

After constructing a mechanoid hacking facility, inspecting it causes an error #39

Closed CErratum closed 4 years ago

CErratum commented 4 years ago

As above. When a hacking facility is built - either through God mode or 'naturally' by pawns, clicking on it to inspect it causes the error below. Hacking facility then becomes indestructible - cannot be disassembled by pawns or via god mode, and cannot be destroyed through Dev mode commands.

GetInspectString exception on WTH_HackingTable1849564:
System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.Building_Bed.get_PlayerCanSeeOwners () [0x00006] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at (wrapper dynamic-method) RimWorld.Building_Bed.DMD<DMD<GetInspectString_Patch0>?1713897472::GetInspectString_Patch0>(RimWorld.Building_Bed)
  at RimWorld.InspectPaneFiller.DrawInspectStringFor (Verse.ISelectable sel, UnityEngine.Rect rect) [0x00000] in <29684bdca4b441d38f64a3f064edc8ed>:0 
Verse.Log:Error(String, Boolean)
RimWorld.InspectPaneFiller:DrawInspectStringFor(ISelectable, Rect)
RimWorld.InspectPaneFiller:DMD<DMD<DoPaneContentsFor_Patch1>?-429468800::DoPaneContentsFor_Patch1>(ISelectable, Rect)
RimWorld.MainTabWindow_Inspect:DoPaneContents(Rect)
RimWorld.InspectPaneUtility:DMD<DMD<InspectPaneOnGUI_Patch1>?670185984::InspectPaneOnGUI_Patch1>(Rect, IInspectPane)
RimWorld.MainTabWindow_Inspect:DoWindowContents(Rect)
Verse.Window:InnerWindowOnGUI(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)

Full log: https://gist.github.com/75a2340be92a9e693b87d8795e50f6bd

CErratum commented 4 years ago

Possible fix, remove 'assignable' property of mech table:

<li Class="CompProperties_AssignableToPawn">
<drawAssignmentOverlay>false</drawAssignmentOverlay>
</li>
CErratum commented 4 years ago

Disabling several room quality-related mods (Feng Shui, Realistic Rooms) had no effect. Will pare down modlist to check for conflicts.

Note that the only other report of this error online is from the GlitterTech mod, but for a piece of furniture that should not interfere with this mod.

rheirman commented 4 years ago

Can you check if you still have this problem with the latest test release? https://github.com/rheirman/WhatTheHack/releases/tag/v2.0.1

CErratum commented 4 years ago

Error persists. New log: https://gist.github.com/797f27a97a4e971c90b75b686f421ee4

GetInspectString exception on WTH_HackingTable48542:
System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.Building_Bed.get_PlayerCanSeeOwners () [0x00006] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at (wrapper dynamic-method) RimWorld.Building_Bed.DMD<DMD<GetInspectString_Patch0>?1690504832::GetInspectString_Patch0>(RimWorld.Building_Bed)
  at RimWorld.InspectPaneFiller.DrawInspectStringFor (Verse.ISelectable sel, UnityEngine.Rect rect) [0x00000] in <29684bdca4b441d38f64a3f064edc8ed>:0 
Verse.Log:Error(String, Boolean)
RimWorld.InspectPaneFiller:DrawInspectStringFor(ISelectable, Rect)
RimWorld.InspectPaneFiller:DMD<DMD<DoPaneContentsFor_Patch1>?743166976::DoPaneContentsFor_Patch1>(ISelectable, Rect)
RimWorld.MainTabWindow_Inspect:DoPaneContents(Rect)
RimWorld.InspectPaneUtility:DMD<DMD<InspectPaneOnGUI_Patch1>?1050352896::InspectPaneOnGUI_Patch1>(Rect, IInspectPane)
RimWorld.MainTabWindow_Inspect:DoWindowContents(Rect)
Verse.Window:InnerWindowOnGUI(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)
CErratum commented 4 years ago

Found the issue: Animals Logic - https://steamcommunity.com/sharedfiles/filedetails/?id=1098354593

This mod makes it possible to assign beds to animals; this causes issues with the Mechanoid Hacking Bench. Disabling the mod corrected the issue. Will contact mod maker to see if a patch can be made to exclude WTH items from the animal bed behaviour.

(Wouldn't've been able to find it without the log from lucasnumbers - I was looking for common mods and realized the bench and charging stations likely relied on animal behaviour...)

rheirman commented 4 years ago

Animals Logic treats every bed that is not for humans as an animal bed. I'll take a look at this issue to see if I can do something on my side to prevent this issue.

CErratum commented 4 years ago

There's a further issue - even after deactivating Animal Logic, the Mechanoid Hacking bench cannot be deconstructed:

System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.Building_Bed.get_OwnersForReading () [0x00006] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at RimWorld.Building_Bed.RemoveAllOwners () [0x00000] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at RimWorld.Building_Bed.DeSpawn (Verse.DestroyMode mode) [0x00000] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at Verse.Thing.Destroy (Verse.DestroyMode mode) [0x00053] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at Verse.ThingWithComps.Destroy (Verse.DestroyMode mode) [0x00007] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at (wrapper dynamic-method) Verse.Building.DMD<DMD<Destroy_Patch2>?-350929536::Destroy_Patch2>(Verse.Building,Verse.DestroyMode)
  at RimWorld.Designator_Deconstruct.DesignateThing (Verse.Thing t) [0x0002e] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at RimWorld.InspectGizmoGrid+<>c__DisplayClass2_1.<DrawInspectGizmoGridFor>b__0 () [0x00018] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at Verse.Command_Action.ProcessInput (UnityEngine.Event ev) [0x00007] in <29684bdca4b441d38f64a3f064edc8ed>:0 
  at (wrapper dynamic-method) Verse.GizmoGridDrawer.DMD<DMD<DrawGizmoGrid_Patch1>?1950314752::DrawGizmoGrid_Patch1>(System.Collections.Generic.IEnumerable`1<Verse.Gizmo>,single,Verse.Gizmo&)
  at (wrapper dynamic-method) RimWorld.InspectGizmoGrid.DMD<DMD<DrawInspectGizmoGridFor_Patch2>?1379819136::DrawInspectGizmoGridFor_Patch2>(System.Collections.Generic.IEnumerable`1<object>,Verse.Gizmo&)
Verse.Log:Error(String, Boolean)
Verse.Log:ErrorOnce(String, Int32, Boolean)
RimWorld.InspectGizmoGrid:DMD<DMD<DrawInspectGizmoGridFor_Patch2>?1379819136::DrawInspectGizmoGridFor_Patch2>(IEnumerable`1, Gizmo&)
RimWorld.MainTabWindow_Inspect:DrawInspectGizmos()
RimWorld.InspectPaneUtility:ExtraOnGUI(IInspectPane)
RimWorld.MainTabWindow_Inspect:ExtraOnGUI()
Verse.WindowStack:WindowStackOnGUI()
RimWorld.UIRoot_Play:DMD<DMD<UIRootOnGUI_Patch1>?-1820968320::UIRootOnGUI_Patch1>(UIRoot_Play)
Verse.Root:OnGUI()

https://gist.github.com/72a0f98bbcfe905b0c6408a3c3d63c1c

rheirman commented 4 years ago

Thanks again for the report. I've fixed both the compatibility issue and the other issue in the latest test release: https://github.com/rheirman/WhatTheHack/releases/tag/v2.0.3