prioritize
==========

Tags: fort | auto | jobs

Command: "prioritize"

  Automatically boost the priority of selected job types.

This tool can force specified types of jobs to get assigned and completed as soon as possible. Finally, you can be sure your food will be hauled before rotting, your hides will be tanned before going bad, and the corpses of your enemies will be cleared from your entranceway expediently.

You can prioritize a bunch of active jobs that you need done *right now*, or you can mark certain job types as high priority, and "prioritize" will watch for and boost the priority of those types of jobs as they are created. This is especially useful for ensuring important (but low-priority -- according to DF) jobs don't get ignored indefinitely in busy forts.

It is important to automatically prioritize only the *most* important job types. If you add too many job types, or if there are simply too many jobs of those types in your fort, the other tasks in your fort can get ignored. This causes the same problem that "prioritize" is designed to solve. The script provides a good default set of job types to prioritize that have been suggested and playtested by the DF community.

Also see the do-job-now tweak and the do-job-now script for boosting the priority of specific individual jobs.


Usage
-----

   prioritize [<options>] [defaults|<job_type> ...]


Examples
--------

"prioritize"
   Print out which job types are being automatically prioritized and how many jobs of each type we have prioritized since we started watching them.

"prioritize -a defaults"
   Prioritize the default set of job types that the community has suggested and playtested (see below for details).

"prioritize -j"
   Print out the list of active jobs that you can prioritize right now.

"prioritize ConstructBuilding DestroyBuilding"
   Prioritize all current building construction and destruction jobs.

"prioritize -a --haul-labor=Food,Body StoreItemInStockpile"
   Prioritize all current and future food and corpse hauling jobs.


Options
-------

"-a", "--add"
   Prioritize all current and future jobs of the specified job types.

"-d", "--delete"
   Stop automatically prioritizing new jobs of the specified job types.

"-j", "--jobs"
   Print out how many unassigned jobs of each type there are. This is useful for discovering the types of the jobs that you can prioritize right now. If any job types are specified, only returns the count for those types.

"-l", "--haul-labor <labor>[,<labor>...]"
   For StoreItemInStockpile jobs, match only the specified hauling labor(s). Valid "labor" strings are: "Stone", "Wood", "Body", "Food", "Refuse", "Item", "Furniture", and "Animals". If not specified, defaults to matching all StoreItemInStockpile jobs.

"-n", "--reaction-name <name>[,<name>...]"
   For CustomReaction jobs, match only the specified reaction name(s). See the registry output ("-r") for the full list of reaction names. If not specified, defaults to matching all CustomReaction jobs.

"-q", "--quiet"
   Suppress informational output (error messages are still printed).

"-r", "--registry"
   Print out the full list of valid job types, hauling labors, and reaction names.


Which job types should I prioritize?
------------------------------------

In general, you should prioritize job types that you care about getting done especially quickly and that the game does not prioritize for you. Time-sensitive tasks like food hauling, medical care, and lever pulling are good candidates.

For greater fort efficiency, you should also prioritize jobs that can block the completion of other jobs. For example, dwarves often fill a stockpile up completely, ignoring the barrels, pots, and bins that could be used to organize the items more efficiently. Prioritizing those organizational jobs can mean the difference between having space in your food stockpile for fresh meat and being forced to let it rot in the butcher shop.

It is also convenient to prioritize tasks that block you (the player) from doing other things. When you designate a group of trees for chopping, it's often because you want to *do* something with that space. Prioritizing tree chopping will get your dwarves on the task and keep you from waiting too long.

You may be tempted to automatically prioritize "ConstructBuilding" jobs, but beware that if you engage in megaprojects where many constructions must be built, these jobs can consume your entire fortress if prioritized. It is often better to run "prioritize ConstructBuilding" by itself (i.e. without the "-a" parameter) as needed to just prioritize the construction jobs that you have ready at the time.


Default list of job types to prioritize
---------------------------------------

The community has assembled a good default list of job types that most players will benefit from. They have been playtested across a wide variety of fort types. Add "prioritize -aq defaults" to your "dfhack-config/init/onMapLoad.init" file to have them automatically prioritized for you in your fort.

They include:

* Handling items that can rot before they rot

* Medical, hygiene, and hospice tasks

* Putting items in bins/barrels/pots/minecarts

* Interactions with animals

* Dumping items, pulling levers, felling trees, and other tasks that you, as a player, might stare at and internally scream "why why why isn't this getting done??".
