Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Work Order questions  (Read 2394 times)

Antmf

  • Bay Watcher
    • View Profile
Work Order questions
« on: October 11, 2018, 09:49:33 am »

How do you guys create a work order to have a max of 10 beds in storage at all times? Same with brew drink from plants to have 100 always in stock? Please let me know Im a tad confused...
Logged

Shonai_Dweller

  • Bay Watcher
    • View Profile
Re: Work Order questions
« Reply #1 on: October 11, 2018, 04:36:45 pm »

With mods, presumably.

Regular vanilla manager you can set to not start a job until you have less than 10 beds available. Which isn't quite the same unless you're making orders of 1 at a time.
Logged

mikekchar

  • Bay Watcher
    • View Profile
Re: Work Order questions
« Reply #2 on: October 11, 2018, 10:36:38 pm »

Basically you can set it up in a variety of different ways.  To get the vanilla manager working, you need to assign a manager (using the "N" key) and you need to have a room with a table in it.  "Q" over the desk, create a room (any size is fine) and assign your manager to it.  After that, when you queue a job, the the dwarfs will do it *after the manager has a chance to OK it*.  Usually that takes about a day.  If your manager is busy (for example doing military service), the the jobs won't get OKed, so make sure your manager only has interruptable tasks.

Once your manager is set up, use "j" to get to the jobs list, and "m" to get to the manager screen.  This will list all of the pending jobs that the manager is overseeing.  At the beginning there will be none.  Press "q" to queue a job.  You will see a list of everything that you can do in the fortress.  Luckily you can search just by typing.  For building beds, just type "bed" and press return.

At that point it will ask you how many you want to make (0 for forever).  Never use 0, because it doesn't do what you think it does :-)  I don't see any point in ever using that, so as you are learning you can forget about it.  The key to understanding how many you want to make is to realise that there will be that many jobs queued up at your workshops when the job is active.  So if you want to make exactly 10 beds one time only, this is fantastic (and it will even distribute the work across all of your carpenter workshops if you have more than one).  For repeated jobs *most of the time* I will argue that you will want to enter 1 here.  It's the easiest to understand and so it's what I recommend you do until you understand how the manager works.  At the end of this post I will explain some more advanced usages.

After you've done that, the job will be added to the queue.  By default this job will be done once and then it will disappear from the queue for ever.  If you want to repeat the job again and again, put the cursor over the job and press "c" (for conditions").  This will open up a new screen.  On this screen you will see that it says that the job will be done only once.  You can change this with the "+" and "-" keys.  Pressing "+" will change it to "daily".  Pressing it again will change it to "monthly" and then "seasonally" and finally "yearly".

If you change it to "daily", your manager will assign the task of building 1 bed to your carpenter.  *After they finish that bed*, the manager will wait 1 day and then assign the task again.  Rinse and repeat for ever (until you cancel the job).  I often do this for milking.  Animals can be milked every 17 days.  A month is 30 days.  So I can set up a milking job "monthly" and although it is not perfectly efficient (I'm wasting almost half the milk), it's convenient and means I'll never get cancellation spam.  There are some trickier ways to set it up, but that's the basic.  (If you have 17 milkable animals, you can set up the job daily and eventually the animals will get into the right kind of schedule that you rarely get any spam -- one cheese a day is a heck of a lot of food, so you almost certainly don't need more than this many milkable animals).

In addition to being able to change the frequency of a job, you can change it based on the resources you need to do the job (in the case of a bed, it's logs) and the product (the beds).  To limit the number of beds that are "available" (i.e. not being hauled and not already installed somewhere), you can press the "p" (for products) button.  It already defaults to the "at most" condition.  If you highlight the condition and press "q" you can cycle through the numerous conditions that you can set, but almost always you want "at most" for a "products" condition.  You can then press "n" to set the number that you want to have.

In your case, you want to have "at most" 10 beds, so you can set 10 there.  Again, as Shonai_Dweller said, this will probably give you slightly different results than you expect.  What will happen is that when you have 10 beds in stock, it will make 1 more, and you will have 11.  As long as you never install more than 1 bed per day, you will always have either 10 or 11 beds in stock.  If you suddenly use 10 beds in a single day, your carpenter will start to make beds *once per day* until you have 11 again.  So after using 10 beds in one day, it will take you 10 days to replenish your stock.

I will argue that *most of the time* this is exactly what you want.  Normally you don't have a *prolonged* need to be creating a lot of beds -- and if you do, then you can just make another one time job to queue up as many as you need.  However, if you want to get fancy, instead of having a job size of 1, you can make a job size of 5.

But remember if you say that you want "at most" 10 beds, what will happen is that when you have 10 beds, you will suddenly make 5 more.  It's important to understand that this "at most" means "make beds when I have this many or less" -- not what you might think of when you say "I want at most 10 beds".  In this case, you will usually have between 10 and 15 beds, but if you suddenly use 10 at a time, you will queue up a job for 5 beds.

So to compensate for this, you just need to change the number on the "at most" condition, from 10 to 5.  So this means you will make 5 beds and you want "at most" 5 beds to be available.  This means that when you get down to 5 beds, you will make 5 more.  This means that you will always have between 5 and 10 beds -- which is probably what you wanted.

I should point out that you should also use the "r" button to add a "reagents/materials" condition.  This one defaults to "at least".  In the case of beds, the "r" button will add an "at least" 1 log available condition.  This is good because the job won't get added by your manager unless you have at least 1 log available.  Usually I set this to 10 or so, because I might have 10 things that need logs and they might all come up at the same time.  It just gets rid of cancellation spam.

For brewing, it's just exactly the same thing.  However, it's a bit more complicated because the brewing job makes a variable amount of drink.  If your plant stack size is 1, then you will make 5 drink in that job.  If you plant stack size is 5, then you will make 25 drink.  For this reason, unless you have a *huge* fortress, I recommend only doing job sizes of 1 for brewing.  If you want to make sure that you always have around 100 drink, then set the "p" condition to "at most 100", but keep in mind that this means you will brew when you have 100 drink left, which means that you will always have between 100 and 125 drink (maybe more if you get some big plant stacks).  Again, to counter that, just set the number lower.  If you set it to 75, then you will brew every time you have 75 drink left, meaning that you will always have between 75 and 100 drink.

One thing about brewing is that there is a limit to how fast you can use the booze.  Each dwarf drinks once every 14 days.  That means that for every 14 dwarfs, you will use on average one drink every day (assuming you aren't cooking with it -- which you should, but that's a different story).  So even if you have 140 dwarfs, you can only use 10 drinks a day.  There is no need to brew more than once a day.  In some big fortresses (or if you are cooking a lot of drink), you *might* bump the size of the job up to 2 or 3, but there is no need to go any higher than that ever.

Hope that helps!  There is *lots* more to the manager and I *really* should get off my bum and write stuff up for the wiki.  Also keep in mind that there are lots of bugs (like all of DF).  Sometimes the "r" conditions and "p" conditions are missing or wrong.  There are ways to build them by hand, but you'll have to experiment with that yourself.  But for 90% of everything you might want to do in the fortress, the manager can do it extremely well.
Logged

archmagi1

  • Bay Watcher
    • View Profile
Re: Work Order questions
« Reply #3 on: October 15, 2018, 03:55:19 pm »

Also, remember, you can stockpile restrict input ingredients or workshop restrict various things so that some of your manager automation can be accomplished by labor restrictions.
Logged

Starver

  • Bay Watcher
    • View Profile
Re: Work Order questions
« Reply #4 on: October 15, 2018, 04:34:36 pm »

I tend to have most jobs so managed to specific workshops, myself, perhaps as a hangover from prior to this Work Order doohickey. Juggling with whether a workshop (perhaps one of several of its particular species) will take generalized Work Orders, alongside the localised ones, and also the localised management of which dwarves (by name and/or skill-range) can work there, you can ensure that some jobs are not blocked by other jobs, yet do not block others themselves.

This is most useful when you've got an array of (say) Masons where you want a slow but steady production of granite, as well as rock pots enough to serve needs, as well as the ten excellent quality thrones and tables you need for that new dining room, etc.

As soon as we're able to redefine general jobs to workshop-specific, vice-versa and/or copypasta already defined Orders across to a different Order context on demand it will be (approaching) perfect. Until then, maybe record a macro?
Logged