|  | @@ -607,10 +607,11 @@ TDmgRange BattleInfo::calculateDmgRange( const CStack* attacker, const CStack* d
 | 
	
		
			
				|  |  |  	};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	//wall / distance penalty + advanced air shield
 | 
	
		
			
				|  |  | -	if (shooting && !NBonus::hasOfType(attackerHero, Bonus::NO_DISTANCE_PENALTY) && (
 | 
	
		
			
				|  |  | -		hasDistancePenalty(attacker, defender->position) || hasWallPenalty(attacker, defender->position) ||
 | 
	
		
			
				|  |  | -		HLP::hasAdvancedAirShield(defender) )
 | 
	
		
			
				|  |  | -		)
 | 
	
		
			
				|  |  | +	bool distPenalty = !NBonus::hasOfType(attackerHero, Bonus::NO_DISTANCE_PENALTY) &&
 | 
	
		
			
				|  |  | +		hasDistancePenalty(attacker, defender->position);
 | 
	
		
			
				|  |  | +	bool obstaclePenalty = !NBonus::hasOfType(attackerHero, Bonus::NO_OBSTACLES_PENALTY) &&
 | 
	
		
			
				|  |  | +		hasWallPenalty(attacker, defender->position);
 | 
	
		
			
				|  |  | +	if (shooting && (distPenalty || obstaclePenalty || HLP::hasAdvancedAirShield(defender) ))
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  		multBonus *= 0.5;
 | 
	
		
			
				|  |  |  	}
 |