Bazaar developer reference

CvPlayerPolicies::GetNextPolicyCost()

Defined in
CvPolicyClasses.cpp, line 3406
Class
CvPlayerPolicies
Hook name
CivHooks::CvPlayerPolicies_GetNextPolicyCost

Hooks

static bool BeforeCvPlayerPolicies_GetNextPolicyCost(CvPlayerPolicies* self, int& result);static void AfterCvPlayerPolicies_GetNextPolicyCost(CvPlayerPolicies* self, int& result);static int ReplaceCvPlayerPolicies_GetNextPolicyCost(int (*original)(CvPlayerPolicies*), CvPlayerPolicies* self);CivRegisterBefore<CivHooks::CvPlayerPolicies_GetNextPolicyCost>(host, &BeforeCvPlayerPolicies_GetNextPolicyCost);CivRegisterAfter<CivHooks::CvPlayerPolicies_GetNextPolicyCost>(host, &AfterCvPlayerPolicies_GetNextPolicyCost);CivRegisterReplace<CivHooks::CvPlayerPolicies_GetNextPolicyCost>(host, &ReplaceCvPlayerPolicies_GetNextPolicyCost);

Code

3405/// How much will the next policy cost?3406int CvPlayerPolicies::GetNextPolicyCost()3407{3408#if defined(MOD_BUGFIX_DUMMY_POLICIES)3409#if defined(MOD_API_EXTENSIONS)3410	int iNumPolicies = GetNumPoliciesOwned(MOD_BUGFIX_DUMMY_POLICIES, true);3411#else3412	int iNumPolicies = GetNumPoliciesOwned(MOD_BUGFIX_DUMMY_POLICIES);3413#endif3414#else3415#if defined(MOD_API_EXTENSIONS)3416	int iNumPolicies = GetNumPoliciesOwned(true);3417#else3418	int iNumPolicies = GetNumPoliciesOwned();3419#endif3420#endif34213422	// Reduce count by however many free Policies we've had in this game3423	iNumPolicies -= (m_pPlayer->GetNumFreePoliciesEver() - m_pPlayer->GetNumFreePolicies() - m_pPlayer->GetNumFreeTenets());34243425	// Each branch we unlock (after the first) costs us a buy, so add that in; JON: not any more3426	//if (GetNumPolicyBranchesUnlocked() > 0)3427	//{3428	//	iNumPolicies += (GetNumPolicyBranchesUnlocked() - 1);3429	//}34303431	int iCost = 0;3432	iCost += (iNumPolicies* /*7*/ GC.getPOLICY_COST_INCREASE_TO_BE_EXPONENTED());34333434	// Exponential cost scaling3435	iCost = (int) pow((double) iCost, (double) /*1.70*/ GC.getPOLICY_COST_EXPONENT());34363437	// Base cost that doesn't get exponent-ed3438	iCost += /*25*/ GC.getBASE_POLICY_COST();34393440	// Mod for City Count3441	int iMod = GC.getMap().getWorldInfo().GetNumCitiesPolicyCostMod();	// Default is 40, gets smaller on larger maps3442	int iPolicyModDiscount = m_pPlayer->GetNumCitiesPolicyCostDiscount();3443	if(iPolicyModDiscount != 0)3444	{3445		iMod = iMod * (100 + iPolicyModDiscount);3446		iMod /= 100;3447	}34483449	int iNumCities = m_pPlayer->GetMaxEffectiveCities();34503451	iMod = (iCost * (iNumCities - 1) * iMod);3452	iMod /= 100;3453	iCost += iMod;34543455	// Policy Cost Mod3456	iCost *= (100 + m_pPlayer->getPolicyCostModifier());3457	iCost /= 100;34583459	// Game Speed Mod3460	iCost *= GC.getGame().getGameSpeedInfo().getCulturePercent();3461	iCost /= 100;34623463	// Handicap Mod3464	iCost *= m_pPlayer->getHandicapInfo().getPolicyPercent();3465	iCost /= 100;34663467	// Make the number nice and even3468	int iDivisor = /*5*/ GC.getPOLICY_COST_VISIBLE_DIVISOR();3469	iCost /= iDivisor;3470	iCost *= iDivisor;34713472	return iCost;3473}

Calls

Called by