Air combat: What does "evasion" and "interception" mean?

feldmarshall

Dictator
Joined
Jan 25, 2007
Messages
387
I notice interceptor units (like fighters and AA units) have "interception" stats, and bombers have "evasion" stats. I wonder what the mechanics are for those numbers. Are they chance in percentage? (e.g. does "evasion 100" means always it always evade interceptors). How about 100% evasion vs 100% interception, which one will happen?
 
I think 100% interception is impossible and 100% evasion is only applied to a Nuclear Missile making it impossible to stop when launched, while an Atomic Bomb can be intercepted theoretically. I think.
 
100 interception is very possible. AA guns, SAMs, fighters, jet fighters, and missile cruisers have 100 interception by default. 100 evasion is also possible, with the stealth bomber.

The numbers refer to chance of intercepting/evading, but I can only reflect on my observations when it comes to how they relate to each other. Stealth bombers have 100 evasion and I've never seen them get intercepted before, so it seems that evasion wins out over interception when it's the same number or higher. Meanwhile, all of the 100-interception units mentioned above have never failed to intercept anything that isn't a stealth bomber. I don't have much experience using triplanes or destroyers for interception, nor do I prioritize evasion promotions for normal bombers, so I'm not sure how non-100 stats operate.

I should also mention in response to stormtrooper412's post that none of this applies to the two nuclear weapons. It's impossible to intercept them, even the atomic bomb which only has an evasion of 50 and is clearly delivered by a bomber. I'm pretty sure it's a bug though considering they do in fact have evasion stats.
 
The mechanics of evasion vs. interception are as follows:
First, a random number is generated between 0 and 99 inclusive; if it is less than the evasion chance of the defender, the defender evades (so 100% evasion means you can never be intercepted). If the defender does not evade, a random number is generated between 0 and 99 inclusive; if it is less than the interception chance of the attacker, the attacker intercepts. If you are attacking a ground unit who would normally be able to intercept (eg. AA gun), that unit cannot intercept your attack (they instead go through air strike defense, which is a different calculation).
 
The mechanics of evasion vs. interception are as follows:
First, a random number is generated between 0 and 99 inclusive; if it is less than the evasion chance of the defender, the defender evades (so 100% evasion means you can never be intercepted). If the defender does not evade, a random number is generated between 0 and 99 inclusive; if it is less than the interception chance of the attacker, the attacker intercepts. If you are attacking a ground unit who would normally be able to intercept (eg. AA gun), that unit cannot intercept your attack (they instead go through air strike defense, which is a different calculation).

Special case: if a bomber attacks a city, it will never be intercepted by a fighter, no matter how many fighters are sitting in said city. Easy to reproduce, and clearly a bug that nobody ever tackled.
 
Special case: if a bomber attacks a city, it will never be intercepted by a fighter, no matter how many fighters are sitting in said city. Easy to reproduce, and clearly a bug that nobody ever tackled.

Are you sure? I looked through the code that fetches the best interceptor for an air attacker, and I don't see anything that would cause fighters in a city to not be able to intercept bomber attacks against the city. Have a look for yourself if you know C++, here are the relevant bits with a few extra // comments added in for clarification (the function is called within the bomber unit's object, so calls like isEnemy() are essentially thisBomber->isEnemy() calls):
Code:
// Loop through all players' Units (that we're at war with) to see if they can intercept
for(iI = 0; iI < MAX_PLAYERS; iI++)
{
	CvPlayerAI& kLoopPlayer = GET_PLAYER((PlayerTypes)iI);
	// Check if the looped player is alive
	if(kLoopPlayer.isAlive())
	{
		TeamTypes eLoopTeam = kLoopPlayer.getTeam();
		// Check if the looped player's team is at war with us and this unit is not invisible to the looped player's team
		if(isEnemy(eLoopTeam) && !isInvisible(eLoopTeam, false, false))
		{
			// Loop through all the looped player's units
			for(pLoopUnit = kLoopPlayer.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = kLoopPlayer.nextUnit(&iLoop))
			{
				// Must be able to intercept
				if(pLoopUnit != NULL && !pLoopUnit->isDelayedDeath() && pLoopUnit->canAirDefend() && !pLoopUnit->isInCombat())
				{
					// Must not have already intercepted this turn
					if(!pLoopUnit->isOutOfInterceptions())
					{
						// Must either be a non-air Unit, or an air Unit that hasn't moved this turn
						if((pLoopUnit->getDomainType() != DOMAIN_AIR) || !(pLoopUnit->hasMoved()))
						{
							// Must either be a non-air Unit or an air Unit on intercept
							if((pLoopUnit->getDomainType() != DOMAIN_AIR) || (pLoopUnit->GetActivityType() == ACTIVITY_INTERCEPT))
							{
								// Test range
								if(plotDistance(pLoopUnit->getX(), pLoopUnit->getY(), interceptPlot.getX(), interceptPlot.getY()) <= pLoopUnit->getUnitInfo().GetAirInterceptRange())
								{
									iValue = pLoopUnit->currInterceptionProbability();
									if(iValue > iBestValue)
									{
										iBestValue = iValue;
										pBestUnit = pLoopUnit;
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

This function gets called by the bomber before it makes an attack, and if pBestUnit is not null (ie. an interceptor was found), the interception rolls occur the way I described them.
 
Evasion helps prevent interception and interception helps intercepting other attacking air units. These air promotions do work if your air units are upgraded to modern air i.e fighter vs triplane = fighter wins.
 
Thanks for the code, you saved me the time to find it... will look into it, but the bug stands: try it yourself, use the editor and put as many fighters as you can in the city and let the bombers come... none of the fighters will intercept...

Unless it's an animation bug, which some have suggested before, but no one confirmed...

I have seen it many, many times... and it bugs me, literally.


Are you sure? I looked through the code that fetches the best interceptor for an air attacker, and I don't see anything that would cause fighters in a city to not be able to intercept bomber attacks against the city. Have a look for yourself if you know C++, here are the relevant bits with a few extra // comments added in for clarification (the function is called within the bomber unit's object, so calls like isEnemy() are essentially thisBomber->isEnemy() calls):
Code:
// Loop through all players' Units (that we're at war with) to see if they can intercept
for(iI = 0; iI < MAX_PLAYERS; iI++)
{
	CvPlayerAI& kLoopPlayer = GET_PLAYER((PlayerTypes)iI);
	// Check if the looped player is alive
	if(kLoopPlayer.isAlive())
	{
		TeamTypes eLoopTeam = kLoopPlayer.getTeam();
		// Check if the looped player's team is at war with us and this unit is not invisible to the looped player's team
		if(isEnemy(eLoopTeam) && !isInvisible(eLoopTeam, false, false))
		{
			// Loop through all the looped player's units
			for(pLoopUnit = kLoopPlayer.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = kLoopPlayer.nextUnit(&iLoop))
			{
				// Must be able to intercept
				if(pLoopUnit != NULL && !pLoopUnit->isDelayedDeath() && pLoopUnit->canAirDefend() && !pLoopUnit->isInCombat())
				{
					// Must not have already intercepted this turn
					if(!pLoopUnit->isOutOfInterceptions())
					{
						// Must either be a non-air Unit, or an air Unit that hasn't moved this turn
						if((pLoopUnit->getDomainType() != DOMAIN_AIR) || !(pLoopUnit->hasMoved()))
						{
							// Must either be a non-air Unit or an air Unit on intercept
							if((pLoopUnit->getDomainType() != DOMAIN_AIR) || (pLoopUnit->GetActivityType() == ACTIVITY_INTERCEPT))
							{
								// Test range
								if(plotDistance(pLoopUnit->getX(), pLoopUnit->getY(), interceptPlot.getX(), interceptPlot.getY()) <= pLoopUnit->getUnitInfo().GetAirInterceptRange())
								{
									iValue = pLoopUnit->currInterceptionProbability();
									if(iValue > iBestValue)
									{
										iBestValue = iValue;
										pBestUnit = pLoopUnit;
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

This function gets called by the bomber before it makes an attack, and if pBestUnit is not null (ie. an interceptor was found), the interception rolls occur the way I described them.
 
Question - does the range promotion extend the range that an aircraft can intercept?

If it does that would be pretty neat because if you don't have AA guns you really can't move far from your cities (outside of the normal 2 tile range from Fighters).
 
Question - does the range promotion extend the range that an aircraft can intercept?

Unfortunately, no. The range promotion only affects offensive strikes (possibly sweeps too, but I've never tested that).
 
Special case: if a bomber attacks a city, it will never be intercepted by a fighter, no matter how many fighters are sitting in said city. Easy to reproduce, and clearly a bug that nobody ever tackled.

I used to think that, but paying close attention lately I have absolutely seen fighters shoot down bombers hitting a city. Now said fighters where not in the city being bombed so the animation did trigger. I also am pretty sure I have seen a bomber get shot down apparently by the city, but actually by a fighter in the city. The animation never fires for that one, but you do see messages at the top of the screen indicating what killed or damaged the bomber.

Keep in mind that triplanes are rather unreliable at interception, but better than nothing.
 
I used to think that, but paying close attention lately I have absolutely seen fighters shoot down bombers hitting a city. Now said fighters where not in the city being bombed so the animation did trigger. I also am pretty sure I have seen a bomber get shot down apparently by the city, but actually by a fighter in the city. The animation never fires for that one, but you do see messages at the top of the screen indicating what killed or damaged the bomber.

Keep in mind that triplanes are rather unreliable at interception, but better than nothing.

I remember a few people claiming in fact that it was "just" an animation bug for that special case... but I could never confirm that either. Never seen any effect of a fighter group in the city that is being bombed. Are you sure?
 
I remember a few people claiming in fact that it was "just" an animation bug for that special case... but I could never confirm that either. Never seen any effect of a fighter group in the city that is being bombed. Are you sure?

Pretty sure I saw bombers blow up attacking a city I had interceptors in. I am fuzzy that I saw a text message confirming it. I will try and keep and eye out for it happening again.
 
Bombers dont get intercepted as often as great wars and stealths even less often.
 
The mechanics of evasion vs. interception are as follows:

Thanks for this!

First, a random number is generated between 0 and 99 inclusive; if it is less than the evasion chance of the defender, the defender evades (so 100% evasion means you can never be intercepted).

What is the default evasion chance of the various air units?

Is the evasion promotion then useless for stealth bombers? I would swear it helps their survivability -- at least when bombing cities!

On a related note, does the Dog Fight promotion do anything? Air sweeps are already 100% effective, and performing an air sweep does not put the fighter at risk, so I don't understand that promotion line would be needed.
 
I remember a few people claiming in fact that it was "just" an animation bug for that special case... but I could never confirm that either. Never seen any effect of a fighter group in the city that is being bombed. Are you sure?
Your post in this thread is literally the first time I ever read about the possibility of such a bug. Keep in mind that bombers are often used to attack cities where fighters are stationed, so you would that if such a bug existed, a lot more people would have caught on by now, especially the multiplayer community.
Combing through the code myself, I saw no bit of code that could cause a fighter to not be able to intercept on the tile where it is located.

What is the default evasion chance of the various air units?

Is the evasion promotion then useless for stealth bombers? I would swear it helps their survivability -- at least when bombing cities!

On a related note, does the Dog Fight promotion do anything? Air sweeps are already 100% effective, and performing an air sweep does not put the fighter at risk, so I don't understand that promotion line would be needed.
Default evasion chance is 0%. If a unit has some extra evasion chance, eg. Stealth Bombers or Guided Missiles, they will have a promotion that says Evasion (n), where n is the unit's extra evasion chance.

The evasion promotion does not actually increase evasion chances. Instead, it decreases damage taken from interceptions. Since Stealth Bombers cannot be intercepted, the evasion promotion is indeed pointless on them (the promotion does not improve air strike defense, ie. the damage a defending unit/city will inflict on the bomber, which is independent of interceptions).

Dogfight promotion gives a combat strength boost during Air Sweeps. Note that Air Sweeps already give a +25% strength boost to the sweeping unit, so Dogfight increases the effective combat strength even more.
 
Thanks again Delnar.

Default evasion chance is 0%.

So the in-game values are either zero (everything but stealth bombers) or 100% (stealth bombers). That seems like poor design!

If a unit has some extra evasion chance, eg. Stealth Bombers or Guided Missiles, they will have a promotion that says Evasion (n), where n is the unit's extra evasion chance.

I had no idea Guided missiles could be intercepted. That just makes a weak unit even weaker! I almost never bother with them. Does anything else get an evasion chance?

The evasion promotion does not actually increase evasion chances. Instead, it decreases damage taken from interceptions.

That makes sense -- but curse the developers for using “evasion” two very different ways!

Since Stealth Bombers cannot be intercepted, the evasion promotion is indeed pointless on them (the promotion does not improve air strike defense, ie. the damage a defending unit/city will inflict on the bomber, which is independent of interceptions).

Okay, I will stop wasting that promotion on Stealth Bombers!

Dogfight promotion gives a combat strength boost during Air Sweeps. Note that Air Sweeps already give a +25% strength boost to the sweeping unit, so Dogfight increases the effective combat strength even more.

None of that makes sense to me. An Air Sweep just cancels out an intercept attempt for a tile -- nothing ever takes damage (not the plane sweeping, not the AA gun being sweep). So how is a +25% strength boost applied to 0? How is the Dogfight promotion not useless?
 
Your post in this thread is literally the first time I ever read about the possibility of such a bug. Keep in mind that bombers are often used to attack cities where fighters are stationed, so you would that if such a bug existed, a lot more people would have caught on by now, especially the multiplayer community.
Combing through the code myself, I saw no bit of code that could cause a fighter to not be able to intercept on the tile where it is located.

There was a discussion years ago about it, somewhere in these forums... a few people confirmed the rarity.

Just try it yourself: build a quick scenario where you can replicate the situation and see what happens.
 
Top Bottom