|  |  | @ -280,33 +280,53 @@ static command_result embark_prospector(DFHack::Core *c, df::viewscreen_choose_s | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             auto layer = geo_biome->layers[i]; |  |  |  |             auto layer = geo_biome->layers[i]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             for (int z = layer->bottom_height; z <= layer->top_height; z++) |  |  |  |             layerMats[layer->mat_index].add(layer->bottom_height, 0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             { |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 layerMats[layer->mat_index].add(z, 48*48*cnt); |  |  |  |             int level_cnt = layer->top_height - layer->bottom_height + 1; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             int layer_size = 48*48*cnt*level_cnt; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             int sums[ENUM_LAST_ITEM(inclusion_type)+1] = { 0 }; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for (unsigned j = 0; j < layer->vein_mat.size(); j++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (inclusion_type::is_valid(layer->vein_type[j])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     sums[layer->vein_type[j]] += layer->vein_unk_38[j]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             for (unsigned j = 0; j < layer->vein_mat.size(); j++) |  |  |  |             for (unsigned j = 0; j < layer->vein_mat.size(); j++) | 
			
		
	
		
		
			
				
					
					|  |  |  |             { |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 // TODO: find out how to estimate the real density
 |  |  |  |                 // TODO: find out how to estimate the real density
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     int bias = 100; |  |  |  |                 // this code assumes that vein_unk_38 is the weight
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     switch (layer->vein_type[j]) |  |  |  |                 // used when choosing the vein material
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 int size = layer->vein_unk_38[j]*cnt*level_cnt; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 df::inclusion_type type = layer->vein_type[j]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 switch (type) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 { |  |  |  |                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case inclusion_type::VEIN: |  |  |  |                 case inclusion_type::VEIN: | 
			
		
	
		
		
			
				
					
					|  |  |  |                         bias = 360; |  |  |  |                     // 3 veins of 80 tiles avg
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     size = size * 80 * 3 / sums[type]; | 
			
		
	
		
		
			
				
					
					|  |  |  |                     break; |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case inclusion_type::CLUSTER: |  |  |  |                 case inclusion_type::CLUSTER: | 
			
		
	
		
		
			
				
					
					|  |  |  |                         bias = 1800; |  |  |  |                     // 1 cluster of 700 tiles avg
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     size = size * 700 * 1 / sums[type]; | 
			
		
	
		
		
			
				
					
					|  |  |  |                     break; |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case inclusion_type::CLUSTER_SMALL: |  |  |  |                 case inclusion_type::CLUSTER_SMALL: | 
			
		
	
		
		
			
				
					
					|  |  |  |                         bias = 18; |  |  |  |                     size = size * 6 * 7 / sums[type]; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     break; |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 case inclusion_type::CLUSTER_ONE: |  |  |  |                 case inclusion_type::CLUSTER_ONE: | 
			
		
	
		
		
			
				
					
					|  |  |  |                         bias = 3; |  |  |  |                     size = size * 1 * 5 / sums[type]; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     break; |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 default: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     // shouldn't actually happen
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     size = cnt*level_cnt; | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     veinMats[layer->vein_mat[j]].add(z, layer->vein_unk_38[j]*bias*cnt/100); |  |  |  |                 veinMats[layer->vein_mat[j]].add(layer->bottom_height, 0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 veinMats[layer->vein_mat[j]].add(layer->top_height, size); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 layer_size -= size; | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             layerMats[layer->mat_index].add(layer->top_height, std::max(0,layer_size)); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |