lilwhitemouse / rimworld-lwm.deepstorage Goto Github PK
View Code? Open in Web Editor NEWA mod for the game RimWorld that has a set of Deep Storage Units that allow storing more than one item at a location.
License: GNU General Public License v3.0
A mod for the game RimWorld that has a set of Deep Storage Units that allow storing more than one item at a location.
License: GNU General Public License v3.0
A series of problems with @Mehni's Pick Up & Haul (https://github.com/Mehni/PickUpAndHaul) have surfaced. Reporting on Steam: (https://steamcommunity.com/app/294100/discussions/0/3570700856103815997/).
First part involved an update by LWM and a fix by Mehni.
Problems still happening: pawns stuck unable to unload inventory.
Debug trace shows no new jobs are assigned but pawn repeatedly hitting LWM's preInitAction in the PlaceHauledThingInCell toil.
Likely culprit: LWM eats the initAction and places it in final ticks. However, Mehni reuses Toils for unloading inventory: if the pawn drops off in Deep Storage, the initAction is gone, but if the pawn then unloads in regular storage, DS logic assumes initAction will be there to handle placing items.
Allow players to change settings per DSU def?
If an item is in Deep Storage, and the storage filter gets changed, the item may no longer be inValidBestStorage (or whatever it's called). It would be nice if the ListerHaulables would realize this instantly.
Not sure what could be going on here, unfortunately my mod list is quite long. I spent some time trying to remove as many of the other stockpile / hauling related mods from it as I could in the hopes that would help you see if I've got something unusual.
Steps to reproduce:
A couple possibilities for step 2:
Things I've tried:
Things I've not tried:
Removing Deep Storage, because I've got a few dozen DSU's now and really don't want to have to go around rebuilding and reconfiguring them all unless I run out of other options
Error log: https://pastebin.com/3TWsdW7g
Full mod list: (Mod Manager XML, list of names in second half of file) https://pastebin.com/sPaQfAhK
Affected Save: https://drive.google.com/file/d/1nv2jwhPtywdjVDUZyZ4moSRHZe2nz5EN/view?usp=sharing
If you need anything else please @ping me!
I really appreciate how much your mod improves the game. :)
Find a way to hide the giant pile of weapons on the weapons locker
Via Acarii on Steam:
For simplicity, all functionality of modded furniture would be identical to your base mod, with exception to if the items stored are visible or not(denoted by an "(H)" or for furniture items larger/smaller than your mod(denoted by a multiple or fraction). This should remove the headache of "Is this balanced?" going forward.
Vanilla Furniture Expanded:
DefName - Real Name - Functionality
Table_RoyalDresser - Royal Dresser - Clothing rack(H)
Table_Wardrobe - Wardrobe - Clothing rack(H)
Shelf_WeaponRack - Weapon Rack - Metal Weapon Locker(x2)
Misc_FileCabinet - Filing Cabinet - Big Shelf(1/2)(H)
Shelf_1x1c - shelf (1x1) - Big Shelf(1/2)
Bonus points: make option for where they go.
adding this mod to a save game that didn't have LWM before will produce a string of these errors, aproximatly 120 lines repeating this below with different 'blueprint' id and location.
Exception printing Blueprint_Install_LWM_Clothing_Rack793539 at (352, 0, 156): System.InvalidOperationException: Nothing to install.
at RimWorld.Blueprint_Install.get_MiniToInstallOrBuildingToReinstall () <0x0007b>
at RimWorld.Blueprint_Install.get_ThingToInstall () <0x0001c>
at RimWorld.Blueprint_Install.get_Graphic () <0x0001c>
at (wrapper dynamic-method) Verse.Thing.Print_Patch1 (object,Verse.SectionLayer) <0x0003f>
at Verse.ThingWithComps.Print (Verse.SectionLayer) <0x00022>
at Verse.SectionLayer_ThingsGeneral.TakePrintFrom (Verse.Thing) <0x00044>
Verse.Log:Error(String, Boolean)
Verse.SectionLayer_ThingsGeneral:TakePrintFrom(Thing)
Verse.SectionLayer_Things:Regenerate_Patch0(Object)
Verse.Section:RegenerateLayers(MapMeshFlag)
Verse.MapDrawer:TryUpdateSection(Section)
Verse.MapDrawer:MapMeshDrawerUpdate_First()
Verse.Map:MapUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
ZITools breaks as well with this error when search is clicked
Root level exception in OnGUI(): System.InvalidOperationException: Nothing to install.
at RimWorld.Blueprint_Install.get_MiniToInstallOrBuildingToReinstall () <0x0007b>
at RimWorld.Blueprint_Install.get_ThingToInstall () <0x0001c>
at RimWorld.Blueprint_Install.get_Graphic () <0x0001c>
at ZiTools.ThingIconData..ctor (Verse.Thing) <0x00404>
at ZiTools.ObjectsDatabase.FillNewData<Verse.Thing> (Verse.Thing,ZiTools.CategoryOfObjects,Verse.IntVec3,bool) <0x001d7>
at ZiTools.ObjectsDatabase.FindAll () <0x00abf>
at ZiTools.ObjectsDatabase.Update () <0x0001c>
at ZiTools.ObjectSeeker_Window.PreOpen () <0x0003e>
at Verse.WindowStack.Add (Verse.Window) <0x00054>
at ZiTools.ObjectSeeker_Window.DrawWindow () <0x0007a>
at ZiTools.StaticConstructor/Patch_DoPlaySettingsGlobalControls.Postfix (Verse.WidgetRow,bool) <0x00177>
at (wrapper dynamic-method) RimWorld.PlaySettings.DoPlaySettingsGlobalControls_Patch8 (object,Verse.WidgetRow,bool) <0x0051b>
at RimWorld.GlobalControlsUtility.DoPlaySettings (Verse.WidgetRow,bool,single&) <0x000e5>
at RimWorld.GlobalControls.GlobalControlsOnGUI () <0x00207>
at (wrapper dynamic-method) RimWorld.MapInterface.MapInterfaceOnGUI_BeforeMainTabs_Patch1 (object) <0x00229>
at RimWorld.UIRoot_Play.UIRootOnGUI () <0x0009c>
at Verse.Root.OnGUI () <0x00112>
Verse.Log:Error(String, Boolean)
Verse.Root:OnGUI()
I think the steam version and github version do not match. are there unposted changes on the steam version?
One perhaps helpful comment:
The difference I see is that there is a for Beauty in the dresser and not in the shelving. Perhaps include a field.
I have a "pallet with wrapping", I put many fertilizers in it. Then later I disallowed fertilizer and allowed seeds. Then pawns started to fill it with seeds and clear fertilizers from it. But they don't clear the final stack of fertilizers. So it remains as many seeds and 1 stack of 75 fertilizers. I'm very sure that I have space for fertilizers. Other fertilizers are correctly cleared from the "pallet with wrapping" and moved to another pallet. That pallet is not full and my stockpile allows fertilizer.
My version is: 339ce17
Not a big deal, but would be nifty!
If, for whatever reason, too many things end up in Deep Storage, let them be hauled away.
Hello, after installing this mod I've been getting the occasional screen flicker. I turned on devmode and open+cleared the log, then as soon as it flickered I got an error message related to DeepStorage. Here's a direct screenshot of it;
HugsLib also allowed me to make a link for the viewing of the full log;
https://gist.github.com/HugsLibRecordKeeper/7d583295c845e2541959d2c515d415ba
Let me know if there's anything I can do to help :)
From four12 on Steam:
It would be really great if we could have lockable storage units.
Something like a Big Shelf or a Weapons Locker, but with doors that lock. I would like to be able to keep booze/drugs available in the rec room for my colonists, but I have a couple that are chemically interested, and thus I have to keep things locked up. I use the Locks! mod to lock doors on my "secure storage", but it would be nice to not have to build a 2x2 walled enclosure to hold just one stack.
Could something like Locks! be integrated with Deep Storage?
Putting the first item in a pallet shouldn't take forever. Putting the last item in should.
A nice-to-have feature would be allowing players to define how many of each item is allowed to be stored in the current storage building on a case-by-case basis
Use Case 1:
Limiting a clothes rack to storing precisely 4 T-shirts and 4 Pants, so that removing one T-shirt (temporarily) doesn't cause the remaining space to be taken up by a fifth pair of pants being automatically hauled to the rack.
Use Case 2:
Limiting a Weapons Locker to storing precisely 4000 rounds of 5.56x45mm NATO FMJ ammunition, so that the remaining space can be used for other ammo (or even weapons)
At present, weapons stored inside the Weapons Locker are visually hidden from map view, as originally designed for gameplay aesthetics. The locker contents are, of course, listed in the accompanying Contents tab.
However, if a savegame is also running Combat Extended, then the stack of weapons in the Locker are shown back on the map.
Perhaps CE is doing something to the code that usually hides the weapons in non-CE games?
I would like to use the Deep Refrigetaror, but it does not separate the rooms as the wall refrigerators from RimАridge do, unfortunately. So I would like to have a kitchen and dining room separately with deep refrigerators in between.
Via JaJe on Steam.
Hey LWM, thanks for the incredible mod. Extended storage was my indispensable mod for a long time but it got abandoned and yours replace it - much better.
That said, I was wondering if you have any plans for dedicates silver storage solutions - coffers?
Also, do you plan on doing anything with
https://github.com/lilwhitemouse/rim-StockpileForDisaster
?
I was thinking about grabbing the mod but you mentioned in Steam you are thinking of forking it and if you really do it I'd be interested i what you are doing.
Thanks again.
Currently if you have Storage Settings open, and you select another DSU, the tab switches to Contents. This is annoying as f when you are trying to adjust settings on all of them.
Many mods have some kind of liquid container. Most of them are interchangeable. So maybe we can have some common purpose liquid containers that store one single kind of liquid , ,better with a faucet.
Eg: bad hygiene has water bucket and water tower, it can be used to store any kind of liquid.
Gas, potentially.
When there's only one .def of items in a pile, count them properly
See directions here: https://ludeon.com/forums/index.php?topic=34100.0
Possibly doable without dll, we'll see.
Hi,
In believe support for RimFridge got broken because the RimFridge Mod got renamed from "[KV] RimFridge - 1.0" to "[KV] RimFridge - 1.1"
RimWorld-LWM.DeepStorage/_Mod/LWM.DeepStorage/Patches/AddNewUnits_RimFridge.xml
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>[KV] RimFridge - 1.0</li>
</mods>
[..]
Workshop Link: https://steamcommunity.com/sharedfiles/filedetails/?id=1180721235
(Another user also confirmed this in one of the comments on Steam)
Proposal: Increase Weapons Locker mass capacity to 72 kg, and Combat Extended bulk capacity to 205
Rationale:
I originally conceived each locker to store up to 4~5 vanilla assault rifles, based on this image. However, it turned out that not only was that particular locker not utilizing its capacity to 100%, but said locker is actually only around waist-to-chest high.
Since the Locker in-game is supposed to be as tall as structural walls, the real-life equivalents actually look more like this, which can hold at least 20 vanilla assault rifles.
Furthermore, the current CE patch specifies a bulk capacity value of 55, which is roughly equivalent to two CE backpacks. A locker is obviously much bigger than a backpack, and so its bulk value should be increased accordingly.
Below is a screenshot of the updated capacity calculations spreadsheet - these include considerations for mod assault rifles and pistols:
The Weapon Locker current requires Machining. Should Smithing be used instead?
Deep Storage could stand better compatibility with RSA.
It's very hard to click every stack of fruit to check their spoil timer.
There is a bug in the DS engine that allows pawns to put too many things into a DSU.
When the storage unit is mostly full, a pawn will sometimes end up carrying a stack that is too large to fit, and will dump the last partial-stack into the unit too.
Currently only multiple stack inside the same storage support merging stack operation.
restrictions do not apply on storage, weight of stored items exceeds the limit. Steps to reproduce with Tall shelf:
Stack weight limit works, but not total weight of all items stored. Looks like do nothing. So for now you caanot set limits on total mass stored.
Please tell how big capacity a storage has and how the number is calculated.
A clothes rack is not suitable for storage in most winter clothes and armor with mass more 2.5 kg.
In contrast, a weapon cabinet holds 30 kg.
Last version of plugin: 1.0.0.9.
Hello im getting an error where a tier five hauler robot is constantly loading and unloading materials onto a pallet. I have common sense and pick up and haul installed.
Hauling Bot 6 started 10 jobs in 10 ticks. List: (Wait_MaintainPosture (Job_1729338)) , (HaulToCell (Job_1729343) A=Thing_ComputerComp388909 B=(167, 0, 211)) , (Wait_MaintainPosture (Job_1729344)) , (HaulToCell (Job_1729349) A=Thing_ComputerComp388909 B=(167, 0, 212)) , (Wait_MaintainPosture (Job_1729350)) , (HaulToCell (Job_1729355) A=Thing_ComputerComp388909 B=(167, 0, 211)) , (Wait_MaintainPosture (Job_1729356)) , (HaulToCell (Job_1729361) A=Thing_ComputerComp388909 B=(167, 0, 212)) , (Wait_MaintainPosture (Job_1729362)) , (HaulToCell (Job_1729367) A=Thing_ComputerComp388909 B=(167, 0, 211)) curDriver=JobDriver_HaulToCell (toilIndex=5) curJob=(HaulToCell (Job_1729367) A=Thing_ComputerComp388909 B=(167, 0, 211)) lastJobGiver=AIRobot.X2_JobGiver_Work
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)
Any help would be appreciated
If something destroys a Deep Storage Unit or it gets moved, and the game is saved before pawns clean up the giant stack of things, when the game is loaded, the engine will place the stacked items "Nearby" which can cause problems (destroying buildings, etc).
Possible future development:
Weapons inside a weapons locker take much less damage from nearby explosions or things dropping through roof (e.g., mechanoid drop pod raid in the armory)?
Increase metal costs to compensate, I think.
At present, Weapons Lockers on the map show a little text indicator of the number of items current stored inside, in square brackets (e.g. [42] or [empty]).
It would be nice to have a Mod Settings option to toggle this display on or off, to cater for those who wish to know at a glance which lockers have how many items, and those who don't.
Config error in LWM_DS_RimFridge_Refrigerator: has null thingClass.
Verse.Log:Error(String, Boolean)
Verse.DefDatabase`1:ErrorCheckAllDefs()
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
Verse.GenGeneric:InvokeStaticMethodOnGenericType(Type, Type, String)
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:LoadAllPlayData(Boolean)
Verse.Root:<Start>m__1()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()
As an example of other such work, see https://github.com/Ratysz/RT_Shelves/blob/master/Source/Patches_ThingWithComps.cs
When multiple pawns trying to fill a storage, it will be quickly filled full. And when it's full and pawns' inventory still have remaining stuffs, pawns will "DANCE" near by permantly until downed.
Sometimes, I see pawn stand still, keeping "fill the storage" stance, FOR EVER, until downed. I'm not sure why.
Suggestion: "fill the storage" toil should be able detect "storage is full" event and stop the job accordingly.
I have about 1300 pemmican. I built a food basket to store it. One of my pawn started to haul all my 1300 pemmican and try to put it into that basket. When the basket is full, he just stand still. When I built another basket, he then go to haul the remaining pemmican to that new basket.
So I guess we should whether "preserve storage capacity" before haul or "check storage capacity" while filling the storage.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.