Modern war questions

HJKL

Chieftain
Joined
Sep 4, 2013
Messages
1
I forgot my old account details and can't access the email address, so made new account. I have had never had proper modern war before, but it's quite common in multiplayer. Few questions:

1. Defence against ranged attacks promotion gives bonus against bombers also?
2. Aircraft/nuke from carrier can be only launched if carrier hasn't moved that turn?
3. Fighter in carrier. Can it intercept, if carrier used all the moves? I read that destroyers won't intercept, if you use all it's moves.
4. Bonus for city defence from garrison. Does this depend on normal strength of unit or does ranged strength affect it also? Any formula how bonus is decided?
5. Also not war question, but how much space parts cost, if you have 3rd level Freedom policy?

Any help is appreciated :)
 
1. Yes
2. Nope, aircraft can launch from a carrier even if the carrier itself is out of moves.
3. If its set intercept then the same rules apply as above. Not sure about destroyers, i'll have to look at that.
4. Not sure, I thought it was based on normal strength.
5. Never used it.

Hope that helped.

-Dental
 
For 5), it was about 2200 gold, if I remember correctly. With commerce and Big Ben, you can knock it down to about 1400 per part, which is a LOT more reasonable.
 
(4) Not sure about the formula of garrison strength, but it seems to me to be about the combat value. And also the Health Points of the unit. A strong melee unit with only 1 HP doesn't increase city strength by much; a healthy Archer can do a better job in that case.
 
I forgot my old account details and can't access the email address, so made new account. I have had never had proper modern war before, but it's quite common in multiplayer. Few questions:

1. Defence against ranged attacks promotion gives bonus against bombers also?
2. Aircraft/nuke from carrier can be only launched if carrier hasn't moved that turn?
3. Fighter in carrier. Can it intercept, if carrier used all the moves? I read that destroyers won't intercept, if you use all it's moves.
4. Bonus for city defence from garrison. Does this depend on normal strength of unit or does ranged strength affect it also? Any formula how bonus is decided?
5. Also not war question, but how much space parts cost, if you have 3rd level Freedom policy?

Any help is appreciated :)

@OP

Others have done a good job of answering your other questions so I will just attempt to provide one for (4)

The formula for calculating GARRISON CITY STRENGTH BONUS is as follows :

BASE COMBAT STRENGTH * CURRENT HP / 3

I am fairly sure the result gets divided by 100 elsewhere in the code given that the default value is 600 for a city, which corresponds to the base city strength of 6 for non-capitals IIRC.

If this supposition is correct, the amount added is just COMBAT STRENGTH * UNIT HEALTH / 300. So a WARRIOR CS =8, with 50HP would add :

8 * 50 /300 = 4/3 = 1.333333...........

The same warrior at full strength
8*100/300 = 8/3 = 2.6666666666......

Not sure how rounding is handled by the engine.

Not sure if that's correct (someone else can confirm from ingame). Even if the exact value is off, it is clear from the code that only CS and HP matter.

So in short its COMBAT STRENGTH and HP that matter.

NOTE : The code use a different calculation for calculating RANGED CITY COMBAT STRENGTH so it is feasible that RCS comes into play for that calculation, and the game unfortunately makes finding out a cities RCS in-game almost impossible as far as I can fathom.

Here is the code from which this formula was taken :

Code:
iStrengthFromUnits = pGarrisonedUnit->GetBaseCombatStrength() * 100 * (iMaxHits - pGarrisonedUnit->getDamage()) / iMaxHits;

iStrengthValue += ((iStrengthFromUnits * 100) / /*300*/ GC.getCITY_STRENGTH_UNIT_DIVISOR());

Here is the CODE for determining the COMBAT STRENGTH of a city, for those who are interested (which is where I ripped the above code from :) ).

CODE FROM : CvCity.cpp from BNW codebase.

Code:
void CvCity::updateStrengthValue()
{
	VALIDATE_OBJECT
	// Default Strength
	int iStrengthValue = /*600*/ GC.getCITY_STRENGTH_DEFAULT();

	// Population mod
	iStrengthValue += getPopulation() * /*25*/ GC.getCITY_STRENGTH_POPULATION_CHANGE();

	// Building Defense
	int iBuildingDefense = m_pCityBuildings->GetBuildingDefense();

	iBuildingDefense *= (100 + m_pCityBuildings->GetBuildingDefenseMod());
	iBuildingDefense /= 100;

	iStrengthValue += iBuildingDefense;

	// Garrisoned Unit
	CvUnit* pGarrisonedUnit = GetGarrisonedUnit();
	int iStrengthFromUnits = 0;
	if(pGarrisonedUnit)
	{
		int iMaxHits = GC.getMAX_HIT_POINTS();
		iStrengthFromUnits = pGarrisonedUnit->GetBaseCombatStrength() * 100 * (iMaxHits - pGarrisonedUnit->getDamage()) / iMaxHits;
	}

	iStrengthValue += ((iStrengthFromUnits * 100) / /*300*/ GC.getCITY_STRENGTH_UNIT_DIVISOR());

	// Tech Progress increases City Strength
	int iTechProgress = GET_TEAM(getTeam()).GetTeamTechs()->GetNumTechsKnown() * 100 / GC.getNumTechInfos();

	// Want progress to be a value between 0 and 5
	double fTechProgress = iTechProgress / 100.0 * /*5*/ GC.getCITY_STRENGTH_TECH_BASE();
	double fTechExponent = /*2.0f*/ GC.getCITY_STRENGTH_TECH_EXPONENT();
	int iTechMultiplier = /*2*/ GC.getCITY_STRENGTH_TECH_MULTIPLIER();

	// The way all of this adds up...
	// 25% of the way through the game provides an extra 3.12
	// 50% of the way through the game provides an extra 12.50
	// 75% of the way through the game provides an extra 28.12
	// 100% of the way through the game provides an extra 50.00

	double fTechMod = pow(fTechProgress, fTechExponent);
	fTechMod *= iTechMultiplier;

	fTechMod *= 100;	// Bring it back into hundreds
	iStrengthValue += (int)(fTechMod + 0.005);	// Adding a small amount to prevent small fp accuracy differences from generating a different integer result on the Mac and PC. Assuming fTechMod is positive, round to nearest hundredth

	int iStrengthMod = 0;

	// Player-wide strength mod (Policies, etc.)
	iStrengthMod += GET_PLAYER(getOwner()).GetCityStrengthMod();

	// Apply Mod
	iStrengthValue *= (100 + iStrengthMod);
	iStrengthValue /= 100;

	m_iStrengthValue = iStrengthValue;

	// Terrain mod
	if(plot()->isHills())
	{
		m_iStrengthValue += /*3*/ GC.getCITY_STRENGTH_HILL_CHANGE();
	}

	DLLUI->setDirty(CityInfo_DIRTY_BIT, true);
}

Hope this helps :)

Sorry I don't have more time to verify the exact formula mechanics.
 
Back
Top Bottom