Giter Site home page Giter Site logo

lilwhitemouse / rimworld-lwm.deepstorage Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 36.0 7.39 MB

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

C# 98.97% Perl 0.90% Shell 0.13%

rimworld-lwm.deepstorage's People

Contributors

aamulumi avatar dombarber avatar frederik-hoeft avatar klvlt avatar leonusdh avatar lilwhitemouse avatar marvinlira avatar muggenhor avatar qwerty19106 avatar shiuanyue avatar sumghai avatar vfauth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rimworld-lwm.deepstorage's Issues

Deep Storage breaks a Toil if it is reused

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.

See if it's possible: Force update of ListerHaulables

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.

Deep Storage Error occurs when creating brand new stockpile zones not near a DSU

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:

  1. Create some DSU's
  2. ...
  3. Profit Attempt to create a few new stockpile zones. In some instances, Deep Storage will throw an exception, and only a small non-rectangular region of the stockpile will get created (as if there were already another zone or a wall in the way in the remaining tiles).

A couple possibilities for step 2:

  • Relocate a deep storage unit to a new location (have minify everything installed, if that's relevant).
  • Attempt to use Haul Explicitly to store things in a DSU (this doesn't actually work, but potentially could have errored while I wasn't in dev mode to see it). ** This one seems likely, it's mentioned in the log **
  • Unload a colonists inventory between a pair of DSU skips set to store silver while the pawn was carrying some ridiculous amount of silver. A few of the piles automatically fell into the skips.

Things I've tried:

  • Removing as many other mods as I could which I thought could impact it.

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. :)

Add support for Vanilla Furniture Expanded, More Furniture, RimFridge

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)

adding mod mid save produces errors

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()

version update to steam

I think the steam version and github version do not match. are there unposted changes on the steam version?

Can not clear the final stack of disallowed item.

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

Lockable storage Units

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?

Item count limits?

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)

Combat Extended compatibility: Weapons not hidden inside Weapons Locker

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?

Wall refrigerators?

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.

[Request] Silver Storage

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.

Liquid container and interaction with other mods, potentially gas.

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.

RimFridge compatibility broken

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)

Increase Weapons Locker mass and bulk capacities

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:

calcs

Pawns will still put too many things in DSUs

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.

<maxTotalMass> do not limit storage

restrictions do not apply on storage, weight of stored items exceeds the limit. Steps to reproduce with Tall shelf:

  1. Modify Uranium def to have 1.18 instead of 1
  2. Allow Uranium in Tall shelf, so 8 stacks of uranium gives you 708 kg and Tall shelf max limit is 640 kg. You will see that pawns able to put 8 stacks to Tall shelf with 708/640 kg mass.

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.

Cannot store winter clothes and armor in Clothing Rack

A clothes rack is not suitable for storage in most winter clothes and armor with mass more 2.5 kg.


<maxTotalMass>2.5</maxTotalMass><!-- allow 10 t-shirts per slot -->

In contrast, a weapon cabinet holds 30 kg.


<maxTotalMass>30</maxTotalMass><!-- ~8 assault rifles --><!--Its pieces cannot be moved as precisely to fit as many-->

Last version of plugin: 1.0.0.9.

10 jobs in ten ticks

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

Saving game after destroying DSU can can break things

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).

Reinforced storage: weapon lockers

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.

Add Mod Settings option to toggle Weapons Locker map view capacity indicators

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.

Null thingClass

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()

Strange behavior when pawn fully filled the storage.

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.

My version is: 339ce17

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.