diff --git a/plugins/automaterial.cpp b/plugins/automaterial.cpp index 186815d36..dc86e9c3a 100644 --- a/plugins/automaterial.cpp +++ b/plugins/automaterial.cpp @@ -39,13 +39,19 @@ DFHACK_PLUGIN("automaterial"); struct MaterialDescriptor { + df::item_type item_type; + int16_t item_subtype; int16_t type; int32_t index; bool valid; bool matches(const MaterialDescriptor &a) const { - return a.valid && valid && a.type == type && a.index == index; + return a.valid && valid && + a.type == type && + a.index == index && + a.item_type == item_type && + a.item_subtype == item_subtype; } }; @@ -150,12 +156,16 @@ static MaterialDescriptor get_material_in_list(size_t i) if (VIRTUAL_CAST_VAR(gen, df::build_req_choice_genst, ui_build_selector->choices[i])) { + result.item_type = gen->item_type; + result.item_subtype = gen->item_subtype; result.type = gen->mat_type; result.index = gen->mat_index; result.valid = true; } else if (VIRTUAL_CAST_VAR(spec, df::build_req_choice_specst, ui_build_selector->choices[i])) { + result.item_type = gen->item_type; + result.item_subtype = gen->item_subtype; result.type = spec->candidate->getActualMaterial(); result.index = spec->candidate->getActualMaterialIndex(); result.valid = true; @@ -250,8 +260,6 @@ struct jobutils_hook : public df::viewscreen_dwarfmodest { typedef df::viewscreen_dwarfmodest interpose_base; - static color_ostream_proxy console_out; - DEFINE_VMETHOD_INTERPOSE(void, feed, (set *input)) { if (in_material_choice_stage())