RimWorld

RimWorld

Awesome Inventory Forked
JKthree 14 Nov, 2023 @ 9:02pm
Awesome Inventory always destroys game upon Rimworld reboot
I'm sorry, I really love this mod as its the only one that can get my pawns getting what I want. Specific Material gear, multiple weaponry and multiple utility items that I can swap easily with Simple Sidearms or the Costume Hotswap. It took time to learn the mod but when i start with loadouts and get it right, it would work flawlessly

But no matter what I do whether its looking for incompatiblities by looking at the log or here in the discussions like Infusion/Infused. Regardless of in-game mod settings or outfit/costume settings, even if they are as barren or empty as possible.
If even a single pawn is using an Awesome Inventory Loadout upon a game save (even if a pawn was removed from non-death scenarios of other mods, like being sold or sent to an VE: outpost),
Loading said save after a hard reboot of Rimworld just straight up breaks the game beyond playability.

Pawn Portraits go missing and they can't be interacted with at all and they just derp out. Pawn interaction options like drafting also go missing. The Pawn HUD even breaks.
Most Dev mode options also don't work like pawn spawning (kill/delete/clear works but nothing gets fixed even if these pawns were removed)
Most of these problems persist even if loading a different save of any kind afterward.
The only things that would get fixed on a "clean" save are pawn portrais and dev mode options.
In the end I'm still forced to delete the saves and reboot Rimworld once again.

The log would spout about 10 thousand lines of code a second after this all goes to ****. Reading the 10k/s spam part just spouts some ridiculous unrelated nonsense about various items on the ground that could've been picked up by the "infectious" loadout. Beginning parts of the log may spout about the Pawns ticking of trying to do activities before the log eventually gives up on continuing posting it (It actually says in the log it would stop posting it).

The part of the log where Awesome Inventory is mentioned is immediatley after the part where the save is loaded in the log. It is always this (It will be 1 for each Pawn that had an Awesome Inventory based loadout, noted by what I put as Pawn_Name below)

Exception spawning loaded thing Pawn_Name: System.AggregateException: One or more errors occurred. ---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x00156] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].set_Item (TKey key, TValue value) [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at (wrapper dynamic-method) RimWorld.QualityUtility.RimWorld.QualityUtility.TryGetQuality_Patch0(Verse.Thing,RimWorld.QualityCategory&)
at (wrapper dynamic-method) Verse.ThingFilter.Verse.ThingFilter.Allows_Patch1(Verse.ThingFilter,Verse.Thing)
at AwesomeInventory.Loadout.SingleThingSelector.Allows (Verse.Thing thing) [0x00012] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.ThingGroupSelector+<>c__DisplayClass46_0.<Allows>b__0 (AwesomeInventory.Loadout.ThingSelector s) [0x00000] in <665e81320e0546dfb6a57a0472698273>:0
at System.Linq.Enumerable+WhereListIterator`1[TSource].MoveNext () [0x00037] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
at System.Linq.Enumerable.Any[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x00015] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
at Verse.GenCollection.EnumerableNullOrEmpty[T] (System.Collections.Generic.IEnumerable`1[T] enumerable) [0x00019] in <cd7169108ea74757aa50c5b33d275c15>:0
at AwesomeInventory.Loadout.ThingGroupSelector.Allows (Verse.Thing thing, AwesomeInventory.Loadout.ThingSelector& thingSelector) [0x00025] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.FindPotentialThingGroupSelectors (Verse.Thing thing, System.Int32 stackCount, System.Collections.Generic.IEnumerable`1[T] groupSelectors) [0x00041] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.FindPotentialThingGroupSelectors (Verse.Thing thing, System.Collections.Generic.IEnumerable`1[T] groupSelectors) [0x0000b] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout+<>c__DisplayClass57_0.<UpdateInventoryMargin>b__0 (Verse.Thing thing) [0x00000] in <665e81320e0546dfb6a57a0472698273>:0
at System.Threading.Tasks.Parallel+<>c__DisplayClass42_0`2[TSource,TLocal].<PartitionerForEachWorker>b__1 () [0x00287] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task.InnerInvoke () [0x0000f] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task.InnerInvokeWithArg (System.Threading.Tasks.Task childTask) [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task+<>c__DisplayClass178_0.<ExecuteSelfReplicating>b__0 (System.Object <p0>) [0x00086] in <eae584ce26bc40229c1b1aa476bfa589>:0
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00043] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task.Wait () [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal] (System.Collections.Concurrent.Partitioner`1[TSource] source, System.Threading.Tasks.ParallelOptions parallelOptions, System.Action`1[T] simpleBody, System.Action`2[T1,T2] bodyWithState, System.Action`3[T1,T2,T3] bodyWithStateAndIndex, System.Func`4[T1,T2,T3,TResult] bodyWithStateAndLocal, System.Func`5[T1,T2,T3,T4,TResult] bodyWithEverything, System.Func`1[TResult] localInit, System.Action`1[T] localFinally) [0x001fb] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Parallel.ForEach[TSource] (System.Collections.Concurrent.Partitioner`1[TSource] source, System.Action`1[T] body) [0x0001c] in <eae584ce26bc40229c1b1aa476bfa589>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.UpdateInventoryMargin (System.Collections.Generic.IEnumerable`1[T] groupSelectors) [0x0008a] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.UpdateForNewLoadout (AwesomeInventory.Loadout.AwesomeInventoryLoadout newLoadout, System.Boolean delay, System.Boolean respawn, System.Boolean forced) [0x000a8] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.PostSpawnSetup (System.Boolean respawningAfterLoad) [0x00035] in <665e81320e0546dfb6a57a0472698273>:0
at (wrapper dynamic-method) Verse.ThingWithComps.Verse.ThingWithComps.SpawnSetup_Patch1(Verse.ThingWithComps,Verse.Map,bool)
at (wrapper dynamic-method) Verse.Pawn.Verse.Pawn.SpawnSetup_Patch13(Verse.Pawn,Verse.Map,bool)
at (wrapper dynamic-method) Verse.GenSpawn.Verse.GenSpawn.Spawn_Patch6(Verse.Thing,Verse.IntVec3,Verse.Map,Verse.Rot4,Verse.WipeMode,bool)
at (wrapper dynamic-method) Verse.Map.Verse.Map.FinalizeLoading_Patch4(Verse.Map)


This will then be followed by about 5-7 Inner Execeptions which are also always the same repeated

System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x00156] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].set_Item (TKey key, TValue value) [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at (wrapper dynamic-method) RimWorld.QualityUtility.RimWorld.QualityUtility.TryGetQuality_Patch0(Verse.Thing,RimWorld.QualityCategory&)
at (wrapper dynamic-method) Verse.ThingFilter.Verse.ThingFilter.Allows_Patch1(Verse.ThingFilter,Verse.Thing)
at AwesomeInventory.Loadout.SingleThingSelector.Allows (Verse.Thing thing) [0x00012] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.ThingGroupSelector+<>c__DisplayClass46_0.<Allows>b__0 (AwesomeInventory.Loadout.ThingSelector s) [0x00000] in <665e81320e0546dfb6a57a0472698273>:0
at System.Linq.Enumerable+WhereListIterator`1[TSource].MoveNext () [0x00037] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
at System.Linq.Enumerable.Any[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x00015] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
at Verse.GenCollection.EnumerableNullOrEmpty[T] (System.Collections.Generic.IEnumerable`1[T] enumerable) [0x00019] in <cd7169108ea74757aa50c5b33d275c15>:0
at AwesomeInventory.Loadout.ThingGroupSelector.Allows (Verse.Thing thing, AwesomeInventory.Loadout.ThingSelector& thingSelector) [0x00025] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.FindPotentialThingGroupSelectors (Verse.Thing thing, System.Int32 stackCount, System.Collections.Generic.IEnumerable`1[T] groupSelectors) [0x00041] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout.FindPotentialThingGroupSelectors (Verse.Thing thing, System.Collections.Generic.IEnumerable`1[T] groupSelectors) [0x0000b] in <665e81320e0546dfb6a57a0472698273>:0
at AwesomeInventory.Loadout.CompAwesomeInventoryLoadout+<>c__DisplayClass57_0.<UpdateInventoryMargin>b__0 (Verse.Thing thing) [0x00000] in <665e81320e0546dfb6a57a0472698273>:0
at System.Threading.Tasks.Parallel+<>c__DisplayClass42_0`2[TSource,TLocal].<PartitionerForEachWorker>b__1 () [0x00287] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task.InnerInvoke () [0x0000f] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task.InnerInvokeWithArg (System.Threading.Tasks.Task childTask) [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Threading.Tasks.Task+<>c__DisplayClass178_0.<ExecuteSelfReplicating>b__0 (System.Object <p0>) [0x00086] in <eae584ce26bc40229c1b1aa476bfa589>:0 <---


The spouting 10k/s lines of code of pickable items is also always this. Like before The item name of the various items I denoted as Item_Name

Exception drawing ThingOverlay for Item_Name: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x00156] in <eae584ce26bc40229c1b1aa476bfa589>:0
at System.Collections.Generic.Dictionary`2[TKey,TValue].set_Item (TKey key, TValue value) [0x00000] in <eae584ce26bc40229c1b1aa476bfa589>:0
at (wrapper dynamic-method) RimWorld.QualityUtility.RimWorld.QualityUtility.TryGetQuality_Patch0(Verse.Thing,RimWorld.QualityCategory&)
at (wrapper dynamic-method) Verse.Thing.Verse.Thing.DrawGUIOverlay_Patch2(Verse.Thing)
at (wrapper dynamic-method) Verse.ThingWithComps.Verse.ThingWithComps.DrawGUIOverlay_Patch1(Verse.ThingWithComps)
at (wrapper dynamic-method) Verse.ThingOverlays.Verse.ThingOverlays.ThingOverlaysOnGUI_Patch1(Verse.ThingOverlays)
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 39)


I'm currently going crazy taking off mods on my very large modlist so i don't really have a modlist to post right now at least until if it comes to the point where I got nothing left but the crucials or ones I downright refuse to take off such as RimFactory or Export Agency.
Last edited by JKthree; 14 Nov, 2023 @ 9:53pm