Bazaar developer reference

CvCityCulture::GetBaseTourismBeforeModifiers()

Defined in
CvCultureClasses.cpp, line 4436
Class
CvCityCulture
Hook name
CivHooks::CvCityCulture_GetBaseTourismBeforeModifiers

Hooks

static bool BeforeCvCityCulture_GetBaseTourismBeforeModifiers(CvCityCulture* self, int& result);static void AfterCvCityCulture_GetBaseTourismBeforeModifiers(CvCityCulture* self, int& result);static int ReplaceCvCityCulture_GetBaseTourismBeforeModifiers(int (*original)(CvCityCulture*), CvCityCulture* self);CivRegisterBefore<CivHooks::CvCityCulture_GetBaseTourismBeforeModifiers>(host, &BeforeCvCityCulture_GetBaseTourismBeforeModifiers);CivRegisterAfter<CivHooks::CvCityCulture_GetBaseTourismBeforeModifiers>(host, &AfterCvCityCulture_GetBaseTourismBeforeModifiers);CivRegisterReplace<CivHooks::CvCityCulture_GetBaseTourismBeforeModifiers>(host, &ReplaceCvCityCulture_GetBaseTourismBeforeModifiers);

Code

4435/// Compute raw tourism from this city4436int CvCityCulture::GetBaseTourismBeforeModifiers()4437{4438	// If we're in Resistance, then no Tourism!4439	if(m_pCity->IsResistance() || m_pCity->IsRazing())4440	{4441		return 0;4442	}44434444#if defined(MOD_GLOBAL_GREATWORK_YIELDTYPES)4445	// Ignore those Great Works in storage (ie not generating a yield)4446	int iBase = GetNumGreatWorks(false) * GC.getBASE_TOURISM_PER_GREAT_WORK();4447#else4448	int iBase = GetNumGreatWorks() * GC.getBASE_TOURISM_PER_GREAT_WORK();4449#endif4450	int iBonus = (m_pCity->GetCityBuildings()->GetGreatWorksTourismModifier() * iBase / 100);4451	iBase += iBonus;44524453#if defined(MOD_GLOBAL_GREATWORK_YIELDTYPES)4454	iBase += m_pCity->GetCityBuildings()->GetThemingBonuses(YIELD_CULTURE);4455#else4456	iBase += m_pCity->GetCityBuildings()->GetThemingBonuses();4457#endif44584459#if defined(MOD_API_UNIFIED_YIELDS_TOURISM)4460	// Add in all the tourism from yields4461	iBase += m_pCity->getYieldRate(YIELD_TOURISM, false);4462#endif44634464	int iPercent = m_pCity->GetCityBuildings()->GetLandmarksTourismPercent();4465	if (iPercent > 0)4466	{4467		int iFromWonders = GetCultureFromWonders();4468		int iFromNaturalWonders = GetCultureFromNaturalWonders();4469#if defined(MOD_API_UNIFIED_YIELDS)4470		int iFromImprovements = GetYieldFromImprovements(YIELD_CULTURE);4471#else4472		int iFromImprovements = GetCultureFromImprovements();4473#endif4474		iBase += ((iFromWonders + iFromNaturalWonders + iFromImprovements) * iPercent / 100);4475	}44764477	ReligionTypes eMajority = m_pCity->GetCityReligions()->GetReligiousMajority();4478	const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, m_pCity->getOwner());4479	if(pReligion)4480	{4481		int iFaithBuildingTourism = pReligion->m_Beliefs.GetFaithBuildingTourism();4482		if (iFaithBuildingTourism > 0)4483		{4484			iBase += m_pCity->GetCityBuildings()->GetNumBuildingsFromFaith() * iFaithBuildingTourism;4485		}44864487		// Buildings4488		for(int jJ = 0; jJ < GC.getNumBuildingClassInfos(); jJ++)4489		{4490			BuildingClassTypes eBuildingClass = (BuildingClassTypes)jJ;44914492			CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);4493			if(!pkBuildingClassInfo)4494			{4495				continue;4496			}44974498			CvCivilizationInfo& playerCivilizationInfo = GET_PLAYER(m_pCity->getOwner()).getCivilizationInfo();4499			BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings(eBuildingClass);45004501			if(eBuilding != NO_BUILDING)4502			{4503				if(m_pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)4504				{4505#if defined(MOD_BUGFIX_MINOR)4506					iBase += pReligion->m_Beliefs.GetBuildingClassTourism(eBuildingClass) * m_pCity->GetCityBuildings()->GetNumBuilding(eBuilding);4507#else4508					iBase += pReligion->m_Beliefs.GetBuildingClassTourism(eBuildingClass);4509#endif4510				}4511			}4512		}4513	}45144515	// Tech enhanced Tourism4516	for(int jJ = 0; jJ < GC.getNumBuildingClassInfos(); jJ++)4517	{4518		BuildingClassTypes eBuildingClass = (BuildingClassTypes)jJ;45194520		CvBuildingClassInfo* pkBuildingClassInfo = GC.getBuildingClassInfo(eBuildingClass);4521		if(!pkBuildingClassInfo)4522		{4523			continue;4524		}45254526		CvCivilizationInfo& playerCivilizationInfo = GET_PLAYER(m_pCity->getOwner()).getCivilizationInfo();4527		BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings(eBuildingClass);45284529		if(eBuilding != NO_BUILDING)4530		{4531			CvBuildingEntry *pkEntry = GC.getBuildingInfo(eBuilding);4532			if(pkEntry && m_pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)4533			{4534				int iTourism = pkEntry->GetTechEnhancedTourism();4535				if (iTourism > 0 && GET_TEAM(m_pCity->getTeam()).GetTeamTechs()->HasTech((TechTypes)pkEntry->GetEnhancedYieldTech()))4536				{4537#if defined(MOD_BUGFIX_MINOR)4538					iBase += iTourism * m_pCity->GetCityBuildings()->GetNumBuilding(eBuilding);4539#else4540					iBase += iTourism;4541#endif4542				}4543			}4544		}4545	}45464547	return iBase;4548}

Calls

Called by