Bazaar developer reference

CvCity::GetPurchaseCost(BuildingTypes)

Defined in
CvCity.cpp, line 5237
Class
CvCity
Hook name
CivHooks::CvCity_GetPurchaseCost_with_BuildingTypes

Hooks

static bool BeforeCvCity_GetPurchaseCost_with_BuildingTypes(CvCity* self, BuildingTypes eBuilding, int& result);static void AfterCvCity_GetPurchaseCost_with_BuildingTypes(CvCity* self, BuildingTypes eBuilding, int& result);static int ReplaceCvCity_GetPurchaseCost_with_BuildingTypes(int (*original)(CvCity*, BuildingTypes), CvCity* self, BuildingTypes eBuilding);CivRegisterBefore<CivHooks::CvCity_GetPurchaseCost_with_BuildingTypes>(host, &BeforeCvCity_GetPurchaseCost_with_BuildingTypes);CivRegisterAfter<CivHooks::CvCity_GetPurchaseCost_with_BuildingTypes>(host, &AfterCvCity_GetPurchaseCost_with_BuildingTypes);CivRegisterReplace<CivHooks::CvCity_GetPurchaseCost_with_BuildingTypes>(host, &ReplaceCvCity_GetPurchaseCost_with_BuildingTypes);

Code

5237int CvCity::GetPurchaseCost(BuildingTypes eBuilding)5238{5239	VALIDATE_OBJECT52405241	CvBuildingEntry* pkBuildingInfo = GC.getBuildingInfo(eBuilding);5242	if(pkBuildingInfo == NULL)5243		return -1;52445245	int iModifier = pkBuildingInfo->GetHurryCostModifier();52465247	if(iModifier == -1)5248		return -1;52495250#if defined(MOD_BUILDINGS_PRO_RATA_PURCHASE)5251	int iProductionNeeded = getProductionNeeded(eBuilding);52525253	if (MOD_BUILDINGS_PRO_RATA_PURCHASE) {5254		// Deduct any current production towards this building5255		int iProductionToDate = m_pCityBuildings->GetBuildingProduction(eBuilding);5256		iProductionNeeded -= (iProductionToDate * gCustomMods.getOption("BUILDINGS_PRO_RATA_PURCHASE_DEPRECIATION", 80)) / 100;5257	}5258	5259	int iCost = GetPurchaseCostFromProduction(iProductionNeeded);5260#else5261	int iCost = GetPurchaseCostFromProduction(getProductionNeeded(eBuilding));5262#endif5263	iCost *= (100 + iModifier);5264	iCost /= 100;52655266	// Cost of purchasing buildings modified?5267	iCost *= (100 + GET_PLAYER(getOwner()).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_BUILDING_PURCHASE_COST_MODIFIER));5268	iCost /= 100;52695270	// Make the number not be funky5271	int iDivisor = /*10*/ GC.getGOLD_PURCHASE_VISIBLE_DIVISOR();5272	iCost /= iDivisor;5273	iCost *= iDivisor;52745275	return iCost;5276}

Calls

Called by