Bazaar developer reference

CvCitySiteEvaluator::ComputeFlavorMultipliers(CvPlayer *)

Defined in
CvSiteEvaluationClasses.cpp, line 188
Class
CvCitySiteEvaluator
Hook name
CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers
Overridden by
CvSiteEvaluatorForStart::ComputeFlavorMultipliers(CvPlayer *)

Hooks

static bool BeforeCvCitySiteEvaluator_ComputeFlavorMultipliers(CvCitySiteEvaluator* self, CvPlayer* pPlayer);static void AfterCvCitySiteEvaluator_ComputeFlavorMultipliers(CvCitySiteEvaluator* self, CvPlayer* pPlayer);static void ReplaceCvCitySiteEvaluator_ComputeFlavorMultipliers(void (*original)(CvCitySiteEvaluator*, CvPlayer*), CvCitySiteEvaluator* self, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers>(host, &BeforeCvCitySiteEvaluator_ComputeFlavorMultipliers);CivRegisterAfter<CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers>(host, &AfterCvCitySiteEvaluator_ComputeFlavorMultipliers);CivRegisterReplace<CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers>(host, &ReplaceCvCitySiteEvaluator_ComputeFlavorMultipliers);

Code

187/// Setup flavor multipliers - call once per player before PlotFoundValue() or PlotFertilityValue()188void CvCitySiteEvaluator::ComputeFlavorMultipliers(CvPlayer* pPlayer)189{190	// Set all to 0191	for(int iI = 0; iI < NUM_YIELD_TYPES; iI++)192	{193		m_iFlavorMultiplier[iI] = 0;194	}195196	m_iFlavorMultiplier[SITE_EVALUATION_HAPPINESS] = 0;197198	// Find out if player has a desired next city specialization199	CitySpecializationTypes eNextSpecialization = pPlayer->GetCitySpecializationAI()->GetNextSpecializationDesired();200	CvCitySpecializationXMLEntry* pkCitySpecializationEntry = NULL;201	if(eNextSpecialization != NO_CITY_SPECIALIZATION)202		pkCitySpecializationEntry = GC.getCitySpecializationInfo(eNextSpecialization);203204205	for(int iFlavorLoop = 0; iFlavorLoop < GC.getNumFlavorTypes(); iFlavorLoop++)206	{207		const FlavorTypes eFlavor = static_cast<FlavorTypes>(iFlavorLoop);208		const CvString& strFlavor = GC.getFlavorTypes(eFlavor);209		if(strFlavor == "FLAVOR_GROWTH" ||210		        strFlavor == "FLAVOR_EXPANSION")211		{212			m_iFlavorMultiplier[YIELD_FOOD] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor);213			if(pkCitySpecializationEntry)214			{215				m_iFlavorMultiplier[YIELD_FOOD] += pkCitySpecializationEntry->GetFlavorValue(eFlavor);216			}217		}218		else if(strFlavor == "FLAVOR_GOLD" ||219		        strFlavor == "FLAVOR_TILE_IMPROVEMENT")220		{221			m_iFlavorMultiplier[YIELD_GOLD] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor);222			if(pkCitySpecializationEntry)223			{224				m_iFlavorMultiplier[YIELD_GOLD] += pkCitySpecializationEntry->GetFlavorValue(eFlavor);225			}226		}227		else if(strFlavor == "FLAVOR_PRODUCTION" ||228		        strFlavor == "FLAVOR_WONDER")229		{230			m_iFlavorMultiplier[YIELD_PRODUCTION] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor);231			if(pkCitySpecializationEntry)232			{233				m_iFlavorMultiplier[YIELD_PRODUCTION] += pkCitySpecializationEntry->GetFlavorValue(eFlavor);234			}235		}236		else if(strFlavor == "FLAVOR_SCIENCE")237		{238			// Doubled since only one flavor related to science239			m_iFlavorMultiplier[YIELD_SCIENCE] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor) * 2;240			if(pkCitySpecializationEntry)241			{242				m_iFlavorMultiplier[YIELD_SCIENCE] += pkCitySpecializationEntry->GetFlavorValue(eFlavor) * 2;243			}244		}245		else if(strFlavor == "FLAVOR_HAPPINESS")246		{247			// Doubled since only one flavor related to Happiness248			m_iFlavorMultiplier[SITE_EVALUATION_HAPPINESS] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor) * 2;249			if(pkCitySpecializationEntry)250			{251				m_iFlavorMultiplier[SITE_EVALUATION_HAPPINESS] += pkCitySpecializationEntry->GetFlavorValue(eFlavor) * 2;252			}253		}254		else if(strFlavor == "FLAVOR_RELIGION")255		{256			// Doubled since only one flavor related to faith257			m_iFlavorMultiplier[YIELD_FAITH] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor) * 2;258			if (pkCitySpecializationEntry)259			{260				m_iFlavorMultiplier[YIELD_FAITH] += pkCitySpecializationEntry->GetFlavorValue(eFlavor) * 2;261			}262		}263	}264265	// Make sure none are negative266	for(int iI = 0; iI < NUM_YIELD_TYPES; iI++)267	{268		if(m_iFlavorMultiplier[iI] < 0)269		{270			m_iFlavorMultiplier[iI] = 0;271		}272	}273274	// Set tradable resources and strategic value to times 10 (so multiplying this by the number of map gives a number from 1 to 100)275	m_iFlavorMultiplier[SITE_EVALUATION_RESOURCES] = 10;276	m_iFlavorMultiplier[SITE_EVALUATION_STRATEGIC] = 10;277}

Calls

Called by