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
- CustomMods::getOption(const char *, int)
- CustomMods::isBUILDINGS_PRO_RATA_PURCHASE()
- CvBuildingEntry::GetHurryCostModifier() const
- CvCity::getOwner() const
- CvCity::getProductionNeeded(BuildingTypes) const
- CvCity::GetPurchaseCostFromProduction(int)
- CvCityBuildings::GetBuildingProduction(BuildingTypes) const
- CvGlobals::getBuildingInfo(BuildingTypes)
- CvGlobals::getGOLD_PURCHASE_VISIBLE_DIVISOR()
- CvPlayer::GetPlayerPolicies() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerPolicies::GetNumericModifier(PolicyModifierType)