|  |  |  | @ -100,7 +100,7 @@ DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <Plug | 
		
	
		
			
				|  |  |  |  |         ); | 
		
	
		
			
				|  |  |  |  |         commands.push_back ( | 
		
	
		
			
				|  |  |  |  |             PluginCommand ( | 
		
	
		
			
				|  |  |  |  |                 "loadstock", "Import stockpile settings and aplply them to the stockpile under cursor.", | 
		
	
		
			
				|  |  |  |  |                 "loadstock", "Import stockpile settings and apply them to the stockpile under cursor.", | 
		
	
		
			
				|  |  |  |  |                 loadstock, loadstock_guard, | 
		
	
		
			
				|  |  |  |  |                 " -d, --debug: enable debug output\n" | 
		
	
		
			
				|  |  |  |  |                 " <name>     : filename to load stockpile settings from\n" | 
		
	
	
		
			
				
					|  |  |  | @ -771,7 +771,7 @@ private: | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 mi.decode ( 0, i ); | 
		
	
		
			
				|  |  |  |  |                 if ( !is_allowed ( mi ) ) continue; | 
		
	
		
			
				|  |  |  |  |                 debug() << "   material" << i << " is " << mi.getToken() << endl; | 
		
	
		
			
				|  |  |  |  |                 debug() << "   material " << i << " is " << mi.getToken() << endl; | 
		
	
		
			
				|  |  |  |  |                 add_value ( mi.getToken() ); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
	
		
			
				
					|  |  |  | @ -784,8 +784,17 @@ private: | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         if ( list_size > 0 ) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             //  we initialize all possible (allowed) values to 0,
 | 
		
	
		
			
				|  |  |  |  |             //  then all other not-allowed values to 1
 | 
		
	
		
			
				|  |  |  |  |             //  why? because that's how the memory is in DF before
 | 
		
	
		
			
				|  |  |  |  |             //  we muck with it.
 | 
		
	
		
			
				|  |  |  |  |             std::set<int32_t> idx_set; | 
		
	
		
			
				|  |  |  |  |             pile_list->resize ( world->raws.inorganics.size(),  '\0' ); | 
		
	
		
			
				|  |  |  |  |             pile_list->clear(); | 
		
	
		
			
				|  |  |  |  |             pile_list->resize ( world->raws.inorganics.size(),  0 ); | 
		
	
		
			
				|  |  |  |  |             for ( int i = 0; i < pile_list->size(); ++i ) { | 
		
	
		
			
				|  |  |  |  |                 MaterialInfo mi(0,  i); | 
		
	
		
			
				|  |  |  |  |                 pile_list->at(i) = is_allowed ( mi )  ? 0 : 1; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             for ( int i = 0; i < list_size; ++i ) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 const std::string token = read_value ( i ); | 
		
	
	
		
			
				
					|  |  |  | @ -1289,7 +1298,6 @@ private: | 
		
	
		
			
				|  |  |  |  |             if ( !p.valid ) continue; | 
		
	
		
			
				|  |  |  |  |             debug() <<  " food: " <<  traits.key_table[mat_category] <<  endl; | 
		
	
		
			
				|  |  |  |  |             serialize_list_organic_mat ( p.set_value, p.stockpile_values, ( organic_mat_category ) mat_category ); | 
		
	
		
			
				|  |  |  |  |             debug() <<  " finished food : " <<  traits.key_table[mat_category] <<  endl; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1390,13 +1398,11 @@ private: | 
		
	
		
			
				|  |  |  |  |         },  mPile->settings.furniture.quality_total ); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* skip gems and non hard things
 | 
		
	
		
			
				|  |  |  |  |     should be roughly (<range>:<step): 32-158:1,242-262:1,264-282:2,283-310:1 | 
		
	
		
			
				|  |  |  |  |     */ | 
		
	
		
			
				|  |  |  |  |     bool furniture_mat_is_allowed ( const MaterialInfo &mi ) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         if ( !mi.isValid() ) return false; | 
		
	
		
			
				|  |  |  |  |         return !mi.material->flags.is_set ( material_flags::IS_GEM ) &&  mi.material->flags.is_set ( material_flags::ITEMS_HARD ); | 
		
	
		
			
				|  |  |  |  |         return mi.isValid() && mi.material | 
		
	
		
			
				|  |  |  |  |                && ( mi.material->flags.is_set ( material_flags::IS_METAL) | 
		
	
		
			
				|  |  |  |  |                ||  mi.material->flags.is_set ( material_flags::IS_STONE )); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void read_furniture() | 
		
	
	
		
			
				
					|  |  |  | @ -1889,7 +1895,9 @@ private: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     bool blocks_mat_is_allowed ( const MaterialInfo &mi ) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return mi.isValid() && mi.material && !mi.material->flags.is_set ( material_flags::IS_GEM ) &&  mi.material->flags.is_set ( material_flags::ITEMS_HARD ); | 
		
	
		
			
				|  |  |  |  |         return mi.isValid() && mi.material | 
		
	
		
			
				|  |  |  |  |                && ( mi.material->flags.is_set ( material_flags::IS_METAL) | 
		
	
		
			
				|  |  |  |  |                ||  mi.material->flags.is_set ( material_flags::IS_STONE )); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -2808,6 +2816,7 @@ static command_result savestock ( color_ostream &out, vector <string> & paramete | 
		
	
		
			
				|  |  |  |  |             return CR_FAILURE; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     out <<  "save complete." <<  endl; | 
		
	
		
			
				|  |  |  |  |     return CR_OK; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -2855,8 +2864,11 @@ static command_result loadstock ( color_ostream &out, vector <string> & paramete | 
		
	
		
			
				|  |  |  |  |         out <<  "unserialize failed" << endl; | 
		
	
		
			
				|  |  |  |  |         return CR_FAILURE; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     out <<  "load complete." <<  endl; | 
		
	
		
			
				|  |  |  |  |     return CR_OK; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | 
 |