Multi-tasking - reading whilst cooking?

As the saying goes " a watched pot never boils"…
Is there some way to implement reading whilst cooking?
(BTW, I did a quick search but didn’t see anything on this so I’m enquiring…)

Boiling water is hard to screw up - as are many other simple cooking tasks.
I’d like to be a able to read and cook at the same time, perhaps also craft items or practise skills… (IRL I regularly read whilst baking bread and never burn it because I carefully control the amount of wood I put in the stove.)

As a work-around, I did edit json to reduce recipe times or improve batch efficiency but not everyone wants to do that… So any ideas or thoughts?

There have been discussions about dividing recipes into active and passive sections, but no work to actually implement anything like that.

To clarify: those discussions have been had here, not among the core team, so you’d probably have to implement it yourself or find someone willing to do it for it to happen within a reasonable amount of time.

1 Like


  1. Add another keybind to the crafting menu, perhaps ‘m’ for multitask, which opens a batch crafting menu.
  2. Pressing enter on desired craft amount asks you to pick a direction around you.
  3. Selecting direction adds a multitasking activity at that spot, which temporarily “consumes” the tools and ingredients
  4. Being within 6 tiles of that activity makes it progress unattended
  5. Additional multitask activities or doing anything but standing still slightly increases the time that the multitask activity takes.

Hmm, an “in progress multitasking $item” item would probably work better than activity (as it can be moved easily).

Perhaps the work-around is simplest for now… I wonder, is there is an easier way to reduce all cooking times without text editing all json recipes with a find/replace substitution for ‘time’ and ‘batch’?

It should probably increase the risk of failure as well. I won’t tell you how many times I set something on the stove to simmer and forgot about it until it was ruined. Perhaps the extra risk of failure can be mitigated by the use of a timer.

The two biggest real world problems with multitasking are time management and lost focus. You can’t have 2 tasks requiring critical attention at the same time. You can’t successfully read a book that pushes your intellectual abilities when you have to stir a pot every 10 minutes.

I’d start with a couple of activity flags, multitaskable and interruptable. Some activities can be both. Multitaskable means the task provides windows of opportunity that you might be able to fill with an interruptable sub-task.

Cooking a pot of beans is multitaskable but not interruptable. Reading is interruptable but not multitaskable. Mechanical recipes tend to be interruptable.

Multitaskable recipes would need to include some additional parameters. How much time is available? How often would attention need to be given (stir the pot every 5 min? 15 min? what if a slow cooker is used vs a stock pot?).

Interruptable tasks would need to examine the worst possible match of requirements to skills and proficiencies. If you are at the edge of your skill level, then the action becomes essentially uninteruptable. You can TRY, but unless you can finish before you need to stir the pot, you will get no benefit from the effort. A reasonable algorithm would be needed to determine benefit considering your skill levels, the skill level requirements of the action, and frequency of “stirring the pot”.

You’d also need to revamp in-progress items to handle interruptable-false recipes. Incomplete items make no sense for interuptable-false recipes. I have a failed cookie recipe I started months ago still sitting on my counter. When I finally got oatmeal to replace what was lost, I was no longer cooking on nearby fires. The point is, if you can’t replace an ingredient in an interruptable-false recipe in a very short time, then all ingredients used to that point are lost and the in-progress result becomes smashed if non-food, and if food becomes as tasty as the worst tasting ingredient, as toxic as the most toxic ingredient, and as perishable as the most perishable ingredient. In-progress food right now is a terrible exploit. Forget about fridges and freezers and other forms of food preservation. Start recipes and stop immediately. In-progress items never spoil!

How much time? You should probably at least have 10 minutes to use a food processor, or to get something from the basement. Soups, though, could be put in a fridge while you go hunting. It’s not an uncomplicated problem.

Perhaps the best suggestion is just to have a multi-tasking flag that indicates it can be left whilst reading… Boiling water and baking clay pellets are hard to screw up and could easily be done whilst reading… Still wondering if there is a simple edit I can do in json to add or increase batch efficiency, other than find/replace… Any one?

you can give your npc a book to read from and train you too while doing something

1 Like

multitasking while cooking sounds kinda like a bad idea unless you’re just waiting for things to boil like soup etc.
only certain things that don’t require intense care/surveillance should be craftable however this issue has been brought up before I think.
using the code for how blob vechiles “grow” over time might help make things into a “timer” that allows you to multitask however

I agree with this. For a start the multitaskability and interruptability could be calculated from the amount of different ingreadients (more → lower multitaskability) and tools used (cookers → not interruptible, wrenches/pliers → interruptable). But non-interruptible doesen’t mean it cannot be interrupted. It’s just that leaving 6 tiles range of the item could prompt you if you want to leave, and if you do, a re-start penalty would start to be added.

The non-spoiling of “in progress” items is a separate issue (I must admit that I am exploiting this in-game :D).

There is a simple edit you can do in src/recipe.cpp to make NPC assistance be linear in number of NPCs. So 3 NPCs mean you can cook (1+3)=4 times faster.

1 Like

Nice! So, the question becomes, would it be wise to allow multitaskability and/or interruptability to be set by hand. On the one hand, if a person is irritated by a particularly unrealistic multitask, they could always go in and try to define them more satisfactorily. On the other hand, if it has been defined by hand, changes that would be handled automatically by the default, such as adding a self stirring pot, could mean forcing everyone who defined a multitask by hand to redo them.

I’m usually programming with the primary goal of eliminating error, always thinking in terms of removing user interaction where it is tedious, forcing user interaction where it is necessary. Cdda is probably more like, don’t require user interaction, but allow it if the user gets irritated enough by a particular result. I’m assuming that’s the difference between the c++ and json code. I’d love to take on some tiny, unimportant task to see how it all works. My biggest mental hurdles are setup tasks - learning to use github, and maybe a new IDE (I’ve been using Qt for a long time now, I see cmake there but not supported, so don’t know if it’s rational to try to work on cdda using Qt.)

And like I said, it’s an awesome exploit! :sweat_smile: This is a zombie apocalypse. If a survivor finds a use for something in that reality that is not as it was intended by its creator, but that increases survivability or quality of life, is it a bug? Or is it just that survivor adapting and overcoming?

Hmm. Self-stirring pot. Which takes more skill, the professional version requiring a rotor, a tiny motor, and a control circuit, or the makeshift version, requiring a robot arm, rubber glove, spoon, string, rope and pulley system, and a waterwheel? And, yes, THAT rope and pulley system, because it would be furniture!

1 Like

CDDA is a sandbox game, I say do whatever you want with it. If something bothers/irritates me, I change it.

You don’t have to use an IDE (I use vim) to edit CDDA. You also don’t have to use Github. In fact I find Github unethical and boycott it as much as possible. You can just keep your changes locally and perhaps upload them elsewhere. I don’t know if CDDA has CMake, the official guide says to just use the makefiles directly and that is what I do.

It is a bug, but a useful one :).

There are “kitchen robots” which seem to be an appliance that accepts a bowl and can auto-mix the food in it. I doubt you need much skill to use them IRL.

1 Like

For water boiling you can do that while doing something else since PR #51075 “Boiling water (with physics) makes it safe to drink”. To use just put water in a firesafe container (e.g. a pot), put on the fire and wait. I am not sure of a way to get a list of things that work that way though.


Thanks. This I did not know. I’ll check it out. :slight_smile:

1 Like