From 288acf4b79660686a9ec871e12f6f85a9841a3be Mon Sep 17 00:00:00 2001 From: RossM Date: Mon, 2 Apr 2012 23:40:56 -0700 Subject: [PATCH] Tweak autolabor. --- plugins/autolabor.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/autolabor.cpp b/plugins/autolabor.cpp index 57c035b31..97719f8ef 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; } }