RimWorld

RimWorld

Smarter Construction
 This topic has been pinned, so it's probably important
Hultis  [developer] 22 Aug, 2020 @ 2:50am
Bug Reports
Please include the following in your report:
  • Detailed description
  • Screenshot (if relevant)
  • HugsLib log (press Ctrl+F12)

Think it was caused by a recent change in this mod?
You can run older versions by downloading them from github[github.com]. Install the old version of this mod by downloading and extracting the release to (assuming Windows and Steam) C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods and choosing to run the local version instead of the workshop one. If it works after that it's this mods fault.

Currently known issues

    Previous issues
    • Linux: Running this mod together with certain other mods (specific list unknown) throws lots of errors and stops most work. You will notice if you're running one of them :) Probably tied to a current issue in Harmony which should be fixed in the next release.
    • Pawns will sometimes get stuck indefinitely. The reported job is building <building> but they haven't walked to it yet.
    • Linux version crashes on startup.
    Last edited by Hultis; 4 Oct, 2020 @ 1:20am
    < >
    Showing 1-15 of 79 comments
    ben 22 Aug, 2020 @ 7:39am 
    Something I noticed once installing the mod: Builders will get locked up on floor tiles for (seemingly) no reason. I did not see anything in the log about it but I will double check.
    Hultis  [developer] 22 Aug, 2020 @ 8:49am 
    I assume this means that they will stand on the floor somewhere and it says they are constructing something? That one I have managed to reproduce, but nothing related to constructing floors. If nothing else, HugsLib log shows mod list and order so I can reproduce in case of mod interaction.
    GAWS 22 Aug, 2020 @ 9:08am 
    reporting same here
    Last edited by GAWS; 22 Aug, 2020 @ 9:09am
    Hultis  [developer] 24 Aug, 2020 @ 8:02am 
    I think this one should work now. Can you test?
    Lemons O'Toole 24 Aug, 2020 @ 7:56pm 
    I had a problem late yesterday evening (8/23/2020) when playing. When I would start up the game, my pawns would do absolutely no constructing. When I would right-click and send them to do it, they would just stand. Their "active" job was "Standing" and their "queued" order was to construct the object. I do use Achtung! but I never forced them to work on it. (I did it once before and the game froze but that is a known issue that I wasn't aware of because I didn't do my compatibility homework :steamfacepalm: .) REGARDLESS, I turned this mod off and my pawns went back to normal.

    Note: I did not have any issues like that yesterday (8/23) when I was playing in the morning EST. After you updated the mod was when I started having issues so I'm not entirely too sure what happened. No other construction or pawn specific mods that I use were updated either so I'm really not too sure, at least not that I'm aware of. If need be I can add the mod back into my stack and try and get a log file if needed.
    Bronsk 24 Aug, 2020 @ 11:53pm 
    @Lemons O'Toole I have the same problem you do. I turned this mod off and they are still broken. Very strange.
    Last edited by Bronsk; 24 Aug, 2020 @ 11:54pm
    Hultis  [developer] 25 Aug, 2020 @ 2:16am 
    I can't seem to reproduce this, can you get me a log? You could also try running the previous version and see if the problem persists: https://github.com/dhultgren/rimworld-smarter-construction/releases/tag/1.1
    Lemons O'Toole 26 Aug, 2020 @ 5:20am 
    TL;DR it's not your mods fault

    @Hultis so it turns out that it may have been a multitude of other mods conflicting. I had Z-levels and DeepRim (continued) in my save. Well when I loaded back in to my game, my mine from DeepRim was now the main level of the map according to Z-levels. So instead of seeing the main map when I was one floor up with Z-levels, I would see the mine as the first layer. Whenever I would use a ladder to go down a level, it would immediately put me into the mine. It was using the mine as the base map layer which wasn't mined out so whenever I would place a blueprint over the unmined sections my characters would move there and wouldn't build it as it technically couldn't be built. idk but that's what I discovered when I went back to the original modlist for my playthrough. Again, why it's happening with your mod included I'm really not too sure. I'm not a modder but I love QA testing the crap out of things.
    WJSabey 26 Aug, 2020 @ 7:28am 
    A report from a Linux user; I tried putting it at the top of the load order like I saw suggested, and it loaded without crashing, but workers were not taking construction jobs automatically. I could make them do so by right clicking on the job, but left to their own devices they were just idling. Strangely I can't reproduce this, now trying to load the game it crashes on load again even with the mod at the top of the load order. I hope someone figures out what the issue is here because this would be a really useful mod to have.
    Diego 27 Aug, 2020 @ 10:41am 
    Heyho, im not sure if this is relatet to here but im guessing that this mod and the mod "Change Map Edges" are incompatable when buidling at the edge of map

    Ray threw exception in WorkGiver ConstructUniversal: System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Verse.AI.PathGrid.WalkableFast (Verse.IntVec3 loc) [0x00017] in <7b345446a85d4ed599f9c604ae61854b>:0
    at SmarterConstruction.Core.PathGridWrapper.WalkableFast (Verse.IntVec3 loc) [0x00001] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.FloodFill (SmarterConstruction.Core.IPathGrid pathGrid, Verse.IntVec3 start, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x0005d] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.ClosedRegionCreatedByAddingImpassable (SmarterConstruction.Core.IPathGrid pathGrid, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x00038] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.WouldEncloseThings (Verse.Thing target, Verse.Pawn ___pawn) [0x00124] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Patches.WorkGiver_ConstructFinishFrames_JobOnThing.Postfix (Verse.Pawn pawn, Verse.Thing t, Verse.AI.Job& __result, System.Boolean forced, RimWorld.WorkGiver_ConstructFinishFrames __instance) [0x0005a] in <56f1301756594b0ea228046b4153d1da>:0
    at (wrapper dynamic-method) RimWorld.WorkGiver_ConstructFinishFrames.RimWorld.WorkGiver_ConstructFinishFrames.JobOnThing_Patch2(RimWorld.WorkGiver_ConstructFinishFrames,Verse.Pawn,Verse.Thing,bool)
    at Prioritize.Workgiver_UniversalConstruct.JobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00014] in <b0b4b7de82a94d9c8374e70fc33318b6>:0
    at RimWorld.WorkGiver_Scanner.HasJobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00000] in <7b345446a85d4ed599f9c604ae61854b>:0
    at RimWorld.JobGiver_Work+<>c__DisplayClass3_1.<TryIssueJobPackage>b__0 (Verse.Thing t) [0x00013] in <7b345446a85d4ed599f9c604ae61854b>:0
    at Verse.GenClosest.<ClosestThing_Global_Reachable>g__Process|6_0 (Verse.Thing t, Verse.GenClosest+<>c__DisplayClass6_0& ) [0x00085] in <7b345446a85d4ed599f9c604ae61854b>:0
    at (wrapper dynamic-method) Verse.GenClosest.Verse.GenClosest.ClosestThing_Global_Reachable_Patch1(Verse.IntVec3,Verse.Map,System.Collections.Generic.IEnumerable`1<Verse.Thing>,Verse.AI.PathEndMode,Verse.TraverseParms,single,System.Predicate`1<Verse.Thing>,System.Func`2<Verse.Thing, single>)
    at (wrapper dynamic-method) RimWorld.JobGiver_Work.RimWorld.JobGiver_Work.TryIssueJobPackage_Patch1(RimWorld.JobGiver_Work,Verse.Pawn,Verse.AI.JobIssueParams)

    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

    Ray threw exception in WorkGiver ConstructFinishFrames: System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Verse.AI.PathGrid.WalkableFast (Verse.IntVec3 loc) [0x00017] in <7b345446a85d4ed599f9c604ae61854b>:0
    at SmarterConstruction.Core.PathGridWrapper.WalkableFast (Verse.IntVec3 loc) [0x00001] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.FloodFill (SmarterConstruction.Core.IPathGrid pathGrid, Verse.IntVec3 start, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x0005d] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.ClosedRegionCreatedByAddingImpassable (SmarterConstruction.Core.IPathGrid pathGrid, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x00038] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.WouldEncloseThings (Verse.Thing target, Verse.Pawn ___pawn) [0x00124] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Patches.WorkGiver_ConstructFinishFrames_JobOnThing.Postfix (Verse.Pawn pawn, Verse.Thing t, Verse.AI.Job& __result, System.Boolean forced, RimWorld.WorkGiver_ConstructFinishFrames __instance) [0x0005a] in <56f1301756594b0ea228046b4153d1da>:0
    at (wrapper dynamic-method) RimWorld.WorkGiver_ConstructFinishFrames.RimWorld.WorkGiver_ConstructFinishFrames.JobOnThing_Patch2(RimWorld.WorkGiver_ConstructFinishFrames,Verse.Pawn,Verse.Thing,bool)
    at RimWorld.WorkGiver_Scanner.HasJobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00000] in <7b345446a85d4ed599f9c604ae61854b>:0
    at RimWorld.JobGiver_Work+<>c__DisplayClass3_1.<TryIssueJobPackage>b__0 (Verse.Thing t) [0x00013] in <7b345446a85d4ed599f9c604ae61854b>:0
    at Verse.GenClosest.<ClosestThing_Global_Reachable>g__Process|6_0 (Verse.Thing t, Verse.GenClosest+<>c__DisplayClass6_0& ) [0x00085] in <7b345446a85d4ed599f9c604ae61854b>:0
    at (wrapper dynamic-method) Verse.GenClosest.Verse.GenClosest.ClosestThing_Global_Reachable_Patch1(Verse.IntVec3,Verse.Map,System.Collections.Generic.IEnumerable`1<Verse.Thing>,Verse.AI.PathEndMode,Verse.TraverseParms,single,System.Predicate`1<Verse.Thing>,System.Func`2<Verse.Thing, single>)
    at (wrapper dynamic-method) RimWorld.JobGiver_Work.RimWorld.JobGiver_Work.TryIssueJobPackage_Patch1(RimWorld.JobGiver_Work,Verse.Pawn,Verse.AI.JobIssueParams)

    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

    Ray threw exception in WorkGiver ConstructUniversal: System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Verse.AI.PathGrid.WalkableFast (Verse.IntVec3 loc) [0x00017] in <7b345446a85d4ed599f9c604ae61854b>:0
    at SmarterConstruction.Core.PathGridWrapper.WalkableFast (Verse.IntVec3 loc) [0x00001] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.FloodFill (SmarterConstruction.Core.IPathGrid pathGrid, Verse.IntVec3 start, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x0005d] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.ClosedRegionCreatedByAddingImpassable (SmarterConstruction.Core.IPathGrid pathGrid, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x00038] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.WouldEncloseThings (Verse.Thing target, Verse.Pawn ___pawn) [0x00124] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Patches.WorkGiver_ConstructFinishFrames_JobOnThing.Postfix (Verse.Pawn pawn, Verse.Thing t, Verse.AI.Job& __result, System.Boolean forced, RimWorld.WorkGiver_ConstructFinishFrames __instance) [0x0005a] in <56f1301756594b0ea228046b4153d1da>:0
    at (wrapper dynamic-method) RimWorld.WorkGiver_ConstructFinishFrames.RimWorld.WorkGiver_ConstructFinishFrames.JobOnThing_Patch2(RimWorld.WorkGiver_ConstructFinishFrames,Verse.Pawn,Verse.Thing,bool)
    at Prioritize.Workgiver_UniversalConstruct.JobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00014] in <b0b4b7de82a94d9c8374e70fc33318b6>:0
    at RimWorld.WorkGiver_Scanner.HasJobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00000] in <7b345446a85d4ed599f9c604ae61854b>:0
    at RimWorld.JobGiver_Work+<>c__DisplayClass3_1.<TryIssueJobPackage>b__0 (Verse.Thing t) [0x00013] in <7b345446a85d4ed599f9c604ae61854b>:0
    at Verse.GenClosest.<ClosestThing_Global_Reachable>g__Process|6_0 (Verse.Thing t, Verse.GenClosest+<>c__DisplayClass6_0& ) [0x00085] in <7b345446a85d4ed599f9c604ae61854b>:0
    at (wrapper dynamic-method) Verse.GenClosest.Verse.GenClosest.ClosestThing_Global_Reachable_Patch1(Verse.IntVec3,Verse.Map,System.Collections.Generic.IEnumerable`1<Verse.Thing>,Verse.AI.PathEndMode,Verse.TraverseParms,single,System.Predicate`1<Verse.Thing>,System.Func`2<Verse.Thing, single>)
    at (wrapper dynamic-method) RimWorld.JobGiver_Work.RimWorld.JobGiver_Work.TryIssueJobPackage_Patch1(RimWorld.JobGiver_Work,Verse.Pawn,Verse.AI.JobIssueParams)

    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)

    Ray threw exception in WorkGiver ConstructFinishFrames: System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Verse.AI.PathGrid.WalkableFast (Verse.IntVec3 loc) [0x00017] in <7b345446a85d4ed599f9c604ae61854b>:0
    at SmarterConstruction.Core.PathGridWrapper.WalkableFast (Verse.IntVec3 loc) [0x00001] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.FloodFill (SmarterConstruction.Core.IPathGrid pathGrid, Verse.IntVec3 start, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x0005d] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.ClosedRegionCreatedByAddingImpassable (SmarterConstruction.Core.IPathGrid pathGrid, System.Collections.Generic.HashSet`1[T] addedBlockers) [0x00038] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Core.ClosedRegionDetector.WouldEncloseThings (Verse.Thing target, Verse.Pawn ___pawn) [0x00124] in <56f1301756594b0ea228046b4153d1da>:0
    at SmarterConstruction.Patches.WorkGiver_ConstructFinishFrames_JobOnThing.Postfix (Verse.Pawn pawn, Verse.Thing t, Verse.AI.Job& __result, System.Boolean forced, RimWorld.WorkGiver_ConstructFinishFrames __instance) [0x0005a] in <56f1301756594b0ea228046b4153d1da>:0
    at (wrapper dynamic-method) RimWorld.WorkGiver_ConstructFinishFrames.RimWorld.WorkGiver_ConstructFinishFrames.JobOnThing_Patch2(RimWorld.WorkGiver_ConstructFinishFrames,Verse.Pawn,Verse.Thing,bool)
    at RimWorld.WorkGiver_Scanner.HasJobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x00000] in <7b345446a85d4ed599f9c604ae61854b>:0
    at RimWorld.JobGiver_Work+<>c__DisplayClass3_1.<TryIssueJobPackage>b__0 (Verse.Thing t) [0x00013] in <7b345446a85d4ed599f9c604ae61854b>:0
    at Verse.GenClosest.<ClosestThing_Global_Reachable>g__Process|6_0 (Verse.Thing t, Verse.GenClosest+<>c__DisplayClass6_0& ) [0x00085] in <7b345446a85d4ed599f9c604ae61854b>:0
    at (wrapper dynamic-method) Verse.GenClosest.Verse.GenClosest.ClosestThing_Global_Reachable_Patch1(Verse.IntVec3,Verse.Map,System.Collections.Generic.IEnumerable`1<Verse.Thing>,Verse.AI.PathEndMode,Verse.TraverseParms,single,System.Predicate`1<Verse.Thing>,System.Func`2<Verse.Thing, single>)
    at (wrapper dynamic-method) RimWorld.JobGiver_Work.RimWorld.JobGiver_Work.TryIssueJobPackage_Patch1(RimWorld.JobGiver_Work,Verse.Pawn,Verse.AI.JobIssueParams)

    (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)


    please tell me if i can provide you more informations
    Hultis  [developer] 28 Aug, 2020 @ 2:29am 
    @Lemons And we modders love people who QA the crap out of our mods. Well, at least I do; it can be really hard to test your own things.

    @WJSabey That's really weird, but interesting. Forcing them to do the job will pretty much deactivate the entire mod for that job so it makes sense that it would work, but them not taking a job implies that the code did run but found an enclosed pawn/blueprint. Unless things completely broke. Do you recall them taking non-blocking construction jobs such as floors? Of course, the weirdest thing is that it somehow didn't break on startup, and just once. I'll probably have to setup a Linux virtual machine and test there.

    @Ragnarr No, that was exactly what I needed. I've patched it now, thanks!
    Copper Boltwire 29 Aug, 2020 @ 2:41am 
    Omnibot is from the mod "Misc. Robots ++"

    Smarter Construction: Failing goto toil because it has taken too long, pawn OmniBot 12. If this was wrong, please report it!
    Verse.Log:Message(String, Boolean)
    SmarterConstruction.DebugUtils:DebugLog(String)
    SmarterConstruction.Patches.<>c__DisplayClass1_1:<Postfix>b__0()
    Verse.AI.<>c__DisplayClass15_0:<AddFailCondition>b__0()
    Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
    Verse.AI.JobDriver:Verse.AI.JobDriver.DriverTick_Patch1(JobDriver)
    Verse.AI.Pawn_JobTracker:JobTrackerTick()
    Verse.Pawn:Tick()
    AIRobot.X2_AIRobot:Tick()
    Verse.TickList:Tick()
    Verse.TickManager:Verse.TickManager.DoSingleTick_Patch1(TickManager)
    Verse.TickManager:TickManagerUpdate()
    Verse.Game:Verse.Game.UpdatePlay_Patch2(Game)
    Verse.Root_Play:Update()

    I'm just doing what the error message said ;)
    Hope it somehow can fix anything...

    Did not have a problem for 2 days until now.
    Not sure what omnibot was doing the moment i got the error tho...
    Diego 29 Aug, 2020 @ 3:16am 
    @Hultis thank you ill test it later :)
    Diego 29 Aug, 2020 @ 4:49am 
    @Hultis works like a charm thank you :)
    Hultis  [developer] 29 Aug, 2020 @ 9:03am 
    @Copper Boltwire Well, if it didn't cause a problem it's by design. I added that check since pawns sometimes got stuck in code that wasn't mine, and that log in case the fix would break for someone. Rest assured that it's working as normal though!

    @Ragnarr Perfect!
    < >
    Showing 1-15 of 79 comments
    Per page: 1530 50