|  | @@ -376,11 +376,14 @@ MoveTarget BattleExchangeEvaluator::findMoveTowardsUnreachable(
 | 
	
		
			
				|  |  |  				logAi->trace("New high score");
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				for(BattleHex enemyHex : enemy->getAttackableHexes(activeStack))
 | 
	
		
			
				|  |  | +				for(const BattleHex & initialEnemyHex : enemy->getAttackableHexes(activeStack))
 | 
	
		
			
				|  |  |  				{
 | 
	
		
			
				|  |  | -					while(!flying && dists.distances[enemyHex] > speed)
 | 
	
		
			
				|  |  | +					BattleHex enemyHex = initialEnemyHex;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +					while(!flying && dists.distances[enemyHex] > speed && dists.predecessors.at(enemyHex).isValid())
 | 
	
		
			
				|  |  |  					{
 | 
	
		
			
				|  |  |  						enemyHex = dists.predecessors.at(enemyHex);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  						if(dists.accessibility[enemyHex] == EAccessibility::ALIVE_STACK)
 | 
	
		
			
				|  |  |  						{
 | 
	
		
			
				|  |  |  							auto defenderToBypass = hb->battleGetUnitByPos(enemyHex);
 |