How are GP costs calculated?

Athenaeum

Prince
Joined
Mar 20, 2015
Messages
599
This assumes all DLC and expansions in case there's any difference.

I already know the different pools (GS/GE/GM , GA/GM/GW, etc). I havent paid enough attention to their costs to figure out the general rule. Ive read two different sources - one claims that they double exponentially (100, 200, 400, 800, etc) and another source saying it follows an arithmetic pattern (100,200,300,400, etc).

Can anyone confirm which source is right?

The thing is, Ive had countless games where my cities were just defecating out GP's of a certain type, and i find it hard to understand how i could get so many GP's if their cost doubles each time u get one.

Also, if its true that the cost doubles each time, then it would make Babylons UA a lot less OP. Since they essentially get 1.5x the GS points of a normal civ, and a civ would need to boost their GP points past 2x what they already have for their next GP, Babylon could earn at most one extra GS from their UA, excluding the free one they get from researching writing.
 
For standard speed the answer is 100,200,300,400, etc.

GPs from faith enter another category and don't count for the main bucket.
 
Normal Great Persons follow the simple pattern where each costs 100 points more than the one before: First is 100, second is 200, third is 300, and so forth. Notice that Engineers, Scientists and Merchants have a common limit - that is, if you trigger a Great Merchant, that will increase the cost of the next Merchant and the next Scientist and the next Engineer by 100 points. This is why it is generally considered bad to trigger a Great Merchant - not that it's not useful, but the use is generally of less value than the cost in terms of increased cost of next Scientist/Engineer. Triggering a Merchant will not, however, empty your pool for Scientist/Engineer points - it will only raise the limit for the next one.

Great Prophets follow a different pattern. The first costs 200 faith, the next 300 faith (+100 faith) and then the cost increment increases by 100 faith for each subsequent Prophet, so that it goes like:
#1 = 200 faith
#2 = 300 faith (+100)
#3 = 500 faith (+200)
#4 = 800 faith (+300)
#5 = 1200 faith (+400)
#6 = 1700 faith (+500)
etc.
 
The first GP requires
134 faith
201 faith
335 faith
~500 faith
~800 faith
All the other GPs here require more faith after the first GP that's born.
 
The first GP requires
134 faith
201 faith
335 faith
~500 faith
~800 faith
All the other GPs here require more faith after the first GP that's born.

If you're going to post about non-Standard-speed, you need to be explicit -- the default discussion speed is Standard. Your numbers are for Quick speed.
 
The other point to bear in mind is that the 'free' Great Prophets aren't always completely free. They increment the cost of the next Great Prophet. So if you build Hagia Sophia in BNW, and your faith was just below 300 (ie, to get a second Great Prophet), you would have to get to the 500 faith level to generate a 3rd Prophet via the faith-accumulated method. Constructing Hagia Sophia took the place of your second G Prophet opportunity in this example.

It's been so long since I finished the Piety tree that I can't remember whether Policy-Given Prophets also increment the counter for Faith-points needed.

And I can't remember whether Policy and Wonder-granted Generals, Artists, etc., also increment the standard Great People Points counters (and in the cases of Gens and Adms the XP counters) for those or not.
 
The other point to bear in mind is that the 'free' Great Prophets aren't always completely free. They increment the cost of the next Great Prophet. So if you build Hagia Sophia in BNW, and your faith was just below 300 (ie, to get a second Great Prophet), you would have to get to the 500 faith level to generate a 3rd Prophet via the faith-accumulated method. Constructing Hagia Sophia took the place of your second G Prophet opportunity in this example.

It's been so long since I finished the Piety tree that I can't remember whether Policy-Given Prophets also increment the counter for Faith-points needed.

And I can't remember whether Policy and Wonder-granted Generals, Artists, etc., also increment the standard Great People Points counters (and in the cases of Gens and Adms the XP counters) for those or not.
Don't hang me up on this, but from what I recall whoward saying, the rule is: If you can choose what type of great person you get from a policy, then it's not free. On the other hand, if it's locked what type it is, it's free. I know for sure that the great person you get from Liberty finisher is not free. I also seem to remember that the persons you get from Patronage finisher are not free either.
 
Great Prophets from Policies are free.

Merchants of Venice one gets from adopting Collective Rule in Liberty as Venice are free.

Any other type of Great Person (regardless of type), is not free.

Spoiler :

Reference - CvPlayer::processPolicies
Code:
for(int iUnitLoop = 0; iUnitLoop < iNumFreeUnits; iUnitLoop++)
							{
								CvUnit* pNewUnit = NULL;

								// slewis
								// for venice
								if (pUnitEntry->IsFound() && GetPlayerTraits()->IsNoAnnexing())
								{
									// drop a merchant of venice instead
									// find the eUnit replacement that's the merchant of venice
									for(int iVeniceSearch = 0; iVeniceSearch < GC.getNumUnitClassInfos(); iVeniceSearch++)
									{
										const UnitClassTypes eVeniceUnitClass = static_cast<UnitClassTypes>(iVeniceSearch);
										CvUnitClassInfo* pkVeniceUnitClassInfo = GC.getUnitClassInfo(eVeniceUnitClass);
										if(pkVeniceUnitClassInfo)
										{
											const UnitTypes eMerchantOfVeniceUnit = (UnitTypes) getCivilizationInfo().getCivilizationUnits(eVeniceUnitClass);
											if (eMerchantOfVeniceUnit != NO_UNIT)
											{
												CvUnitEntry* pVeniceUnitEntry = GC.getUnitInfo(eMerchantOfVeniceUnit);
												if (pVeniceUnitEntry->IsCanBuyCityState())
												{
													pNewUnit = initUnit(eMerchantOfVeniceUnit, iX, iY);				
													break;
												}
											}
										}
									}
								}
								else
								{
									pNewUnit = initUnit(eUnit, iX, iY);
								}

								CvAssert(pNewUnit);

								if (pNewUnit)
								{
									if(pNewUnit->IsGreatGeneral())
									{

										incrementGreatGeneralsCreated();

										pNewUnit->jumpToNearestValidPlot();
									}
									else if(pNewUnit->IsGreatAdmiral())
									{
										incrementGreatAdmiralsCreated();

										CvPlot *pSpawnPlot = GetGreatAdmiralSpawnPlot(pNewUnit);
										if (pNewUnit->plot() != pSpawnPlot)
										{
											pNewUnit->setXY(pSpawnPlot->getX(), pSpawnPlot->getY());
										}
									}
									else if(pNewUnit->getUnitInfo().IsFoundReligion())
									{
										ReligionTypes eReligion = GetReligions()->GetReligionCreatedByPlayer();
										int iReligionSpreads = pNewUnit->getUnitInfo().GetReligionSpreads();
										int iReligiousStrength = pNewUnit->getUnitInfo().GetReligiousStrength();
										if(iReligionSpreads > 0 && eReligion > RELIGION_PANTHEON)
										{
											pNewUnit->GetReligionData()->SetSpreadsLeft(iReligionSpreads);
											pNewUnit->GetReligionData()->SetReligiousStrength(iReligiousStrength);
											pNewUnit->GetReligionData()->SetReligion(eReligion);
										}
									}
									else if (pNewUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_WRITER"))
									{

										incrementGreatWritersCreated();
										if (pNewUnit->getUnitInfo().GetOneShotTourism() > 0)
										{
											pNewUnit->SetTourismBlastStrength(GetCulture()->GetTourismBlastStrength(pNewUnit->getUnitInfo().GetOneShotTourism()));
										}

										pNewUnit->jumpToNearestValidPlot();
									}		

									else if (pNewUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_ARTIST"))
									{
										incrementGreatArtistsCreated();
										pNewUnit->jumpToNearestValidPlot();
									}							
									else if (pNewUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_MUSICIAN"))
									{
										incrementGreatMusiciansCreated();
										pNewUnit->jumpToNearestValidPlot();
									}
									else if(pNewUnit->IsGreatPerson())
									{
										incrementGreatPeopleCreated();
										pNewUnit->jumpToNearestValidPlot();
									}
									else
									{
										pNewUnit->jumpToNearestValidPlot();
									}

								}
							}
 
Top Bottom