v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "Utility:Dwarf Therapist/Addons Repository"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
(scrubbing dust out of cracks, and Rule G)
 
(51 intermediate revisions by 17 users not shown)
Line 1: Line 1:
Over the years [[Utilities#Dwarf_Therapist|Dwarf Therapist]] has evolved to boast quite a number of advanced features that streamline the managing of labors in a fort. Most of the power and benefit derived from these features depends on having a good set of roles, professions, optimization plans, and filter scripts.
+
Recent versions of Dwarf Therapist include a very large set of customizable tools for managing your dwarves, namely custom roles, custom professions, custom grid views, filter scripts, and optimization plans, which greatly enhance the user's ability to manage their fort in a well-optimized, pain-free manner. This page serves as a repository for packaged exports of custom definitions for these tools, created by other players and made available for other users here. This page is only meant to serve Splinterz's current fork of [[Utilities#Dwarf_Therapist|Dwarf Therapist]]; earlier versions of the utility did not yet implement many of the features described here. If you need help understanding what's documented on this page, or would like to learn how to write Dwarf Therapist customizations yourself, refer to the {{dffd|7889|Dwarf Therapist User Guide}}. All exports should be hosted at the [https://dffd.bay12games.com/ Dwarf Fortress File Depot].
 
 
Please include your additions on this page, including them inline when appropriate or as links to [http://dffd.wimbli.com/ DFFD submissions]. Please refrain from linking to other third-party file hosters unless you can ensure the links will still work years from now.
 
 
 
'''NOTE:''' This page is for splinterz's fork of [[Utilities#Dwarf_Therapist|Dwarf Therapist]], as it is the only version that implements many of these features.
 
  
 +
You are encouraged to standardize the upload format to "Dwarf Therapist Export---<Package Name>".
 +
<!--
 
== What are all these? ==
 
== What are all these? ==
  
 
For a detailed explanation of all things Dwarf Therapist, with screenshots and everything, download ResMar's [http://dffd.wimbli.com/file.php?id=7889 User Guide].
 
For a detailed explanation of all things Dwarf Therapist, with screenshots and everything, download ResMar's [http://dffd.wimbli.com/file.php?id=7889 User Guide].
 
 
'''Custom professions''' are templates that dictate what labors a dwarf should have enabled.
 
'''Custom professions''' are templates that dictate what labors a dwarf should have enabled.
  
Line 15: Line 12:
 
'''Custom roles''' allow you to define groups of [[attributes]] (e.g, strength); [[Personality_trait|traits ]] (e.g, self-discipline); [[skills]] (e.g, appraiser); and preferences (e.g., fondness for fire opals) that, when considered together, determine how suited a particular dwarf is for that role.
 
'''Custom roles''' allow you to define groups of [[attributes]] (e.g, strength); [[Personality_trait|traits ]] (e.g, self-discipline); [[skills]] (e.g, appraiser); and preferences (e.g., fondness for fire opals) that, when considered together, determine how suited a particular dwarf is for that role.
  
On their own roles don't do anything, but when combined with the labor optimizer you can assign professions based on how suitable the dwarf is for that labor. For example, melee dwarfs should have high agility (attribute), low anger (trait), be skilled with the various weapon skills (armor user, shield user), and perhaps have a preference for armors. If a dwarf meets this criteria, he is said to fill the melee-dwarf role.
+
On their own, roles don't do anything, but when combined with the labor optimizer you can assign professions based on how suitable the dwarf is for that labor. For example, melee dwarves should have high agility (attribute), low anger (trait), be skilled with the various weapon skills (armor user, shield user), and perhaps have a preference for armors. If a dwarf meets these criteria, they are said to fill the melee-dwarf role.
  
Note that in vanilla Dwarf Fortress ''roles'' are simply professions. A "Mason" is a role/profession that says a dwarf has some skills/traits/attributes that make up a good mason. This usage of profession is different than Dwarf Therapist's, as a DT profession is really a collection of labors, and by default has nothing to do with roles.
+
Note that in vanilla ''Dwarf Fortress'' "roles" are simply professions. A "Mason" is a role/profession that says a dwarf has some skills/traits/attributes that make up a good mason. This usage of profession is different than Dwarf Therapist's, as a DT profession is really a collection of labors, and by default has nothing to do with roles.
  
 
'''Optimization plans''' are used by Dwarf Therapist to automatically assign labors to dwarves based on how suited they are for the labor. The goal in a plan is to minimize the number if idle dwarves by ensuring they all have enough labors assigned, and also to ensure that dwarves get labors they are well suited to. An automatic labor assigner does no good if it never gives the Mining labor to your legendary miner.  
 
'''Optimization plans''' are used by Dwarf Therapist to automatically assign labors to dwarves based on how suited they are for the labor. The goal in a plan is to minimize the number if idle dwarves by ensuring they all have enough labors assigned, and also to ensure that dwarves get labors they are well suited to. An automatic labor assigner does no good if it never gives the Mining labor to your legendary miner.  
Line 23: Line 20:
 
'''Filter scripts''' are simple commands that determine what dwarves to show in the main DT window. For example, a "military only" filter script would hide all the non-military dwarves. It is like a "search" for your dwarves.
 
'''Filter scripts''' are simple commands that determine what dwarves to show in the main DT window. For example, a "military only" filter script would hide all the non-military dwarves. It is like a "search" for your dwarves.
  
'''Grid views''' are the main list view in Dwarf Fortress they are accessible via the tabs at the top of the list view (Labors, Military, Social, etc).
+
'''Grid views''' are the main list view in ''Dwarf Fortress'', they are accessible via the tabs at the top of the list view (Labors, Military, Social, etc).
 +
-->
  
= Community Submitted Addons =
+
== Packages ==
 +
'''Export packages''' are ZIP or other archive files containing a set of differing customizations all meant for a single purpose.
 +
 
 +
=== Military Starter Kit ===
 +
{{DTAddon
 +
| type            = Packaged Export
 +
| download link  = {{dffd|9232}}
 +
| author          = ResMar
 +
| comments        = This ZIP file contains the customizations created over the course of the "Putting it all Together" section of the {{dffd|7889|Dwarf Therapist User Guide}}: a set of tools that makes military drafting into a much easier and more elegant process.
 +
}}
  
 
== Custom Professions ==
 
== Custom Professions ==
 +
 +
=== Chesh05's Professions ===
 +
 
{{DTAddon
 
{{DTAddon
| type            = Custom Professions
+
| type            = Custom Profession
| download link  = [https://docs.google.com/file/d/0B7lZhfwcz0boYUFYRzkxa1Izbzg/edit?usp=sharing Google Drive]
+
| download link  = [http://www.mediafire.com/download/9n94h4o147pi1yp/Chesh05+Custom+Professions+Last+Updated+November+2014.dtp Chesh05 Custom Professions]
| author          = [http://www.reddit.com/u/Nameless_Archon /u/Nameless_Archon]
+
| author          = [https://www.reddit.com/user/chesh05 Chesh05]
| current version = 1.0
+
| comments        = Last Updated Nov 11, 2014
| comments        = Last Updated June, 2013
+
A collection of basic custom professions
These are Nameless Archon's custom professions. He discusses their usage in his [https://www.youtube.com/playlist?list=PLLiFqDG3lSdOyRWlcCLOxGCL4y5nAWNWw tutorial video series].
+
}}
 +
== Grid Views ==
 +
'''Grid views''' are the main list view in Dwarf Fortress they are accessible via the tabs at the top of the list view (Labors, Military, Social, etc.).
 +
 
 +
=== Compact Labors View ===
 +
{{DTAddon
 +
| type            = Grid View
 +
| download link  = {{dffd|9233}}
 +
| author          = ResMar
 +
| comments        = An even smaller version of the default Labor view which merges all of the hauling sublabors into one "Hauling" column. This view is recommended for 21-inch screens, as it allows you to use the labor view with left or right-mounted docks without resorting to a horizontal scrollbar.
 +
}}
 +
 
 +
=== Masterwork Dwarf Therapist ===
 +
Highly customized version of Dwarf Therapist for use with Masterwork dwarf fortress.  It uses the same binary build as Splinterminds, just uses a new .dtg (default grid view) as well as a .ini file that covers name changes for Masterwork. http://www.bay12forums.com/smf/index.php?topic=132010.0
 +
 
 +
== Filter Scripts ==
 +
'''Filter scripts''' are simple commands that determine what dwarves to show in the main DT window. For example, a "military only" filter script would hide all the non-military dwarves. It is like a "search" for your dwarves.
 +
 
 +
=== Pending Changes ===
 +
Displays only those dwarves with pending changes.
 +
 
 +
{{gamedata
 +
| title = Pending Changes
 +
|<nowiki>
 +
d.is_labor_state_dirty(0)  ||
 +
d.is_labor_state_dirty(1)  ||
 +
d.is_labor_state_dirty(2)  ||
 +
d.is_labor_state_dirty(3)  ||
 +
d.is_labor_state_dirty(4)  ||
 +
d.is_labor_state_dirty(5)  ||
 +
d.is_labor_state_dirty(6)  ||
 +
d.is_labor_state_dirty(7)  ||
 +
d.is_labor_state_dirty(8)  ||
 +
d.is_labor_state_dirty(9)  ||
 +
d.is_labor_state_dirty(10) ||
 +
d.is_labor_state_dirty(11) ||
 +
d.is_labor_state_dirty(12) ||
 +
d.is_labor_state_dirty(13) ||
 +
d.is_labor_state_dirty(14) ||
 +
d.is_labor_state_dirty(15) ||
 +
d.is_labor_state_dirty(16) ||
 +
d.is_labor_state_dirty(17) ||
 +
d.is_labor_state_dirty(18) ||
 +
d.is_labor_state_dirty(19) ||
 +
d.is_labor_state_dirty(20) ||
 +
d.is_labor_state_dirty(21) ||
 +
d.is_labor_state_dirty(22) ||
 +
d.is_labor_state_dirty(23) ||
 +
d.is_labor_state_dirty(24) ||
 +
d.is_labor_state_dirty(25) ||
 +
d.is_labor_state_dirty(26) ||
 +
d.is_labor_state_dirty(27) ||
 +
d.is_labor_state_dirty(28) ||
 +
d.is_labor_state_dirty(29) ||
 +
d.is_labor_state_dirty(30) ||
 +
d.is_labor_state_dirty(31) ||
 +
d.is_labor_state_dirty(32) ||
 +
d.is_labor_state_dirty(33) ||
 +
d.is_labor_state_dirty(34) ||
 +
d.is_labor_state_dirty(35) ||
 +
d.is_labor_state_dirty(36) ||
 +
d.is_labor_state_dirty(37) ||
 +
d.is_labor_state_dirty(38) ||
 +
d.is_labor_state_dirty(39) ||
 +
d.is_labor_state_dirty(40) ||
 +
d.is_labor_state_dirty(41) ||
 +
d.is_labor_state_dirty(42) ||
 +
d.is_labor_state_dirty(43) ||
 +
d.is_labor_state_dirty(44) ||
 +
d.is_labor_state_dirty(45) ||
 +
d.is_labor_state_dirty(46) ||
 +
d.is_labor_state_dirty(47) ||
 +
d.is_labor_state_dirty(48) ||
 +
d.is_labor_state_dirty(49) ||
 +
d.is_labor_state_dirty(50) ||
 +
d.is_labor_state_dirty(51) ||
 +
d.is_labor_state_dirty(52) ||
 +
d.is_labor_state_dirty(53) ||
 +
d.is_labor_state_dirty(54) ||
 +
d.is_labor_state_dirty(55) ||
 +
d.is_labor_state_dirty(56) ||
 +
d.is_labor_state_dirty(57) ||
 +
d.is_labor_state_dirty(58) ||
 +
d.is_labor_state_dirty(59) ||
 +
d.is_labor_state_dirty(60) ||
 +
d.is_labor_state_dirty(61) ||
 +
d.is_labor_state_dirty(62) ||
 +
d.is_labor_state_dirty(63) ||
 +
d.is_labor_state_dirty(64) ||
 +
d.is_labor_state_dirty(65) ||
 +
d.is_labor_state_dirty(66) ||
 +
d.is_labor_state_dirty(67) ||
 +
d.is_labor_state_dirty(68) ||
 +
d.is_labor_state_dirty(69) ||
 +
d.is_labor_state_dirty(70) ||
 +
d.is_labor_state_dirty(71) ||
 +
d.is_labor_state_dirty(72) ||
 +
d.is_labor_state_dirty(73)
 +
</nowiki>
 +
}}
 +
 
 +
=== Ramblurr's Filter Pack ===
 +
A small collection of filter scripts useful when using the labor optimizer.
 +
 
 +
{{gamedata
 +
| title = Ramblurr's Filter Pack
 +
|
 +
<nowiki>Military
 +
d.squad_id() >= 0
 +
 
 +
Nobles
 +
d.noble_position()
 +
 
 +
Non-Mil
 +
d.squad_id() < 0
 +
 
 +
Non Noble
 +
!d.noble_position()
 +
 
 +
Non-Mil and Non-Noble
 +
!d.noble_position() && d.squad_id() < 0
 +
 
 +
Not Missing Limbs
 +
!d.has_health_issue(31,0) && !d.has_health_issue(31,1)
 +
 
 +
Missing Limbs
 +
d.has_health_issue(31,0) || d.has_health_issue(31,1)
 +
</nowiki>
 +
}}
 +
 
 +
=== Tofof's Unhandicapped Filter ===
 +
Excludes dwarves based on blindness and usability (not just absence) of limbs.
 +
{{gamedata
 +
| title = Tofof's Unhandicapped Filter
 +
|<nowiki>
 +
!(
 +
//blind
 +
d.has_health_issue(15,0)
 +
 
 +
//severed or missing limbs
 +
|| d.has_health_issue(31,0)
 +
|| d.has_health_issue(31,1)
 +
 
 +
//ability to stand lost or imparied  (note - treatable if nerve damage)
 +
|| d.has_health_issue(17,0)
 +
 
 +
//ability to grasp lost or imparied  (note - treatable if nerve damage)
 +
|| d.has_health_issue(18,0)
 +
 
 +
//paralyzed body or limbs  (note - can be sutured)
 +
|| d.has_health_issue(3,0)
 +
|| d.has_health_issue(3,1)
 +
 
 +
//severed sensory nerve aka completely numb  (note - can be sutured)
 +
|| d.has_health_issue(4,0)
 +
)
 +
</nowiki>
 +
}}
 +
To do the inverse and show only handicapped dwarves, remove the first and last lines: "!(" and ")".
 +
 
 +
=== Thistleknot's Filter Pack ===
 +
I pretty much use the 1st three every migrant wave.
 +
I use an optimization plan to single out militia dwarves (ranged and melee) to weaving (weapon, melee) and alchemy (archers, i.e. crossbowdwarves).
 +
 
 +
Then I run the second script to see who rates high for noble roles, and pick them
 +
 
 +
Then I run the 3rd to apply a labor optimization plan.
 +
 
 +
{{gamedata
 +
| title = Thistleknot's Filter Pack
 +
|<nowiki>
 +
1. Not Injured/Missing Limb && Not Cursed (Used to find military candidates)
 +
 
 +
(d.current_job_id()!=52) &&
 +
//not missing limbs
 +
(
 +
(
 +
!d.has_health_issue(31,0) &&
 +
!d.has_health_issue(31,1))
 +
//OR
 +
||
 +
!d.has_health_issue(31,-1)
 +
)
 +
&&
 +
(d.curse_name() == "")
 +
 
 +
2. Non military && Not Injured && Not Cursed (Used to find noble candidates)
 +
 
 +
d.squad_id() < 0
 +
&&
 +
d.current_job_id()!=52
 +
&&
 +
d.curse_name() == ""
 +
 
 +
3. Non Military, Non Noble, Not Injured && Not Cursed (Used to apply optimization plan to workers, I always enable hauling on them as well)
 +
 
 +
!d.noble_position() == ""
 +
&&
 +
d.squad_id()<0
 +
&&
 +
d.current_job_id()!=52
 +
&&
 +
d.curse_name()==""
 +
 
 +
Military
 +
 
 +
d.squad_id() >= 0
 +
 
 +
Noble & Non_military
 +
 
 +
!d.noble_position() == ""
 +
&&
 +
d.squad_id()<0
 +
 
 +
</nowiki>
 
}}
 
}}
  
 +
 +
=== ResMar's "Working Class Dwarves" / Military Recruitment Availability Filter ===
 +
 +
This is the large filter from the [http://dffd.wimbli.com/file.php?id=7889 Dwarf Therapist User Guide] by ResMar. It is explained in Chapter IV's "Writing Complex Scripts" section.
 +
 +
Here is an explanation of the characteristics it selects for:
 +
 +
This filter is designed to show dwarves that are available for full-time assignment to useful tasks, such as military recruitment. These so-called "working class dwarves" will meet the following requirements:
 +
 +
# They have all hauling labors enabled. This is one of the most apparent indicators of a “working class” dwarf, but it’s nowhere near exclusive.
 +
# They don’t have a nickname. Assuming you follow the advice given in “Assigning Nicknames”, nicked dwarves have already been dedicated to something.
 +
# They have the masonry and/or stone detailing labors enabled, but are never above “adequate” skill in the former (since actually building stone blocks is assigned to dedicated masons), and never above “competent“ in the latter (I consider “skilled” the breaking point for when an engraver is actually worth his salt, and should be taken out of the working-class pool).
 +
# They are not enlisted in the military (at least, not permanently). At least in my fortress, once a crossbowdwarf, always a crossbowdwarf slash hunter.
 +
# They don't have certain “key” labors that are handled by dedicated dwarves enabled (mining, carpentry, woodcutting, stonecrafting, cooking, brewing, any of the metalsmithing tasks, either of the jewelry tasks, and clothesmaking). The precise composition of this list may vary somewhat for you, but most players learn to dedicate certain tasks to certain dwarves to maximize results very quickly.
 +
# If they are skilled in certain useless or niche tasks (animal caretaking, small animal dissection, fish dissection, bee keeping, wax working, soap making) they have those tasks enabled. No one creates extra work for themselves by actually turning these off, at least not until you want this dwarf doing something for you.
 +
 +
{{gamedata
 +
| title = Available Working Class Dwarves Filter
 +
|<nowiki>
 +
// hauling test
 +
(d.total_assigned_labors(true) - d.total_assigned_labors(false) == 16) &&
 +
// masonry and stone detailing test
 +
(((d.labor_enabled(13) == true && d.labor_rating(13) < 3) ||
 +
d.labor_enabled(13) == false) || ((d.labor_enabled(12) == true &&
 +
d.labor_rating(12) < 4) || d.labor_enabled(12) == false)) &&
 +
// nickname test
 +
(d.nickname() == "") &&
 +
// military duty test
 +
!d.active_military() &&
 +
// key dwarf test
 +
(!d.labor_enabled(47) && !d.labor_enabled(48) && !d.labor_enabled(29) && !d.labor_enabled(11) && !d.labor_enabled(33) && !d.labor_enabled(38) && !d.labor_enabled(45) && !d.labor_enabled(50) && !d.labor_enabled(51) && !d.labor_enabled(49) && !d.labor_enabled(0) && !d.labor_enabled(53) && !d.labor_enabled(46)) &&
 +
// useless labors test
 +
((d.labor_rating(16) > 0 && d.labor_enabled(16)) || d.labor_rating(16) <= 0)
 +
&& // Animal Tr.
 +
((d.labor_rating(43) > 0 && d.labor_enabled(43)) || d.labor_rating(43) <= 0)
 +
&& // Fish Diss.
 +
((d.labor_rating(26) > 0 && d.labor_enabled(26)) || d.labor_rating(26) <= 0)
 +
&& // Animal Diss.
 +
((d.labor_rating(72) > 0 && d.labor_enabled(72)) || d.labor_rating(72) <= 0)
 +
 +
</nowiki>
 +
}}
  
 
== Custom Roles ==
 
== Custom Roles ==
Line 49: Line 315:
 
These are the Melee and Ranged Roles seen in Thistleknot's [https://www.youtube.com/watch?v=gNVci8h1MkY Efficiently Assign Militia/Labors] tutorial video, at least I think they are. I typed them in manually from what was visible on screen.
 
These are the Melee and Ranged Roles seen in Thistleknot's [https://www.youtube.com/watch?v=gNVci8h1MkY Efficiently Assign Militia/Labors] tutorial video, at least I think they are. I typed them in manually from what was visible on screen.
 
}}
 
}}
 
 
== Labor Optimizer Tutorial ==
 
 
http://www.youtube.com/embed/Jz_6hMZahU4
 
  
 
== Optimization Plans ==
 
== Optimization Plans ==
Line 66: Line 327:
 
From [http://www.reddit.com/r/dwarffortress/comments/1d39kd/anyone_have_a_good_optimizer_plan/ a reddit thread]. Emphasizes trapping and hunting, which may not be to everyone's playstyle.  
 
From [http://www.reddit.com/r/dwarffortress/comments/1d39kd/anyone_have_a_good_optimizer_plan/ a reddit thread]. Emphasizes trapping and hunting, which may not be to everyone's playstyle.  
  
The author noted: When starting with the optimization plan on a new embark, set max jobs to 10. The dorfs will usually have enough skills in certain areas to get 1-2 of each of the jobs that they should be good/great at. As you get more dorfs in the fort you will if you see fit need to lower the max jobs to 7, then 5 and then fiddle with the percent total jobs to keep the workers and haulers how you would like.
+
The author noted: When starting with the optimization plan on a new embark, set max jobs to 10. The dwarves will usually have enough skills in certain areas to get 1-2 of each of the jobs that they should be good/great at. As you get more dwarves in the fort you will if you see fit need to lower the max jobs to 7, then 5 and then fiddle with the percent total jobs to keep the workers and haulers how you would like.
  
I tend to use 5-10 max jobs, and a hauler percent that is less than the max jobs. You only want to have dorfs who don't have many important jobs running around hauling. I suggest fiddling with your percent jobs and hauler percent until you find something that you enjoy for your forts.
+
I tend to use 5-10 max jobs, and a hauler percent that is less than the max jobs. You only want to have dwarves who don't have many important jobs running around hauling. I suggest fiddling with your percent jobs and hauler percent until you find something that you enjoy for your forts.
 
}}
 
}}
 +
 +
Note from SlyrDVS in a pm: I still have to sit down and plan the jobs out again, reoptimize for a new version. As for why I have so many trappers/hunters, they are the firstline defense, they can then later become the army. :P
  
 
=== Thistleknot's Optimization Plan ===
 
=== Thistleknot's Optimization Plan ===
Line 79: Line 342:
  
 
Naming convention is
 
Naming convention is
Name, % of dwarfs, # of Labors to assign
+
Name, % of dwarves, # of Labors to assign
  
 
Vanilla 8 Labor's Per (early fort)
 
Vanilla 8 Labor's Per (early fort)
Line 311: Line 574:
 
}}
 
}}
  
== Dwarf Therapist work-arounds (or what Splintermind calls "hacks") ==
+
=== Using AutoLabor to manage hauling jobs alongside Labor Optimizer ===
 
+
Since I prefer Dwarf Therapist's %'s on calculating my roles to labor mappings via the Labor Optimizer, I found the dynamic ability that autolabor has missing. So to alleviate this. I still do my own labor optimizations every few migrant waves; however, I get the advantage of autolabor's hauling behaviour (I believe it doesn't enable hauling on dwarves that have a labor enabled for queued job).
=== Workshop Profiles ===
 
By mass assigning nicknames inside Dwarf Therapist to "mark" dwarves, they can be easily found in workshop profiles (if using Masterwork Mod, dfhack is included, Ctrl Shift N sorts alphabetically).
 
 
 
This is useful for workshop in various mods that train skills that you wish was limited to certain dwarfs, such as dwarfs who have skill in a labor that is trained.
 
 
 
=== Using Labors to Mark dwarf's for Custom Professions/Super Labors, or for Militia purposes ===
 
In this video (http://www.youtube.com/watch?v=gNVci8h1MkY), I actually do this method to assign my militia, but it could be extended for "super labors" as well.
 
  
What I do is assign a custom role to something I wish to assign that Dwarf Therapist doesn't currently support (such as assign militia dwarfs via the labor optimizer).  So I use an optimization plan to assign a specific role (such as melee dwarfs) to a meaningless labor, then when the labors are assigned.  I hand assign them inside the Therapist tool to the melee role.
+
Run this inside a DFHack console.
  
One could use the same method to assign a dwarf to a custom profession that covers multiple labors (i.e. super labor concept).
+
Note: To avoid manually running each line in the console, save this to a text file in your DF folder (e.g. "dtautolabor.txt") and run "script (filename)" in DFHack.
 
 
It goes without saying that one should unassign the meaningless labor.
 
 
 
== Filter Scripts ==
 
 
 
=== Ramblurr's Filter Pack ===
 
A small collection of filter scripts useful when using the labor optimizer.
 
  
 
{{gamedata
 
{{gamedata
| title = Ramblurr's Filter Pack
+
| title = Copy and paste into DFHack console
 
|
 
|
<nowiki>Military
+
<nowiki>
d.squad_id() >= 0
 
  
Nobles
+
autolabor 1
d.noble_position()
+
autolabor MINE disable
 +
autolabor FEED_WATER_CIVILIANS haulers 1
 +
autolabor CUTWOOD disable
 +
autolabor CARPENTER disable
 +
autolabor DETAIL disable
 +
autolabor MASON disable
 +
autolabor ARCHITECT disable
 +
autolabor ANIMALTRAIN disable
 +
autolabor ANIMALCARE disable
 +
autolabor DIAGNOSE disable
 +
autolabor SURGERY disable
 +
autolabor BONE_SETTING disable
 +
autolabor SUTURING disable
 +
autolabor DRESSING_WOUNDS disable
 +
autolabor BUTCHER disable
 +
autolabor TRAPPER disable
 +
autolabor DISSECT_VERMIN disable
 +
autolabor LEATHER disable
 +
autolabor TANNER disable
 +
autolabor BREWER disable
 +
autolabor ALCHEMIST disable
 +
autolabor SOAP_MAKER disable
 +
autolabor WEAVER disable
 +
autolabor CLOTHESMAKER disable
 +
autolabor MILLER disable
 +
autolabor PROCESS_PLANT disable
 +
autolabor MAKE_CHEESE disable
 +
autolabor MILK disable
 +
autolabor COOK disable
 +
autolabor PLANT disable
 +
autolabor HERBALIST disable
 +
autolabor FISH disable
 +
autolabor CLEAN_FISH disable
 +
autolabor DISSECT_FISH disable
 +
autolabor HUNT disable
 +
autolabor SMELT disable
 +
autolabor FORGE_WEAPON disable
 +
autolabor FORGE_ARMOR disable
 +
autolabor FORGE_FURNITURE disable
 +
autolabor METAL_CRAFT disable
 +
autolabor CUT_GEM disable
 +
autolabor ENCRUST_GEM disable
 +
autolabor WOOD_CRAFT disable
 +
autolabor STONE_CRAFT disable
 +
autolabor BONE_CARVE disable
 +
autolabor GLASSMAKER disable
 +
autolabor EXTRACT_STRAND disable
 +
autolabor SIEGECRAFT disable
 +
autolabor SIEGEOPERATE disable
 +
autolabor BOWYER disable
 +
autolabor MECHANIC disable
 +
autolabor POTASH_MAKING disable
 +
autolabor LYE_MAKING disable
 +
autolabor DYER disable
 +
autolabor BURN_WOOD disable
 +
autolabor OPERATE_PUMP disable
 +
autolabor SHEARER disable
 +
autolabor SPINNER disable
 +
autolabor POTTERY disable
 +
autolabor GLAZING disable
 +
autolabor PRESSING disable
 +
autolabor BEEKEEPING disable
 +
autolabor WAX_WORKING disable
  
Non-Mil
 
d.squad_id() < 0
 
 
Non Noble
 
!d.noble_position()
 
 
Non-Mil and Non-Noble
 
!d.noble_position() && d.squad_id() < 0
 
 
Not Missing Limbs
 
!d.has_health_issue(31,0) && !d.has_health_issue(31,1)
 
 
Missing Limbs
 
d.has_health_issue(31,0) || d.has_health_issue(31,1)
 
 
</nowiki>
 
</nowiki>
 
}}
 
}}
  
=== Thistleknot's Filter Pack ===
+
== Mass Nickname Assignment for Sub-set Identification ==
I pretty much use the 1st three every migrant wave.
 
I use an optimization plan to single out militia dwarfs (ranged and melee) to weaving (weapon, melee) and alchemy (archers, i.e. crossbowdwarfs).
 
  
Then I run the second script to see who rates high for noble roles, and pick them
+
=== Workshop Profiles ===
 +
By mass assigning nicknames inside Dwarf Therapist to "mark" dwarves, they can be easily found in workshop profiles (if using Masterwork Mod, DFHack is included, Alt Shift N sorts alphabetically).
  
Then I run the 3rd to apply a labor optimization plan.
+
This is useful for workshops in various mods that train skills that you wish were limited to certain dwarves, such as dwarves who have a skill that is to be trained. (ex... train your axedwarf for your militia dwarves (these would be the dwarves that would be tagged with the nickname), via the warfare library)
  
{{gamedata
+
=== Using Labors to Mark dwarf's for Custom Professions/Super Labors, or for Militia purposes ===
| title = Thistleknot's Filter Pack
+
In this video (http://www.youtube.com/watch?v=gNVci8h1MkY), I actually do this method to assign my militia, but it could be extended for "super labors" as well.
|
 
<nowiki>
 
1. Not Injured/Missing Limb && Not Cursed (Used to find military candidates)
 
  
d.current_job_id()!=52
+
What I do is assign a custom role to something I wish to assign that Dwarf Therapist doesn't currently support (such as assign militia dwarves via the labor optimizer). So I use an optimization plan to assign a specific role (such as melee dwarves) to a meaningless labor, then when the labors are assigned. I hand assign them inside the Therapist tool to the melee role.
//not missing limbs
 
(
 
(
 
!d.has_health_issue(31,0) &&
 
!d.has_health_issue(31,1))
 
//OR
 
||
 
!d.has_health_issue(31,-1)
 
)
 
)
 
&&
 
d.curse_name() == ""
 
  
2. Non military && Not Injured && Not Cursed (Used to find noble candidates)
+
One could use the same method to assign a dwarf to a custom profession that covers multiple labors (i.e. super labor concept).
  
d.squad_id() < 0
+
It goes without saying that one should unassign the meaningless labor.
&&
 
d.current_job_id()!=52
 
&&
 
d.curse_name() == ""
 
  
3. Non Military, Non Noble, Not Injured && Not Cursed (Used to apply optimization plan to workers, I always enable hauling on them as well)
+
== Ratio's & hauling labors can be used to create throughput "levers" to target jobs ==
  
!d.noble_position()
+
=== Hauling ===
&&
 
d.squad_id()<0
 
&&
 
d.current_job_id()!=52
 
&&
 
d.curse_name()==""
 
  
Military
+
A player can use hauling as a suppressor on dwarf's productivity.
  
d.squad_id() >= 0
+
Generally, assigning hauling tasks to dwarf's who have a lower # of jobs assigned to them than the other dwarf's:
  
Noble & Non_military
+
  Achieves the effect of suppressing low % scores to hauling tasks.
  
d.noble_position()
+
=== # of Job's Per Dwarf ===
&&
 
d.squad_id()<0
 
  
</nowiki>
+
A player can adjust this value before the optimization plan is ran.  Need more jobs accomplished overall.  Lowering the # when the fortress gets larger allows a player to allow his dwarf's to focus on higher skilled tasks.
}}
 
  
== Grid Views ==
+
=== # of Jobs per Dwarf===
 +
In Dwarf Therapist, when editing an optimization plan, you can set the # of jobs each dwarf can have up to.
  
=== Masterwork Dwarf Therapist ===
+
=== % Jobs to Assign===
Highly customized version of Dwarf Therapist for use with Masterwork dwarf fortressIt uses the same binary build as Splinterminds, just uses a new .dtg (default grid view) as well as a .ini file that covers name changes for Masterwork.
+
When editing an optimization plan, the % of total jobs is the target # that is setThis % is based on Dwarves Selected * Jobs per Dwarf, then there is an ~ number representing the results of our rounded ratio:job #'s.
  
http://www.bay12forums.com/smf/index.php?topic=132010.0
+
=== Theory of Constraints===
 +
The concept of lever's is borrowed from business concepts that try to maximize factory output. They understand that throughput of the factory is affected by variables that you can control, things like hours worked, overtime, etc.
  
{{DTAddon
+
In our case we can
| image          = [[Image:Masterwork Dwarf Therapist|256px|link=File:http://i.imgur.com/UnBzV1D.png|click for full view]]
 
}}
 
  
=== ResMar's Advanced Labor View ===
+
1: Unassign hauling.
  
{{DTAddon
+
1.a: Threshold to start assigning hauling (editable inside the optimization plan)
| image          = [[Image:ResMar Advanced Labor View.png|256px|link=File:ResMar_Advanced_Labor_View_full.png|click for full view]]
 
| type            =  Grid View
 
| download link  = [http://dffd.wimbli.com/file.php?id=7880 DFFD File]
 
| author          = [[User:Resident Mario]]
 
| current version = 1.0
 
| comments        = Last Updated Aug 05, 2013
 
This is a heavily modified version of the "Labors NO SPACERS" view that comes packaged with the program. Useless or never-turned-off labors removed, and columns organized for better readability.}}
 
  
== Tutorials/Documentation ==
+
2: Assign more labors for a specific labor by increasing it's ratio.
  
=== ResMar's Dwarf Therapist User Guide ===
+
3: Create more workshops that accept said job.
  
{{DTAddon
+
4: Adjust the # of jobs per dwarf.
| image          = [[Image:ResMar_DT_guide.png|256px|link=http://dffd.wimbli.com/file.php?id=7889]]
 
| type            =  Documentation
 
| download link  = [http://dffd.wimbli.com/file.php?id=7889 DFFD File]
 
| author          = [[User:Resident Mario]]
 
| current version = 20.4
 
| comments        = Last Updated Nov 02, 2013
 
This is an exceptionally crafted Dwarf Therapist User Guide. On the cover is a picture of a dwarf in virtual leather.
 
  
All of the features available in Dwarf Therapist are covered in the guide, which is a hefty 49 pages worth of (I hope) well-illustrated content crafted in LaTeX.
+
5: Adjust the % total jobs to assign.  
  
Whether you a new player who wants to learn how to use Dwarf Therapist, or an experienced one who's never explored any of the power features the utility has to offer, this guide will teach you what's what in an intuitive and non-painful manner.
+
Varying these values can result in higher throughput for a specific job when compared to other jobs.
}}
 

Latest revision as of 17:44, 26 July 2021

Recent versions of Dwarf Therapist include a very large set of customizable tools for managing your dwarves, namely custom roles, custom professions, custom grid views, filter scripts, and optimization plans, which greatly enhance the user's ability to manage their fort in a well-optimized, pain-free manner. This page serves as a repository for packaged exports of custom definitions for these tools, created by other players and made available for other users here. This page is only meant to serve Splinterz's current fork of Dwarf Therapist; earlier versions of the utility did not yet implement many of the features described here. If you need help understanding what's documented on this page, or would like to learn how to write Dwarf Therapist customizations yourself, refer to the Dwarf Therapist User Guide. All exports should be hosted at the Dwarf Fortress File Depot.

You are encouraged to standardize the upload format to "Dwarf Therapist Export---<Package Name>".

Packages[edit]

Export packages are ZIP or other archive files containing a set of differing customizations all meant for a single purpose.

Military Starter Kit[edit]

{{{image}}}
Download: DFFD File # 9232
Type: Packaged Export
Author: ResMar
Current Version: {{{current version}}}
Installation: {{{installation}}}
This ZIP file contains the customizations created over the course of the "Putting it all Together" section of the Dwarf Therapist User Guide: a set of tools that makes military drafting into a much easier and more elegant process.


Custom Professions[edit]

Chesh05's Professions[edit]

{{{image}}}
Download: Chesh05 Custom Professions
Type: Custom Profession
Author: Chesh05
Current Version: {{{current version}}}
Installation: {{{installation}}}
Last Updated Nov 11, 2014

A collection of basic custom professions

Grid Views[edit]

Grid views are the main list view in Dwarf Fortress they are accessible via the tabs at the top of the list view (Labors, Military, Social, etc.).

Compact Labors View[edit]

{{{image}}}
Download: DFFD File # 9233
Type: Grid View
Author: ResMar
Current Version: {{{current version}}}
Installation: {{{installation}}}
An even smaller version of the default Labor view which merges all of the hauling sublabors into one "Hauling" column. This view is recommended for 21-inch screens, as it allows you to use the labor view with left or right-mounted docks without resorting to a horizontal scrollbar.


Masterwork Dwarf Therapist[edit]

Highly customized version of Dwarf Therapist for use with Masterwork dwarf fortress. It uses the same binary build as Splinterminds, just uses a new .dtg (default grid view) as well as a .ini file that covers name changes for Masterwork. http://www.bay12forums.com/smf/index.php?topic=132010.0

Filter Scripts[edit]

Filter scripts are simple commands that determine what dwarves to show in the main DT window. For example, a "military only" filter script would hide all the non-military dwarves. It is like a "search" for your dwarves.

Pending Changes[edit]

Displays only those dwarves with pending changes.

Ramblurr's Filter Pack[edit]

A small collection of filter scripts useful when using the labor optimizer.

Tofof's Unhandicapped Filter[edit]

Excludes dwarves based on blindness and usability (not just absence) of limbs.

To do the inverse and show only handicapped dwarves, remove the first and last lines: "!(" and ")".

Thistleknot's Filter Pack[edit]

I pretty much use the 1st three every migrant wave. I use an optimization plan to single out militia dwarves (ranged and melee) to weaving (weapon, melee) and alchemy (archers, i.e. crossbowdwarves).

Then I run the second script to see who rates high for noble roles, and pick them

Then I run the 3rd to apply a labor optimization plan.


ResMar's "Working Class Dwarves" / Military Recruitment Availability Filter[edit]

This is the large filter from the Dwarf Therapist User Guide by ResMar. It is explained in Chapter IV's "Writing Complex Scripts" section.

Here is an explanation of the characteristics it selects for:

This filter is designed to show dwarves that are available for full-time assignment to useful tasks, such as military recruitment. These so-called "working class dwarves" will meet the following requirements:

  1. They have all hauling labors enabled. This is one of the most apparent indicators of a “working class” dwarf, but it’s nowhere near exclusive.
  2. They don’t have a nickname. Assuming you follow the advice given in “Assigning Nicknames”, nicked dwarves have already been dedicated to something.
  3. They have the masonry and/or stone detailing labors enabled, but are never above “adequate” skill in the former (since actually building stone blocks is assigned to dedicated masons), and never above “competent“ in the latter (I consider “skilled” the breaking point for when an engraver is actually worth his salt, and should be taken out of the working-class pool).
  4. They are not enlisted in the military (at least, not permanently). At least in my fortress, once a crossbowdwarf, always a crossbowdwarf slash hunter.
  5. They don't have certain “key” labors that are handled by dedicated dwarves enabled (mining, carpentry, woodcutting, stonecrafting, cooking, brewing, any of the metalsmithing tasks, either of the jewelry tasks, and clothesmaking). The precise composition of this list may vary somewhat for you, but most players learn to dedicate certain tasks to certain dwarves to maximize results very quickly.
  6. If they are skilled in certain useless or niche tasks (animal caretaking, small animal dissection, fish dissection, bee keeping, wax working, soap making) they have those tasks enabled. No one creates extra work for themselves by actually turning these off, at least not until you want this dwarf doing something for you.

Custom Roles[edit]

Thistleknot's Melee and Ranged Roles[edit]

{{{image}}}
Download: DFFD File
Type: Custom Roles
Author: Thistleknot
Current Version: 1.0
Installation: {{{installation}}}
Last Updated Apr 29, 2013

These are the Melee and Ranged Roles seen in Thistleknot's Efficiently Assign Militia/Labors tutorial video, at least I think they are. I typed them in manually from what was visible on screen.


Optimization Plans[edit]

Slyrdvs's Optimization Plan[edit]

{{{image}}}
Download: Google Drive
Type: Optimization Plan
Author: /u//slyrdvs
Current Version: 1.0
Installation: {{{installation}}}
Last Updated Apr 29, 2013

From a reddit thread. Emphasizes trapping and hunting, which may not be to everyone's playstyle.

The author noted: When starting with the optimization plan on a new embark, set max jobs to 10. The dwarves will usually have enough skills in certain areas to get 1-2 of each of the jobs that they should be good/great at. As you get more dwarves in the fort you will if you see fit need to lower the max jobs to 7, then 5 and then fiddle with the percent total jobs to keep the workers and haulers how you would like.

I tend to use 5-10 max jobs, and a hauler percent that is less than the max jobs. You only want to have dwarves who don't have many important jobs running around hauling. I suggest fiddling with your percent jobs and hauler percent until you find something that you enjoy for your forts.


Note from SlyrDVS in a pm: I still have to sit down and plan the jobs out again, reoptimize for a new version. As for why I have so many trappers/hunters, they are the firstline defense, they can then later become the army. :P

Thistleknot's Optimization Plan[edit]

Using AutoLabor to manage hauling jobs alongside Labor Optimizer[edit]

Since I prefer Dwarf Therapist's %'s on calculating my roles to labor mappings via the Labor Optimizer, I found the dynamic ability that autolabor has missing. So to alleviate this. I still do my own labor optimizations every few migrant waves; however, I get the advantage of autolabor's hauling behaviour (I believe it doesn't enable hauling on dwarves that have a labor enabled for queued job).

Run this inside a DFHack console.

Note: To avoid manually running each line in the console, save this to a text file in your DF folder (e.g. "dtautolabor.txt") and run "script (filename)" in DFHack.

Mass Nickname Assignment for Sub-set Identification[edit]

Workshop Profiles[edit]

By mass assigning nicknames inside Dwarf Therapist to "mark" dwarves, they can be easily found in workshop profiles (if using Masterwork Mod, DFHack is included, Alt Shift N sorts alphabetically).

This is useful for workshops in various mods that train skills that you wish were limited to certain dwarves, such as dwarves who have a skill that is to be trained. (ex... train your axedwarf for your militia dwarves (these would be the dwarves that would be tagged with the nickname), via the warfare library)

Using Labors to Mark dwarf's for Custom Professions/Super Labors, or for Militia purposes[edit]

In this video (http://www.youtube.com/watch?v=gNVci8h1MkY), I actually do this method to assign my militia, but it could be extended for "super labors" as well.

What I do is assign a custom role to something I wish to assign that Dwarf Therapist doesn't currently support (such as assign militia dwarves via the labor optimizer). So I use an optimization plan to assign a specific role (such as melee dwarves) to a meaningless labor, then when the labors are assigned. I hand assign them inside the Therapist tool to the melee role.

One could use the same method to assign a dwarf to a custom profession that covers multiple labors (i.e. super labor concept).

It goes without saying that one should unassign the meaningless labor.

Ratio's & hauling labors can be used to create throughput "levers" to target jobs[edit]

Hauling[edit]

A player can use hauling as a suppressor on dwarf's productivity.

Generally, assigning hauling tasks to dwarf's who have a lower # of jobs assigned to them than the other dwarf's:

 Achieves the effect of suppressing low % scores to hauling tasks.

# of Job's Per Dwarf[edit]

A player can adjust this value before the optimization plan is ran. Need more jobs accomplished overall. Lowering the # when the fortress gets larger allows a player to allow his dwarf's to focus on higher skilled tasks.

# of Jobs per Dwarf[edit]

In Dwarf Therapist, when editing an optimization plan, you can set the # of jobs each dwarf can have up to.

% Jobs to Assign[edit]

When editing an optimization plan, the % of total jobs is the target # that is set. This % is based on Dwarves Selected * Jobs per Dwarf, then there is an ~ number representing the results of our rounded ratio:job #'s.

Theory of Constraints[edit]

The concept of lever's is borrowed from business concepts that try to maximize factory output. They understand that throughput of the factory is affected by variables that you can control, things like hours worked, overtime, etc.

In our case we can

1: Unassign hauling.

1.a: Threshold to start assigning hauling (editable inside the optimization plan)

2: Assign more labors for a specific labor by increasing it's ratio.

3: Create more workshops that accept said job.

4: Adjust the # of jobs per dwarf.

5: Adjust the % total jobs to assign.

Varying these values can result in higher throughput for a specific job when compared to other jobs.