|
|
|
@ -59,11 +59,28 @@ static bool isAccessible(color_ostream& out, df::item* item) {
|
|
|
|
|
return is_walkable;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// as of v50, soap, coal, and ash are no longer valid building materials
|
|
|
|
|
static bool isUnusableBar(color_ostream& out, df::item* item) {
|
|
|
|
|
if (item->getType() != df::item_type::BAR)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
MaterialInfo minfo(item);
|
|
|
|
|
string token = minfo.getToken();
|
|
|
|
|
if (token.starts_with("COAL:") || token == "ASH")
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
df::job_item_flags2 ok;
|
|
|
|
|
df::job_item_flags2 mask;
|
|
|
|
|
minfo.getMatchBits(ok, mask);
|
|
|
|
|
return ok.bits.soap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool itemPassesScreen(color_ostream& out, df::item* item) {
|
|
|
|
|
static const BadFlags bad_flags;
|
|
|
|
|
return !(item->flags.whole & bad_flags.whole)
|
|
|
|
|
&& !item->isAssignedToStockpile()
|
|
|
|
|
&& isAccessible(out, item);
|
|
|
|
|
&& isAccessible(out, item)
|
|
|
|
|
&& !isUnusableBar(out, item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool matchesHeatSafety(int16_t mat_type, int32_t mat_index, HeatSafety heat) {
|
|
|
|
|