summaryrefslogtreecommitdiff
path: root/plugins/workflow.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-01-27 21:17:50 +0400
committerAlexander Gavrilov2012-01-27 21:17:50 +0400
commitef256e145310195076ef599ba31165a2f01522c1 (patch)
tree88a80ca3b13f32ea86f0b73d8933298df7f0420f /plugins/workflow.cpp
parent1d7ed144427a01844abc465ea9b4bdfcd273af73 (diff)
downloaddfhack-ef256e145310195076ef599ba31165a2f01522c1.tar.gz
dfhack-ef256e145310195076ef599ba31165a2f01522c1.tar.bz2
dfhack-ef256e145310195076ef599ba31165a2f01522c1.tar.xz
Detect incomplete thread and cloth items in workflow.
Diffstat (limited to 'plugins/workflow.cpp')
-rw-r--r--plugins/workflow.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/plugins/workflow.cpp b/plugins/workflow.cpp
index 5a2073f1..dffce5a4 100644
--- a/plugins/workflow.cpp
+++ b/plugins/workflow.cpp
@@ -1086,9 +1086,25 @@ static void map_job_items(Core *c)
int16_t imattype = item->getActualMaterial();
int32_t imatindex = item->getActualMaterialIndex();
+ bool is_invalid = false;
+
// Special handling
- if (dry_buckets && itype == item_type::BUCKET && !item->flags.bits.in_job)
- dryBucket(item);
+ switch (itype) {
+ case item_type::BUCKET:
+ if (dry_buckets && !item->flags.bits.in_job)
+ dryBucket(item);
+ break;
+
+ case item_type::THREAD:
+ if (item->getTotalDimension() < 15000)
+ is_invalid = true;
+ break;
+
+ case item_type::CLOTH:
+ if (item->getTotalDimension() < 10000)
+ is_invalid = true;
+ break;
+ }
if (item->flags.bits.melt && !item->flags.bits.owned && !itemBusy(item))
meltable_count++;
@@ -1119,7 +1135,8 @@ static void map_job_items(Core *c)
if (!ok)
continue;
- if (item->flags.bits.owned ||
+ if (is_invalid ||
+ item->flags.bits.owned ||
item->flags.bits.in_chest ||
item->isAssignedToStockpile() ||
itemInRealJob(item) ||