|  |  |  | @ -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<df::interface_key> *input)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         if (in_material_choice_stage()) | 
		
	
	
		
			
				
					|  |  |  | 
 |