Lets cut to the chase, the current inventory system, while very nice as an abstraction (and far better than most games) still has a major flaw, and that is the separation of volume from the container.
This causes the following problems (of the top of my head):
-
Dropping a bag with full volume (to get rid of encumbrance for a battle) immediately causes the PC to be overloaded with items; dropping the items with the bag takes too much time, much more than it should.
-
Large items are somehow contained in more than one container, which is physically impossible. For instance, 2 messenger bags, having a total capacity of 40 can hold a single item with 40 volume, or items adding up to 40 volume. The latter is sensible (so long as none of the items have greater than 20 volume), the former is not since you cannot “divide” the item between bags.
-
Often there is little advantage to carry a large bag as opposed to two smaller bags of equivalent summed volume, #2 is the reason for this arbitrary equivalency
Now, then, to solve these problems, a new container system/inventory system will have to be implemented. I know this is in the works, but I wanted to share some of my ideas for its implementation, as well as allow this thread to be a suggestion box for this particular issue.
A. Inventory management
In order to leave the item attributes for all containers alone as much as possible (which saves considerable time and manpower) there needs to be an adjustment to the inventory menu and how it operates. A new flag may, however, be necessary for containers to operate in the new way.
I suggest the following:
- Containers have individual volume (already an attribute of containers/clothing)
- The inventory menu is scrapped for a combined “equipment/inventory” menu, with drop down’s for any containers (explained below)
- Containers, upon being selected “open” and their contents are revealed for use:
+reinforced backpack
becomes:
-reinforced backpack (5/40)
category 1
-item 1
- In order to do this the items in the backpack need to be “tied” in someway to the back pack itself. That way, whenever something is done to the bag (dropped/picked up), it is also done to the items inside the bag.
- A new (M)ove command is necessary to be able to move things around from container to container. It would essentially work the same way filling liquid container’s does. i.e You choose the items to move, then choose the container to move it to, if an item doesn’t fit, you have the “Not enough room, wield?” message display.
B. Picking up items
- Have all items picked up, be picked up by volume (largest volume first), this item is then put in to the container with the most free volume (regardless of total volume), and so on until all items are picked up, or an item is picked up which is too “big” to carry in any bag. This adds a more realistic character to inventory management (some might argue it borders on tedium, but the above considerations should make this as painless as possible).
- Because the containers are separate entities, you can no longer “divide” items into multiple containers. If you want to carry that car engine, you need to empty your quarter-full backpack to do it, not just wear a trenchcoat to make up the difference.
C. Programming
This is going to be a huge undertaking (if implemented), even reading over this, with my laughable understanding of python, I can see this is going to take some work. This is what I see with my limited eyes:
- There needs to be a new attribute/flag that is “on” if the item has any volume (if there is a universal item class, this shouldn’t be too hard to do, I think.) which allows the container to be “linked” to any item which it contains (this part is harder).
- The “link” flag/attribute needs to be defined (/associated with a function which is defined) so that any thing that happens to the container, happens also to the items “linked”. Destruction of the container is tricky, either the items contained are also destroyed (makes sense with things like acid/explosions, but not so much with zombie attacks) or simply dropped. The way it could work is, any item dropped into a container has its own “link” flag turned on, this way even containers can be put in other containers (bags inside a bag), though it would serve little purpose (since it doesn’t add any additional volume), it can be used as an organizational measure. When the item is dropped or moved, the link flag is turned off.
- The (M)ove command needs to be defined; it can work like this: the link flag is turned off for items to be moved, then turned on again once they are moved to a new container (the container will turn it on).
- Picking up needs to be changed. Items that are picked up, need first to be sorted by volume, then put into the container with max volume until all items chosen are picked up, or until space runs out (in which case the usual “no space, wield?” message runs.
- Special containers, which I didn’t really talk about, should stay the same (I don’t see a need to change them differently than any other normal item)
- The inventory screen should be changed to combined the equipment and inventory menu into one cohesive whole (with the above suggested tabbed drop-downs), rather than two separate lists
Sorry, if anything here is too idiotic to even consider; ignorance is bliss, but whoso loveth instruction, loveth knowledge.