|  |  | @ -1197,7 +1197,7 @@ void embark_assist::survey::survey_embark(embark_assist::defs::mid_level_tiles * | 
			
		
	
		
		
			
				
					
					|  |  |  |     embark_assist::defs::site_infos *site_info, |  |  |  |     embark_assist::defs::site_infos *site_info, | 
			
		
	
		
		
			
				
					
					|  |  |  |     bool use_cache) { |  |  |  |     bool use_cache) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     //            color_ostream_proxy out(Core::getInstance().getConsole());
 |  |  |  |     //color_ostream_proxy out(Core::getInstance().getConsole());
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     auto screen = Gui::getViewscreenByType<df::viewscreen_choose_start_sitest>(0); |  |  |  |     auto screen = Gui::getViewscreenByType<df::viewscreen_choose_start_sitest>(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |     int16_t elevation = 0; |  |  |  |     int16_t elevation = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint16_t x = screen->location.region_pos.x; |  |  |  |     uint16_t x = screen->location.region_pos.x; | 
			
		
	
	
		
		
			
				
					|  |  | @ -1207,6 +1207,7 @@ void embark_assist::survey::survey_embark(embark_assist::defs::mid_level_tiles * | 
			
		
	
		
		
			
				
					
					|  |  |  |     std::vector<bool> metals(state->max_inorganic); |  |  |  |     std::vector<bool> metals(state->max_inorganic); | 
			
		
	
		
		
			
				
					
					|  |  |  |     std::vector<bool> economics(state->max_inorganic); |  |  |  |     std::vector<bool> economics(state->max_inorganic); | 
			
		
	
		
		
			
				
					
					|  |  |  |     std::vector<bool> minerals(state->max_inorganic); |  |  |  |     std::vector<bool> minerals(state->max_inorganic); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     bool flatness_verification_failed; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (!use_cache) {  //  For some reason DF scrambles these values on world tile movements (at least in Lua...).
 |  |  |  |     if (!use_cache) {  //  For some reason DF scrambles these values on world tile movements (at least in Lua...).
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         state->local_min_x = screen->location.embark_pos_min.x; |  |  |  |         state->local_min_x = screen->location.embark_pos_min.x; | 
			
		
	
	
		
		
			
				
					|  |  | @ -1222,7 +1223,7 @@ void embark_assist::survey::survey_embark(embark_assist::defs::mid_level_tiles * | 
			
		
	
		
		
			
				
					
					|  |  |  |     site_info->aquifer_full = true; |  |  |  |     site_info->aquifer_full = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |     site_info->min_soil = 10; |  |  |  |     site_info->min_soil = 10; | 
			
		
	
		
		
			
				
					
					|  |  |  |     site_info->max_soil = 0; |  |  |  |     site_info->max_soil = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     site_info->flat = true; |  |  |  |     site_info->flatness = embark_assist::defs::flatnesses::Mostly_Flat; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     site_info->waterfall = false; |  |  |  |     site_info->waterfall = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |     site_info->clay = false; |  |  |  |     site_info->clay = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |     site_info->sand = false; |  |  |  |     site_info->sand = false; | 
			
		
	
	
		
		
			
				
					|  |  | @ -1253,7 +1254,7 @@ void embark_assist::survey::survey_embark(embark_assist::defs::mid_level_tiles * | 
			
		
	
		
		
			
				
					
					|  |  |  |                 elevation = mlt->at(i).at(k).elevation; |  |  |  |                 elevation = mlt->at(i).at(k).elevation; | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |             else if (elevation != mlt->at(i).at(k).elevation) { |  |  |  |             else if (elevation != mlt->at(i).at(k).elevation) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 site_info->flat = false; |  |  |  |                 site_info->flatness = embark_assist::defs::flatnesses::Uneven; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (mlt->at(i).at(k).river_present) { |  |  |  |             if (mlt->at(i).at(k).river_present) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -1291,6 +1292,38 @@ void embark_assist::survey::survey_embark(embark_assist::defs::mid_level_tiles * | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if (site_info->flatness == embark_assist::defs::flatnesses::Mostly_Flat && | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         state->local_min_x > 0 && | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         state->local_max_x < 15 && | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         state->local_min_y > 0 && | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         state->local_max_y < 15) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         flatness_verification_failed = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for (uint8_t i = state->local_min_x - 1; i <= state->local_max_x + 1; i++) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (mlt->at(i).at(state->local_min_y - 1).elevation != elevation || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 mlt->at(i).at(state->local_max_y + 1).elevation != elevation) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 flatness_verification_failed = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (!flatness_verification_failed) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for (uint8_t k = state->local_min_y; k <= state->local_max_y; k++) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (mlt->at(state->local_min_x - 1).at(k).elevation != elevation || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     mlt->at(state->local_max_x + 1).at(k).elevation != elevation) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     flatness_verification_failed = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (!flatness_verification_failed) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             site_info->flatness = embark_assist::defs::flatnesses::Flat_Verified; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     for (uint16_t l = 0; l < state->max_inorganic; l++) { |  |  |  |     for (uint16_t l = 0; l < state->max_inorganic; l++) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (metals[l]) { |  |  |  |         if (metals[l]) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             site_info->metals.push_back(l); |  |  |  |             site_info->metals.push_back(l); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |