Mod Suggestion: Backpacks

Well i see that increasing the backpack size is actually quite easy so that makes my idea a lot easier to realise.

I have the idea to create a job called transporter which transport items from 1 stockpile to another. This might sound a bit dumb to have a specific job for that but if there is this job you can just have a stockpile near your mine without having to worry about either your workers to walk a mile or your blacksmith have to walk a mile for every item.

I might consider creating backpacks for normal worker but i first will be making the transporter reality.

and merry xmas!

1 Like

Hello everyone. I have a question. Do you know what files need to be edited to increase the capacity of the backpack

Mixins:base_human:base_human.json

  "stonehearth:storage": {
     "type": "backpack",
     "public": false,
     "capacity": 4
  },

I tried to change the capacity. It does not work. They still only take 3 in the backpack and 1 thing in their hands. Sorry for my english :wink:

It’s okay!
I have not tried it myself yet. I was looking at the pack mule trait, to try to figure out how it does it. But unfortunately, I don’t really understand lua file scripting very well to try to do something like the trait’s effect. I can point you to that one if you would like to look at it?

It is in Data : Traits : Pack Mule
There is the json, the lua, and the icon image.

The json has these lines as the ones of interest:

"script_controller": "stonehearth:trait_scripts:pack_mule",
"data": {
  "carry_slots_modifier": 2,
  "speed_modifier": 0.9   
 }

The trait script it refers to according to the manifest is:
“trait_scripts:pack_mule”: "file(data/traits/pack_mule/pack_mule_trait.lua)"
As a confirmation that the lua in there is the important part.

I also tried to change the parameters in this file: put_another_restockable_item_into_backpack.lua it is in ai:actions. There is somethings like this:
local count = 0
local candidate_scores = {}
local container_to_item = {}
local inventory = stonehearth.inventory:get_inventory(entity:get_player_id())
for _, entry in ipairs(args.candidates) do
local item = entry.entity
if ok_to_pickup(item) then
count = count + 1
if radiant.entities.exists_in_world(item) then
self._log:debug(‘adding %s to pathfinder’, item)
pathfinder:add_destination(item)
else
self._log:debug(‘adding %s to pathfinder’, inventory:container_for(item))
local container = inventory:container_for(item)
pathfinder:add_destination(container)
container_to_item[container:get_id()] = item – this may overwrite; that’s ok.
end
candidate_scores[item:get_id()] = entry.score
if count >= 4 then
self._log:debug(‘got enough. ignoring remaining items’)
break
This is also lua and changes did not bring anything. The file you are writing about is an additional place in the Traper’s backpack ?

I see my first thread revived from the grave :smile:~

Hmmm… haven’t checked this out yet :thinking:. Gotta take a look, thanks @Kittyodoom!

2 Likes