|  | @@ -926,13 +926,17 @@ TSubgoal GatherTroops::whatToDoToAchieve()
 | 
	
		
			
				|  |  |  		{
 | 
	
		
			
				|  |  |  			nearestDwellings[hero] = *boost::range::min_element(dwellings, CDistanceSorter(hero));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		if (nearestDwellings.size())
 | 
	
		
			
				|  |  | +		{
 | 
	
		
			
				|  |  | +			// find hero who is nearest to a dwelling
 | 
	
		
			
				|  |  | +			const CGDwelling * nearest = boost::range::min_element(nearestDwellings, comparator)->second;
 | 
	
		
			
				|  |  | +			if (!nearest)
 | 
	
		
			
				|  |  | +				throw cannotFulfillGoalException("Cannot find nearest dwelling!");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		// find hero who is nearest to a dwelling
 | 
	
		
			
				|  |  | -		const CGDwelling * nearest = boost::range::min_element(nearestDwellings, comparator)->second;
 | 
	
		
			
				|  |  | -		if(nearest) // FIXME: Find out what regression / bug cause this. Issue 2624
 | 
	
		
			
				|  |  | -			throw cannotFulfillGoalException("Cannot find nearest dwelling!");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		return sptr (Goals::GetObj(nearest->id.getNum()));
 | 
	
		
			
				|  |  | +			return sptr(Goals::GetObj(nearest->id.getNum()));
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		else
 | 
	
		
			
				|  |  | +			return sptr(Goals::Explore());
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	else
 | 
	
		
			
				|  |  |  		return sptr (Goals::Explore());
 |