summaryrefslogtreecommitdiff
path: root/plugins/autolabor.cpp
diff options
context:
space:
mode:
authorRossM2012-04-02 23:40:56 -0700
committerRossM2012-04-02 23:40:56 -0700
commit288acf4b79660686a9ec871e12f6f85a9841a3be (patch)
treefb05ff4ff1ca82161d779e6148da6a9a27bb4127 /plugins/autolabor.cpp
parent3bd499ff93b87bd74b1ec0f5cb351dc1bddafa73 (diff)
downloaddfhack-288acf4b79660686a9ec871e12f6f85a9841a3be.tar.gz
dfhack-288acf4b79660686a9ec871e12f6f85a9841a3be.tar.bz2
dfhack-288acf4b79660686a9ec871e12f6f85a9841a3be.tar.xz
Tweak autolabor.
Diffstat (limited to 'plugins/autolabor.cpp')
-rw-r--r--plugins/autolabor.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/plugins/autolabor.cpp b/plugins/autolabor.cpp
index 57c035b3..97719f8e 100644
--- a/plugins/autolabor.cpp
+++ b/plugins/autolabor.cpp
@@ -846,7 +846,11 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out )
if (df::enums::unit_labor::FISH == labor && !has_fishery)
min_dwarfs = max_dwarfs = 0;
- for (int i = 0; i < candidates.size() && labor_infos[labor].active_dwarfs < max_dwarfs; i++)
+ bool want_idle_dwarf = true;
+ if (state_count[IDLE] < 2)
+ want_idle_dwarf = false;
+
+ for (int i = 0; i < candidates.size() && labor_infos[labor].active_dwarfs < max_dwarfs && (labor_infos[labor].active_dwarfs < min_dwarfs || want_idle_dwarf); i++)
{
int dwarf = candidates[i];
@@ -874,8 +878,8 @@ DFhackCExport command_result plugin_onupdate ( color_ostream &out )
if (dwarf_info[dwarf].state == IDLE || dwarf_info[dwarf].state == BUSY)
labor_infos[labor].active_dwarfs++;
- if (labor_infos[labor].active_dwarfs >= min_dwarfs && (dwarf_info[dwarf].state == IDLE || state_count[IDLE] < 2))
- break;
+ if (labor_infos[labor].active_dwarfs >= min_dwarfs && dwarf_info[dwarf].state == IDLE)
+ want_idle_dwarf = false;
}
}